Compare commits
	
		
			3 commits
		
	
	
		
			93dc74a4cc
			...
			de93bbd271
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| de93bbd271 | |||
| de49d84788 | |||
| bed78d03c2 | 
					 10 changed files with 1049 additions and 33 deletions
				
			
		| 
						 | 
					@ -14,7 +14,6 @@ import json
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import capa.render.utils as rutils
 | 
					import capa.render.utils as rutils
 | 
				
			||||||
import capa.render.result_document as rd
 | 
					import capa.render.result_document as rd
 | 
				
			||||||
import collections
 | 
					 | 
				
			||||||
from capa.render.default import find_subrule_matches
 | 
					from capa.render.default import find_subrule_matches
 | 
				
			||||||
capa_bp = Blueprint('capa', __name__)
 | 
					capa_bp = Blueprint('capa', __name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +54,7 @@ def analyze_capa():
 | 
				
			||||||
            capability = rule.meta.name + f" ({count} matches)"
 | 
					            capability = rule.meta.name + f" ({count} matches)"
 | 
				
			||||||
        caps[capability] = rule.meta.namespace
 | 
					        caps[capability] = rule.meta.namespace
 | 
				
			||||||
        for attack in rule.meta.attack:
 | 
					        for attack in rule.meta.attack:
 | 
				
			||||||
            tactics[attack.tactic] = attack.technique + attack.subtechnique + attack.id.strip("[").strip("]")
 | 
					            tactics[attack.tactic] = attack.technique + " " + attack.subtechnique + " " + attack.id.strip("[").strip("]")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    maec_categories = {
 | 
					    maec_categories = {
 | 
				
			||||||
        "analysis_conclusion",
 | 
					        "analysis_conclusion",
 | 
				
			||||||
| 
						 | 
					@ -71,7 +70,7 @@ def analyze_capa():
 | 
				
			||||||
                maec[maec_category] = maec_value
 | 
					                maec[maec_category] = maec_value
 | 
				
			||||||
    for rule in rutils.capability_rules(doc):
 | 
					    for rule in rutils.capability_rules(doc):
 | 
				
			||||||
        for mbc in rule.meta.mbc:
 | 
					        for mbc in rule.meta.mbc:
 | 
				
			||||||
            objectives[mbc.objective] = mbc.behavior + mbc.method + mbc.id.strip("[").strip("]")
 | 
					            objectives[mbc.objective] = mbc.behavior + " " + mbc.method + " " + mbc.id.strip("[").strip("]")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return jsonify(capabilities=caps, tactics=tactics, maec=maec, objectives=objectives)
 | 
					    return jsonify(capabilities=caps, tactics=tactics, maec=maec, objectives=objectives)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										44
									
								
								server/internal/database/capa.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								server/internal/database/capa.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					package database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"log/slog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.jmbit.de/jmb/scanfile/server/internal/sqlc"
 | 
				
			||||||
 | 
						"github.com/jackc/pgx/v5/pgtype"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func InsertFileCapa(params sqlc.InsertFileCapaParams) error {
 | 
				
			||||||
 | 
						query := sqlc.New(pool)
 | 
				
			||||||
 | 
						err := query.InsertFileCapa(context.Background(), params)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Error from Query in InsertFileCapa", "file-uuid", params.FileID.String(), "error", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetFileCapa(fileID string) (CapaResult, error) {
 | 
				
			||||||
 | 
						var pgUUID pgtype.UUID
 | 
				
			||||||
 | 
						err := pgUUID.Scan(fileID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Unable to convert string to UUID", "file-uuid", fileID, "error", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var r CapaResult
 | 
				
			||||||
 | 
						var data CapaData
 | 
				
			||||||
 | 
						query := sqlc.New(pool)
 | 
				
			||||||
 | 
						rawResult, err := query.GetFileCapa(context.Background(), pgUUID)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Error from Query in GetFileCapa", "file-uuid", fileID, "error", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						r.ID = rawResult.ID
 | 
				
			||||||
 | 
						r.FileID = rawResult.FileID
 | 
				
			||||||
 | 
						err = json.Unmarshal(rawResult.Data, &data)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Error in GetFileCapa", "file-uuid", fileID, "error", err)
 | 
				
			||||||
 | 
							return r, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						r.Data = data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return r, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -111,30 +111,3 @@ func GetFileDiec(fileID pgtype.UUID) (Diec, error){
 | 
				
			||||||
	return r, nil
 | 
						return r, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func InsertFileCapa(params sqlc.InsertFileCapaParams) error {
 | 
					 | 
				
			||||||
	query := sqlc.New(pool)
 | 
					 | 
				
			||||||
	err := query.InsertFileCapa(context.Background(), params)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		slog.Error("Error from Query in InsertFileCapa", "file-uuid", params.FileID.String(), "error", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return err
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func GetFileCapa(fileID pgtype.UUID) (CapaResult, error) {
 | 
					 | 
				
			||||||
	var r CapaResult
 | 
					 | 
				
			||||||
	var data CapaData
 | 
					 | 
				
			||||||
	query := sqlc.New(pool)
 | 
					 | 
				
			||||||
	rawResult, err := query.GetFileCapa(context.Background(), fileID)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
		slog.Error("Error from Query in GetFileCapa", "file-uuid", fileID.String(), "error", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	r.ID = rawResult.ID
 | 
					 | 
				
			||||||
	r.FileID = rawResult.FileID
 | 
					 | 
				
			||||||
	err = json.Unmarshal(rawResult.Data, &data)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		slog.Error("Error in GetFileCapa", "file-uuid", fileID.String(), "error", err)
 | 
					 | 
				
			||||||
		return r, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return r, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ func RegisterRoutes() *http.ServeMux {
 | 
				
			||||||
	mux.HandleFunc("/admin", web.AdminWebHandler)
 | 
						mux.HandleFunc("/admin", web.AdminWebHandler)
 | 
				
			||||||
	mux.HandleFunc("/files/{uuid}", web.FileViewWebHandler)
 | 
						mux.HandleFunc("/files/{uuid}", web.FileViewWebHandler)
 | 
				
			||||||
	mux.HandleFunc("/files/{uuid}/msoffice", web.FileViewMSOWebHandler)
 | 
						mux.HandleFunc("/files/{uuid}/msoffice", web.FileViewMSOWebHandler)
 | 
				
			||||||
 | 
						mux.HandleFunc("/files/{uuid}/capa", web.FileViewCapaWebHandler)
 | 
				
			||||||
	mux.HandleFunc("/files/{uuid}/download", web.FileViewDownloadWebHandler)
 | 
						mux.HandleFunc("/files/{uuid}/download", web.FileViewDownloadWebHandler)
 | 
				
			||||||
	mux.HandleFunc("/files/{uuid}/delete", web.FileViewDeleteWebHandler)
 | 
						mux.HandleFunc("/files/{uuid}/delete", web.FileViewDeleteWebHandler)
 | 
				
			||||||
	mux.HandleFunc("POST /upload", web.IndexUploadHandler)
 | 
						mux.HandleFunc("POST /upload", web.IndexUploadHandler)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,9 +13,7 @@ import (
 | 
				
			||||||
func NewServer() *http.Server {
 | 
					func NewServer() *http.Server {
 | 
				
			||||||
	port := viper.GetInt("web.port")
 | 
						port := viper.GetInt("web.port")
 | 
				
			||||||
	host := viper.GetString("web.host")
 | 
						host := viper.GetString("web.host")
 | 
				
			||||||
	middlewareStack := middlewares.CreateStack()
 | 
						middlewareStack := middlewares.CreateStack(
 | 
				
			||||||
 | 
					 | 
				
			||||||
	middlewareStack = middlewares.CreateStack(
 | 
					 | 
				
			||||||
		middlewares.Logging,
 | 
							middlewares.Logging,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,23 @@ func FileViewMSOWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func FileViewCapaWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						result, err := database.GetFileCapa(r.PathValue("uuid"))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Error getting Data in FileViewCapaWebHandler", "error", err, "file-uuid", r.PathValue("uuid"))
 | 
				
			||||||
 | 
							http.Error(w, err.Error(), http.StatusBadRequest)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						slog.Debug("FileViewCapaWebHandler", "file-uuid", result.FileID.String(), "data", result.Data)
 | 
				
			||||||
 | 
						component := FileViewCapa(result.Data)
 | 
				
			||||||
 | 
						err = component.Render(r.Context(), w)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							slog.Error("Error rendering in FileViewCapaWebHandler", "error", err)
 | 
				
			||||||
 | 
							http.Error(w, err.Error(), http.StatusBadRequest)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func FileViewDeleteWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
					func FileViewDeleteWebHandler(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	fileID := r.PathValue("uuid")
 | 
						fileID := r.PathValue("uuid")
 | 
				
			||||||
	err := database.DeleteFileByID(fileID)
 | 
						err := database.DeleteFileByID(fileID)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,9 @@ templ FileView(file sqlc.File, fileProperties sqlc.FileProperty, diec database.D
 | 
				
			||||||
    if processing.TypeFromMime(file.Mimetype) == processing.TypeMSOffice {
 | 
					    if processing.TypeFromMime(file.Mimetype) == processing.TypeMSOffice {
 | 
				
			||||||
      @FileViewMsofficeLoader(file.ID.String())
 | 
					      @FileViewMsofficeLoader(file.ID.String())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if processing.TypeFromMime(file.Mimetype) == processing.TypeELF || processing.TypeFromMime(file.Mimetype) == processing.TypePE {
 | 
				
			||||||
 | 
					      @FileViewCapaLoader(file.ID.String())
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										114
									
								
								server/web/fileViewCapa.templ
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								server/web/fileViewCapa.templ
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,114 @@
 | 
				
			||||||
 | 
					package web
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/web/templui/components/skeleton"
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/internal/database"
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/web/templui/components/table"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Loads Capa data if required
 | 
				
			||||||
 | 
					templ FileViewCapaLoader(fileid string) {
 | 
				
			||||||
 | 
					    <div class="w-full" hx-get={fmt.Sprintf("/files/%s/capa", fileid)} hx-trigger="load">
 | 
				
			||||||
 | 
					      @skeleton.Skeleton(skeleton.Props{Class: "h-12 w-12 rounded-full"})
 | 
				
			||||||
 | 
					      <p> loading <a href={templ.URL(fmt.Sprintf("/files/%s/capa", fileid))}>CAPA Info</a></p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					templ FileViewCapa(data database.CapaData) {
 | 
				
			||||||
 | 
					  <div class="w-full">
 | 
				
			||||||
 | 
					  <h2 class="text-3xl">CAPAbility Analysis</h2>
 | 
				
			||||||
 | 
					  <h3 class="text-2xl">Capabilities</h3>
 | 
				
			||||||
 | 
					  @table.Table() {
 | 
				
			||||||
 | 
					    @table.Header() {
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Capability
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Namespace
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @table.Body() {
 | 
				
			||||||
 | 
					      for a, b := range data.Capabilities {
 | 
				
			||||||
 | 
					        @table.Row() {
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {a}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {b}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  <h3 class="text-2xl">MITRE ATTA&CK Tactics</h3>
 | 
				
			||||||
 | 
					  @table.Table() {
 | 
				
			||||||
 | 
					    @table.Header() {
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Tactic
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Technique
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @table.Body() {
 | 
				
			||||||
 | 
					      for a, b := range data.Tactics {
 | 
				
			||||||
 | 
					        @table.Row() {
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {a}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {b}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  <h3 class="text-2xl">MBC Objectives</h3>
 | 
				
			||||||
 | 
					  @table.Table() {
 | 
				
			||||||
 | 
					    @table.Header() {
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Objective
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Value
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @table.Body() {
 | 
				
			||||||
 | 
					      for a, b := range data.Objectives {
 | 
				
			||||||
 | 
					        @table.Row() {
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {a}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {b}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  <h3 class="text-2xl">Maec Detections</h3>
 | 
				
			||||||
 | 
					  @table.Table() {
 | 
				
			||||||
 | 
					    @table.Header() {
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Category
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      @table.Head() {
 | 
				
			||||||
 | 
					        Value
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @table.Body() {
 | 
				
			||||||
 | 
					      for a, b := range data.Maec {
 | 
				
			||||||
 | 
					        @table.Row() {
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {a}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          @table.Cell() {
 | 
				
			||||||
 | 
					            {b}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										861
									
								
								server/web/fileViewCapa_templ.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										861
									
								
								server/web/fileViewCapa_templ.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,861 @@
 | 
				
			||||||
 | 
					// Code generated by templ - DO NOT EDIT.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// templ: version: v0.3.924
 | 
				
			||||||
 | 
					package web
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//lint:file-ignore SA4006 This context is only used if a nested component is present.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "github.com/a-h/templ"
 | 
				
			||||||
 | 
					import templruntime "github.com/a-h/templ/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/web/templui/components/skeleton"
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/internal/database"
 | 
				
			||||||
 | 
					import "git.jmbit.de/jmb/scanfile/server/web/templui/components/table"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Loads Capa data if required
 | 
				
			||||||
 | 
					func FileViewCapaLoader(fileid string) templ.Component {
 | 
				
			||||||
 | 
						return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
							if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_CtxErr
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
							if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
								defer func() {
 | 
				
			||||||
 | 
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
							templ_7745c5c3_Var1 := templ.GetChildren(ctx)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Var1 == nil {
 | 
				
			||||||
 | 
								templ_7745c5c3_Var1 = templ.NopComponent
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ctx = templ.ClearChildren(ctx)
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"w-full\" hx-get=\"")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							var templ_7745c5c3_Var2 string
 | 
				
			||||||
 | 
							templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("/files/%s/capa", fileid))
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 10, Col: 69}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\" hx-trigger=\"load\">")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = skeleton.Skeleton(skeleton.Props{Class: "h-12 w-12 rounded-full"}).Render(ctx, templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<p>loading <a href=\"")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							var templ_7745c5c3_Var3 templ.SafeURL
 | 
				
			||||||
 | 
							templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(templ.URL(fmt.Sprintf("/files/%s/capa", fileid)))
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 12, Col: 75}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\">CAPA Info</a></p></div>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func FileViewCapa(data database.CapaData) templ.Component {
 | 
				
			||||||
 | 
						return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
							templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
							if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_CtxErr
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
							if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
								defer func() {
 | 
				
			||||||
 | 
									templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
							templ_7745c5c3_Var4 := templ.GetChildren(ctx)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Var4 == nil {
 | 
				
			||||||
 | 
								templ_7745c5c3_Var4 = templ.NopComponent
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ctx = templ.ClearChildren(ctx)
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<div class=\"w-full\"><h2 class=\"text-3xl\">CAPAbility Analysis</h2><h3 class=\"text-2xl\">Capabilities</h3>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Var5 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
								templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
								templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
								if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
									defer func() {
 | 
				
			||||||
 | 
										templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
								templ_7745c5c3_Var6 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									templ_7745c5c3_Var7 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "Capability")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, " ")
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "Namespace")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Header().Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, " ")
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Var9 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									for a, b := range data.Capabilities {
 | 
				
			||||||
 | 
										templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
											templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
											templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
											if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
												defer func() {
 | 
				
			||||||
 | 
													templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
													if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
														templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
											templ_7745c5c3_Var11 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var12 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(a)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 33, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var11), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " ")
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Var13 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var14 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(b)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 36, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var13), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return nil
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Body().Render(templ.WithChildren(ctx, templ_7745c5c3_Var9), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = table.Table().Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<h3 class=\"text-2xl\">MITRE ATTA&CK Tactics</h3>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Var15 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
								templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
								templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
								if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
									defer func() {
 | 
				
			||||||
 | 
										templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
								templ_7745c5c3_Var16 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									templ_7745c5c3_Var17 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "Tactic")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var17), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, " ")
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Var18 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "Technique")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var18), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Header().Render(templ.WithChildren(ctx, templ_7745c5c3_Var16), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " ")
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Var19 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									for a, b := range data.Tactics {
 | 
				
			||||||
 | 
										templ_7745c5c3_Var20 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
											templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
											templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
											if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
												defer func() {
 | 
				
			||||||
 | 
													templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
													if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
														templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
											templ_7745c5c3_Var21 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var22 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(a)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 56, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var21), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, " ")
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Var23 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var24 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(b)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 59, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var23), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return nil
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var20), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Body().Render(templ.WithChildren(ctx, templ_7745c5c3_Var19), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = table.Table().Render(templ.WithChildren(ctx, templ_7745c5c3_Var15), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<h3 class=\"text-2xl\">MBC Objectives</h3>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Var25 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
								templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
								templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
								if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
									defer func() {
 | 
				
			||||||
 | 
										templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
								templ_7745c5c3_Var26 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									templ_7745c5c3_Var27 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "Objective")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var27), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, " ")
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Var28 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "Value")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var28), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Header().Render(templ.WithChildren(ctx, templ_7745c5c3_Var26), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, " ")
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									for a, b := range data.Objectives {
 | 
				
			||||||
 | 
										templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
											templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
											templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
											if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
												defer func() {
 | 
				
			||||||
 | 
													templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
													if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
														templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
											templ_7745c5c3_Var31 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var32 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(a)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 80, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var31), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, " ")
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Var33 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var34 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(b)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 83, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var33), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return nil
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Body().Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = table.Table().Render(templ.WithChildren(ctx, templ_7745c5c3_Var25), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<h3 class=\"text-2xl\">Maec Detections</h3>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Var35 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
								templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
								templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
								if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
									defer func() {
 | 
				
			||||||
 | 
										templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
								templ_7745c5c3_Var36 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "Category")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, " ")
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									templ_7745c5c3_Var38 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
										if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
											defer func() {
 | 
				
			||||||
 | 
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}()
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "Value")
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										return nil
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = table.Head().Render(templ.WithChildren(ctx, templ_7745c5c3_Var38), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Header().Render(templ.WithChildren(ctx, templ_7745c5c3_Var36), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, " ")
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
									templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
									templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
									if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
										defer func() {
 | 
				
			||||||
 | 
											templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
												templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
									for a, b := range data.Maec {
 | 
				
			||||||
 | 
										templ_7745c5c3_Var40 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
											templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
											templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
											if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
												defer func() {
 | 
				
			||||||
 | 
													templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
													if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
														templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}()
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
											templ_7745c5c3_Var41 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var42 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(a)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 103, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var41), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, " ")
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											templ_7745c5c3_Var43 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 | 
				
			||||||
 | 
												templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 | 
				
			||||||
 | 
												templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 | 
				
			||||||
 | 
												if !templ_7745c5c3_IsBuffer {
 | 
				
			||||||
 | 
													defer func() {
 | 
				
			||||||
 | 
														templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
														if templ_7745c5c3_Err == nil {
 | 
				
			||||||
 | 
															templ_7745c5c3_Err = templ_7745c5c3_BufErr
 | 
				
			||||||
 | 
														}
 | 
				
			||||||
 | 
													}()
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												ctx = templ.InitializeContext(ctx)
 | 
				
			||||||
 | 
												var templ_7745c5c3_Var44 string
 | 
				
			||||||
 | 
												templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(b)
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `server/web/fileViewCapa.templ`, Line: 106, Col: 14}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
 | 
				
			||||||
 | 
												if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
													return templ_7745c5c3_Err
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												return nil
 | 
				
			||||||
 | 
											})
 | 
				
			||||||
 | 
											templ_7745c5c3_Err = table.Cell().Render(templ.WithChildren(ctx, templ_7745c5c3_Var43), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
											if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
												return templ_7745c5c3_Err
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return nil
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
										templ_7745c5c3_Err = table.Row().Render(templ.WithChildren(ctx, templ_7745c5c3_Var40), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
										if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
											return templ_7745c5c3_Err
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return nil
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								templ_7745c5c3_Err = table.Body().Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = table.Table().Render(templ.WithChildren(ctx, templ_7745c5c3_Var35), templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</div>")
 | 
				
			||||||
 | 
							if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
								return templ_7745c5c3_Err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ = templruntime.GeneratedTemplate
 | 
				
			||||||
| 
						 | 
					@ -88,6 +88,12 @@ func FileView(file sqlc.File, fileProperties sqlc.FileProperty, diec database.Di
 | 
				
			||||||
					return templ_7745c5c3_Err
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if processing.TypeFromMime(file.Mimetype) == processing.TypeELF || processing.TypeFromMime(file.Mimetype) == processing.TypePE {
 | 
				
			||||||
 | 
									templ_7745c5c3_Err = FileViewCapaLoader(file.ID.String()).Render(ctx, templ_7745c5c3_Buffer)
 | 
				
			||||||
 | 
									if templ_7745c5c3_Err != nil {
 | 
				
			||||||
 | 
										return templ_7745c5c3_Err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</div>")
 | 
								templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</div>")
 | 
				
			||||||
			if templ_7745c5c3_Err != nil {
 | 
								if templ_7745c5c3_Err != nil {
 | 
				
			||||||
				return templ_7745c5c3_Err
 | 
									return templ_7745c5c3_Err
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue