3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC L755DXLC55SQ764CUUXZVUJR6NLDECLPNDF7EAJXPFS6NS7CXJLAC GRVVUPQHXX2LDD427WV4FT6KINBMMHRUBOACVJUJ5AEO5ICTVKZAC 2YXO5ZGQU6YB7M3JTJA6VAGK3L25R7CJ6HBF2EV4VYKA4JORHYDQC 77VF5TC64OAL6CNIDZL7RO3UAAB4Y7CIMWBZGDKL7Z3AGI4DRGGAC PCZHB5JU5EEBUHSCO4HP4RVXWXBW2YKK4YXVGNZNMFYTETWKRS2QC UMEQXUUHFYSGKRXFQV6BOB3YGZACJHFBJ3ULSCXVRRRNV7ZUQW2AC AX5EQJO3M5Q22ITBSOSZSOLLZ4HJTLSKVFWGHNBKH7NTNGXXYCXQC JUZVPV6SRNYHJMA457OKS2COZ4NWG7EFDXDD33IBDLKFGOZDJ4NQC D3MDJONYWWNXVVZDKTPDQE2H2HGMF263LXKT57B2GYCOXNM3PPOQC AMFMXR52JXHUOWWG4VZ5DHQGLF4F7H7XSJRLX5XNEXOCCWYLDQOAC 6CZHII3QFWOCQA5ELMIPKVOQSZMEHNCWQ3KNSKDQL5DTAGFSSZVQC 5SMQ2PLKIUCWCHY2LZIKI4SRZYKKMZKWZR5QSKE6ZM22HPRH54EQC KU33KNG3I2NHT6HFDAXQAHJHOSC6VGJ2C3K6ADTIREKZQEOVVORQC ZCTGG25SELGUTOYLG72N2I2OF7YQ6B7CIBPCP5ANMDDD4FIQ3YPQC 2NGV7NYNNHIPZ3EU64KM7OXAUSY7BMNVJPVUHCFCXW7Q4FVOSVGAC UXKPFRO2FV6XU4BIFPR3OEP5NGCQZIJ4JOPW4DZKXN7OKHZUK2LQC OEKLIFZQWY7RDJGQGIBFBCUK5AJ5JYZHF7C5LLCT2W2FD3ZMYIKQC G2T4WAHINIIKTEKR4JBIRXO5IEKO7MPYD7U5PQ4AIX3WL54EPP3AC 4C7LKWH4K6KDGGJAFILOK6B5NSUND7TXEU53STGR4FNRX4QHKNIAC KJC7RKIEGIR62HPUILVCORKOFYTIAVNPHU3U2CDS36ZEQA7T7UBAC YS3AVMLCJMPAF4KQ3R7SFF5543DCZOP6NC4CRXP523TK5W6PLL2AC KWXA2SFUQOZ7UPIFUR24GSNDYJ3PR5QSPE4OJL77TB22YUSI23ZAC YFYRNNQUYHG6RUQDV3RY26ZV2HL5MRDAQO2M5QJPBZY5KIKGDUAQC L2BP7OFXVJJ7OQUBBO6KL3O2JOGNKC6H6N6CAZ4QTPBGKAA5GZ4AC 6ZHQKBZP3ZWFXEGYR3TYRQANRLVO6PBM7X5DK6Z7JMNMPY6A6Z7AC C6ENW2KXGPPYWUJT3SRGF4QA2CM4D5AHZBJH63TGSPUC4VUNN7KQC EBG4P4SYFPBR4LPHN6Q74YLBWFT33TDKF6QAHHQ77EEWP7SZCWOQC LZYXZOLKICHREHVGNCKPT4BLHUYBCFDOABGUYUWR3IXB44BLH3LAC IDT3SO3P52TCB4IWV3LYZJ5JLJACNQ26X65VXUTUD227PRE2UZUAC KQZQI2WNMXADNASI7OOMB56OOSBAARTI5ZWY52TUVHHJW6D2HMVAC NHBGHO57YPZXFHGZEMGIYU2LODNPWBAGSJEOCCVRQXEE24FVTOGQC IK2KI6KZEJCPWJDOCWWMXYCARUSMRDK73QMUTCOROUHWJ22VXDAQC WUMCRXFXFHI2QOJJDWVBG3SXSXKZOHOWRJ775DCBQWAP2ZAXSRQQC CQTN62OHT4DY35E2MJEG7GFTVNEE5KRDMV6ASBQLBHN7BUDK7WHAC EKNK5AHQNJDKGLFPEX6CQXNPVIOWX3JXEP2H5YUZ4UFWCZ3HEJLQC KBW3FDZ2PK7YCH3ICSHFWP22CWXYAXIPULP6LEN3S3K22UT4WSVQC GYPHTT4MZS75JYMQES2DZPV2D47EJW5HTQWYWDYXE7YJ6FFHPAYAC CPQQFQMZ3W7ISBF6L6WP2BWQYUZ6HQQI2VANQNRRBWT6JRIKR3KAC 5AKAE3R6RZMDWN2UMNYCB73Z2FEE5WJUCEY4YAAOHGAKHVJQPO7QC PKE6I67S7TDGKEFCKIQZOZ5PSDZXCSPOQGSKDAE5NST3NOOLRUXAC EE53ECTSDLDTGK6RHSEZHZ42FKK2IIEMXQM5ZMDTQNFWZLR4RAIQC LW755CJKCIPO7NR7D5TP5WZNGCP5UWLBMA7KJXMHJEB6XIJJGO3QC YQWH4POV22KYCCKOTZXD36QKUOWEQ2DSPYPO5DNZDZ344RI25OAAC U2BNO3C5TDLPEHTLDZ6CJ7CGZLL7RP3PV7UBUDJUQ6N6BJJ6CBFQC T4LLYESZ2HUXSLKZ6GNBLVWUVG7R5IDFHYHYO773QIZ6QTOOXR2AC KN3VYE5P2RJB3KZ355LA5C2T2D5S2IR3QZFE53AJIWUVMETEEYDAC 7C6HSXUQ6HFILY35VPZWCJOVBAL7IJ2QXOU2X5DTIFJ6FQ2RHOQAC Y2BFYLLKUGX3D6MKZXYMLPBPQFD4UGI4L3HK5ETYQBQVQCAQBIIQC HVXL2XUZTOWJPESBHBFD74B4QXNMG5SX4LOXDLPJ7732IU4SUYWQC 4N5APGRGHTKFMEJ7THSJX6TSYYAP3BUZQG73AJBKCQLXOOEHPATQC YGRLM2SKOIPP4M24VYZTRREELKICDFKXL7ZHHR54BR5HVRCDOP6AC A63IHCMXH3F4V56HDXJLJVVHKXRSJCJMT2PWXXI2IW3J734J6SGQC 4LWGZL33NOCTVZXUZZM5P6BRBHDUMEAJPVPNB52PN3UZVC7DMSZAC POPU2ATH2HHBTGHKRAV3EY2K55P664IARI3YJGLDKVJ6PQPXBQ4AC TCHEWSZLG3PX7JFBLYO5ASBYAGZU4TWUYZQGNXPHQ3J7DILQPYGAC 3EGKZC3CURTH4S36LMFCU57S42VARSHDAGA4J56RKNPD5VR4FKSQC FPK5LF53CFUEKFYJ3IYXT4UTVC6IITWJOCFATMC4PLHEUP5SIEAAC 75XUS62YF7OK4S45RCZ5OOASXEBIEDNDBYEEMOCBDHVXV4GA3NLQC BTUDUY6FY6UTRZOGLSPFNA4MVTSP7JXBD44VYF6BPKNFF6Y3CY2QC XJFHFZCA2VXGYSRDJDLAZZX3MLRH2KDT242DHWRU5XQRJ6XIHZUQC HPEG2RHVNHOPB5T4ZRXANIRBMVOVY3B5GFETJRYOTDJFVAYH2TQAC BKOIYITRBRVU4D7XFAZPV5QHAPCBMIO3SBNHYJ6TVT43WR32CTHQC MOX7XJ2E3XISXA7V7T4W6GEAGECGWBZ4PYSLTYBVVR4VAKOI33CQC ZWCTAZGLJZQNTYWTC2XQUKMILJF6JGDL5IND6QNYWK4FIGMLRFXAC SZYDW2DG5Z7BR3ICKWDXVUNSMCDSXMYZUB6FQ4W2B2FVZJD6PULQC JARRBLZDQ2JZWY7IUVPTOT7WJMBPMLFLF2MGLVGOYROAAISYGLSAC SMCOU72FKTPFNCDXFJAILVUWFE4DY33CJJE4436H5POKENFFDFFAC 777XFGVYXBMKXY562A2DZQ5YQLZJHIALIT7456TLUWS3HHCQ7E6QC J7EE2XZAB5EZICAZGZ6DKM4JDMH73A5AJIW6INYMWJHENIGVANQAC DEMSSSB22UI2ZN26C56UYO4NZWMDCRYKLAQARGOTSORSDXX3ZNNQC UMFB2767NMAG46NAG3XHMYQMCLF5TMVN46SST4AM2CFUEMNZH3WQC JXPHAZMVKLQZ6NHALF3IH4EP34ZGP7QW75OMUTAJYK4YGU3FRGOAC 3HZY24CX4U2TO74HOY4YX3LBJIYF4DLXHCIY7J2RASAC4COMSMZAC KG5AMUMGZA53FMA35K3KYOPJTNG3BKWDFWDPVXJ6XGG2GJJRI2LAC RWFCW6ZNIE24XTEQUK5Y37K42BQER7EDGSSD4GQNFTGO5V4TY72QC AFEKITYDRS6BTHHBUAELN2GSHP4VDZPVH2FVA23NF3IURVDHJY7AC 3TL5XENEDRHHYOTZUC5IUCVPCPOQJ56M25WJYBKJ5PX7772BIO3QC HFJPPMTU45LWGNLX2V3JXBP2VPK2W6PPONF4TUSQAAH7ARDAD5HAC U4TD3AIQXBJFFUORTMIC4IHZTVBORRKL2TZ2FSP4G665ECZOEMNAC DE2DNCOIEVRA6OOSOSXI2USRPOWL4SC6XPCJFOUM54BS2ESCEWOAC GNIEG2GCT6BUYHY2WXUAQVKHSYB6TVQT52O5GEY6COLKFK4ODCCQC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC QTFVCDIFHTF36AGU4UGNCTWSHQYTM2KERXS26TPAJK7IDJHL7BVAC BHJ62LYETTTVB53IGPMYJ4H2BT26AKZBGDI32DIVHBX7ZMFOXILAC HQGXL4MXGHICQ3IRRQUR6KQHS2RKVOTDKQ5ZETXHQ56DANR2YADQC KVPYKWZ76TKVZMXWKVXVS3VJANPPSDLNPMITJRO64YDZ443ZOUZAC 2BUX775ILK47LEDXNPSVUAKVLEKG54ODCXRG3474DHY5PHJJBNBQC RBNQKATLSAKTGW2IRNB5CRV3SEH5F6E4BPVWX4BII7MH5TCIPINQC KXGOUX7PH4BOXPJRYRGDS4RY7RTXYWUXCRAB5JR3BLVS62PVKOQAC AS2OXLRMJGRI64FIEM4T7EV24NZYIMPPR2EQN3SR5A2JBHVXNYXAC RJICSUYGE5RVDXYAPCOTS436V67HB222GG6GAWEATJEQAAKDU5SAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC XE6HD7BPU2TGDFSXCLBQTVBBCJBPCRP7ENRE3RWQRK5SWUMTITPQC ZE23JEJTPX3ROWLTYA6WMWFXL25OUFLTLW6V5Y376OMZTMTB7BMQC P5X4P6VKS5CJOOLJRVL66GRJLDLVC3EKAVAHP2RJOXQJ7WTYAUBQC 3Y7AFJSSMMEXQEHA6O4UXYXY3YPP7G55ZG72U2WXFMZKOZDEKGKAC KAZWI5G4DN2WUW7L2KWZR3D3QQJON4ISQYP7CRLC5HAOPIDYQGRQC LBNVQXUBEZ45SOTGVXK5UEZXIAIZTJLWZNUYFI4JZ6J65N3KPDVQC LUPEGYR76IIJFCEV6QU3VII2DNOHH3W3RHQI77LDFZU7B5QETTHQC H27UAGSXDDVC7VUIQDW75ASGKFUEEGGJXDRRRFMHDNJ2UZMGPADQC A52HEFHQNVNF2OUSWDSUYVVXLYR2UFCGOORPCN27CJJYA4UDJA3AC VVOAXWH4EKVYSDOOKDQN3FHU2JRNNKEG7G4E7YRB7HEVYXHVP63QC SJN2QPWHFYKX7CJMW4XZHI2P2THH7MECZZIHQMCH6EKBZ45G3DOAC SZYY2EQQK2JUAHMDPBASGWC2RON2GA5G6FHBLO4GAAX2XTM6QLSQC Z4KRJX4QVMQ5F233DC3XMSE5ZJYHKX3UF5QWAGHDC54EC5NUBXUQC ZI535LI6PJMKSOBJE33B3RRZ5S2JVTR3XPUDTSXJW6BZNTAHS3GQC S66BOMVUACAUDSGSDWP7ZIXVMZSQHWXOZYVTB7ILUCWZ7DDFAKVAC 5NO7NCKTMM5ZW7JYOETUFOSWK2ACTXWDZGJAFXZN6L3OF6BFTNOQC 2GK5DOU7ODF4WBSN3QTD3WIO52VTL2LOAXKGCDEMMAQPTEO4A4HAC ALIOF64IHNB3EZMOSLD5KNDZACXNN65JA6FN6YTB5R2ENSXBDMMQC IWVA2P2Y2RMX3F6AQNJ5JMK6VTAAC2YCQT25GYN5TTEXUWCBDY2QC IGZ3IFSGH2TX6DVWCRBAV4IYQAUHPEKEGDJQCLNICYR6GNIC25EQC BDSD2JLV4V4I52SE7MCZLYNDC4XU27ZNH7TYKLT7CA7YR5WRMQBAC 2JQ7WEFMU5IPCUKLGRLVVT4MYMKVHJDZVMOOOPL6K5RLEZ532LGQC MVB7RRLTOLZALMUVUNSCMXDB76QLICJAV2GYQQZO7E6S327LHMSQC NYC3LZKHWRIP2VJDCO3UVPR6TR7JURVX5NBS4H2AOOOG3ZG5G6FAC 5Y3XOQBR7E4EQZMDHSJ5UPMOTA7GPXSVF2BUKLPBRLHCU3VKT6ZAC ON4DDIBZQI34VOYOCVK5EAHYIY6M6JANW7SK4CCJWGIFYK55J2BQC CEARA7OHINXEQLCVPJ3SP5NJLGMFYXH5UEPDZ5BQ57SBJXHLQESAC OEPUOUNBNTHTFZVDXREGBQCKFRCWMVP2MDVK4OA47VK2DBKEWVYAC 3SQCOHZNX4XUQU3KW6DXP65EQ2KHYZN6LTKVSKBXPTY4J3FKU2JQC MMDLWWZ2W2XVHHOTG2S5XCPITVNIJQ6F7GLCF2MKQANFNFEID7DAC JLICHVE674VIYYLAKDWYO7RZ7YREVPDYR3DRRJ57DXR2OVHP34CQC 2R7GHSA4NUXPRWRPVXYDYWFIVVJGSUWUI2IPJGFN6ILZIAZGXGCAC ELABMHJIZYVLS4JFM36XS4YS4UP32NPFCTUWX5XOKBL6S5FIB3UQC DSM3TTSOVUOOXU2YS5KM7L5GHDU64RYYCQBIWBB4NIYFNQ2ADRWQC 45ESKY6TD5WAWG5KAYM7MSHGYAK4E24CZ7HWXRHWCKLO5HJDJ2TAC E3X3C5LKNTHXD4BZ4LISB6LR7UNBEZOHFITCGWBTZCGEDYSKORVAC TW5ZQX5ZT5EZP4ZQYB5Y53YC6VDOXC56ZDX5IFQIMO47OEGHR5ZAC Z6MDQIGODVE7RXX5U5D64EEC2ZDEZ36Z4ZMPFYIHWBG42IXUDYFQC ADP54EI4ATQO5JCOS4D52TMCAOKXIINCFV5OOA3GYSJ4JQXQEXIAC XHK7IGYISKWLHOOM3ZQAVLSRUNS2SV43TTKRX4XLPZZJ4DP3RWYAC ZLQL62FKDCESCE4WPLOMECUQ4GLIJTOAR2DALW2ON6AZEGIIN4KQC ZEEZRG2ELCFZRPLUGSFZEMT43MEMWIM7TTC7PMMGTMKQ4F2OGSFAC 22JB5HNESA5OX5ABFISGCJCO6R7GF3AUTXDHGAT3PM7IDVIBKWWAC YZUQKPNJPFTPRYN5XYF3ZZSQ3QLNJD5APXYLULHNZHCUOVMNCNAAC MPVX6MKXTP2NBSSIC77PKETMUDL5JC4PVH6QVIR5SN2AUIMSZUAQC ZTQEU5QSAJYC66QQABJLVR7EEZWEIW6UMQMSIEP2KRZH5PGEB53QC BEKA3TMM2QZ7FXCHAVKZ56EIHAS23APIKH3S72BHJ457NZ73W3EQC KLRDG3HRA2VB4RRAKIQX4VV6GWWQGTEMZTHE6KFOCZVV4CYN3T2QC G5YSUSNZCQCKYKR267EZ63E3KIW42R2YZPY2CMIJPYAHPNW3KY3QC CLJQCY2XHIDNNMFBJ5PK3GQEN6RFALEFKXBJRWZPEIKR4PR5ZQ5AC VCOSLZRPLRS3ITD2JIPKZPMTCEPHN4WEFKTE5TKH3RAZ7WJKMQ4AC TCXFZZFNJAO6UBBRHJLBXHDPCCKTXIPVFJ3YCDIBS4W7ZJTAI4NAC NW3ZYPCMDAFPCVDJ5HQ4EHGFDMI3U2Z4GCM6A6ER7NVRJVV4TCVAC NDL67SQT5CLURSU5H27MJ5COTEQNU5ZMVNAMD4V2BA3G6MQT5VSQC BHZXGT2HWAMFNVBUDG7VR5HNA2SUJBUSMWB7EHTECB4QJ5HVYANAC WRIU3S5EO3RB3IM5PUDNHLOOMUPD5UKWNUL4YMAKD3C6O4KELJCAC RSEGBU6CIEDRNTL7R6Q7RF2IZGCN3HH6VTPGFBKD77LSHEUD6EKAC E5DMQRPO5BQ6KNA3C34U5JQQ5ZAZOJE2HTWM3JUVIG42LAVHPHFQC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC T6KISLR63EHMQ4QQI3Z46PSVQITCYNZL32K3AR2LKQ3K6ESOW3QQC X5OIC5FFAUJDDVTBXUEVTLXHMT4PI2HSLO6YK7NPJLZHHRQIL3KAC 2B63JW6FYYHPV4JKU7K6RDTFH76JYUCFO23GAFZXAUHFGQTODOZQC Q4VDOA762MDHLJKNJMPLHFYRRACCT3DQXF66ZTVMETZCR52B72OQC XDDCO6CHPWGXFV3RSMMUYY45DTXJXQNYYHUT2PCYAGRODK43MD6AC GPHLV42M5EGNMSMFVZ54H3LY6QD5R4FE43565A7HJMI3V23FPDCAC G6HJY2V4CSSZF6BPIMRMRAJYRKPLTCBUFTJWZWK3BSNT235CZQ6QC QU5I5GCLSKUEKWPQBFPEHHLH3OODK6KSFHDAIDN52U45U6FNTFNAC 5IK6NYKFNY25MHV4SHACJMVGFZBRQICVSOUWNGZFAQ2GO6QUBYNAC AKAXJDMWEPMXMUY5R53AOVYAGSV42ZZ53URH7HAPUB5KZZV56TPAC 3BNEHVKOJPRYY7OAFMKTANJ7XVKNNFMYA5RZIMTPLXQTBDE27AEAC FN6V3C7MC76PKJXSOVACBTZ3XNIYEYVCSDEWCPHH34OCU66UXJEQC 7G5RWHB7MRELVG2X5VXQE2T2JROZQNUQPTUIIVOHUQIIXBZIDZOAC G4X5IUYJHZSEXAGFG5DRIJEHFBSQDQ2UTIJ4FCILIPZAUHGQ3GTQC CVWQXYKMTLQSUFPTCYR4Q47IDX7TGGYPR2UKXB3NID6YMV3GRYMQC TJPIS3UPRE4ZIPXGRO7B4KOPR7P6UDYWUKCNY6UHJQEQDXWS4XVAC FGQPXZIX7EUHGILJWL6PCQQ54OYA53E6K2HUL765GKYOMK6U23QQC 6QRHXIM3XHCDLSIIBEGETDV67V6LTV55QMHC64ZPBMLTAECM5N3QC SMTMFEKEB3YQU3X7NUA5FZ7KEW2BVTLNV2SF3SJFZ5XLU57QGYFAC D3DIBMOKXK2E65267BEEWQL4S4NSHGZBCY7YTU34JSEPZ7AKNBRQC NUIKDEHLDR4ANFZFRCWBAWZGFVMHCZ7PSMPPFVQJ3AAAAWAQQD4AC JFZNAYJXKCMXYHGCLTRH7Q6TOFGJ4BT6332GONCWVYRLNMDDG3KAC SMM4HQTPAY45254O7GQOJVLHP5LZ6BXDKGNE7IKUJHB5XKH244ZAC LL36GPHADRAVU6XM5J2QXBSG5YXXETVTIA3EAINY67W7ECMKN6IQC GPRYAAFPVGMT7TMZILMR22FFUBB436CDM5GYVQJ7GL2H6J7WFH5QC Y35C6GHH45ZUEZHHYZU4BQK3GOPJENOY2DZM3TMVUA6AMSPT2I7AC OW6XV2YSTYTBR5JO4FKCYAH44WX5UI2HUPIM6UIEQF7SPV7RLQFQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQC 5QE3TIHPUIKE54UTACN2CE2IZ6T6SNHSZNH5O7WWRCBHOTHFYO3AC PC6UOHH72AUR64GFBIXXLKGP2CLEUWCI3E3QMKNYCZHRMNCHUDVAC SGNXIOI4SO56F4YCGVMGZZO3AYXGPDL4FL75RDXAK5Y22IYWPPAQC HEZ2V5NULHSOTUWCRMMNMJGR4B4YCA4ICKYJPCDNUH2SXDQEJGTQC 6FRLEP4PY7HKDWDD7TWQ7HXILOWRMIKXHJRXXXS65Q5CXMQ5CSMQC Z2E5PAYYSHALDNMWAZKI6XGGRCNKC5VVUFC4LOCDHX2L543MLPAQC QL55ECJ6KMMBUOWQ6LKSOVN7L43CH4S6SPE2AQ3VX3KSGC32RP4AC TSJHDJVIPGH6XVFAUCFPNSFIWSY47TVPDA6GQ755M4IC3UQPX2IAC FHF6IZJQPUQHY5QWQYRPZVDBRLHREWRHGNKVQDT7F3GQKKLZXJKQC AZ4LR2GTA6XE76JTXDCZF3YPRUKTJ5FRHOHDGRWCFV5HLUZARPGQC OV7F5M3EQBESXVE3GGPXCTEBF2KZH6CUM6ZTXEF72HDSKRLUIZRAC A5V7HLIQAUFKYRKYFBGVQO6EFLEKE6NGHHD4NG5BJTTZBWE4GZBQC NREF6YOAKK2QVNXGU7WHD3KSDNCCIAQW3GQ5KOANEXFBWDPUHWXAC D6YQQQCNJT7RJ4KF5JN76NM5HT4FVROBGSNB26LYPRYVLEG576MAC DQD7JMSUAPXKASPXUDXY4LCE6QCAZSGWNQYTOKNIQE6RRSRP4KGAC KJQWSRCCQEKF64L4NYYZ7VKAF2YEPYXXTRW6BI464P6Q6KU34TQAC WZ3AEJ67LOG5L335AAC2BDLIJPIU4VSCGBMATBHDZC26ECRS5A6AC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC E6IC7YIKCWI3LIG3DK7VTACIKCMMQWCOYROXXZL5FYHUWJ7CPN4AC R5D7DZPETNNQQ644CFC3LYTR4JX3LTNXHQSTMQENND7DARWIEAJAC 3ZCEPLNOOWRHKM75FJJVQHHYIAHXAYKFF5SEKQGVSMLRAF4NOBIAC WYN733STK5DUQSWHSS6EYZK32KPZII64HLX4NS7TYUSFZ6AAFLGAC 67P45PY4GTWQXZRCMR734D5YYN2OERZM57NBB2CZXEULQT2GRFNAC GWCV3TQVFLUPBREUFRJV6ACJGQHD24NIUAVQQFURMXT3GL2SPPZAC PHX2HIVGHHKCAX6VNN2WXD4LRGSA74KQMJCCTMHK7HS6JPELVECAC BVOPAMLSAU4UTV3DUX53OYDMXP2SETAQVUKAYE2OTCVVN4RD7LLQC M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC TLZ2SPBRX274EUS73SUUCOFYQUXB76S3F4AOSJXDYXIMMS7JIHEAC 3E6IP3R3JGH76PNGG7RCADV65KOV24HQXPXNLVVYIQ46AVYJRG3AC 5SHCWE7XPQORSOLY7HGAIK2ODKBFPY4KVXRL2W7X6D4WALU544HQC RFE6T5LGBFFNEPHZOPF4UNMFC2L4CGD5TPAMOXDLRPH3TZJ43UBAC WFJ3ZPRMZ52NFPPGRJTVNLYLFFN2DYP3JHNTPVRQAEULEF7VCGGAC WHS5RMPOJIHWRANRNCI2PQQQ5FXF3OOYN7BC23EBPY5QIU74KK6AC G2ZB6464XGPBIMSZIPSB24EIXSCCGV4XWC3IWPS2CXYPDSUZSU5QC HHPQFVQMVW7BKYHUH4SCXA7UFQLZUZTMVIZW4D7AMRGALXKCODAQC B6JJCWTGOGR663EE7FKYD2E3LRQRHLZVHWPIDEFGPXPI3VPAJC4AC RBZRCTALK2SLKX6HDMBS25BRNYPK3GK364MGAVCXP3MW5CEW5TKQC JRVI4XTV4OXAVYJYJ5MQHJ5YITOUI2VAUVEL6XXO5HME54IUC5LAC EDDTVGB47XYPTKJ3P4XAQ4MZ2NFKAMK2JE6GSEMWAO4EJVGPYHPQC 7RO7CINMZYA7TMACQEERL6MIQO7LZRKHVVW7FTQIS4TMJPYYLOHAC SBKX3YH2EOCYY2IDACGOTXHJZSYSRHD5EC7FB6WGPKHLFYOF6SAAC FAIJDQKZH6SUUNCKW5RIOZ37YRAO5ACS6FX76MHRNN53LDBWO6ZQC HX4QYOYAKKFKK4KF6SZ6FQCM5ZF7ZFDTQUR4GS5WPPTYZASYZZUAC 3RL7VFKEVVQBVKLKM7ZS3M67BOGGJ3OWPARHG64AOUTZTPPYCHLQC HE3GX5IPS6XA7KLNP5WZY2YU27WQS663WSKAL5FHWBSJ5GMM633AC $filter->{project} = $project if ! $project eq "";$filter->{jobset} = $jobset if ! $jobset eq "";$filter->{job} = $job if !$job eq "";$filter->{system} = $system if !$system eq "";
$filter->{project} = $project if ! $project eq "";$filter->{jobset} = $jobset if ! $jobset eq "";$filter->{job} = $job if !$job eq "";$filter->{system} = $system if !$system eq "";
$filter->{project} = $project if ! $project eq "";$filter->{jobset} = $jobset if ! $jobset eq "";$filter->{job} = $job if !$job eq "";$filter->{system} = $system if !$system eq "";
$filter->{project} = $project if ! $project eq "";$filter->{jobset} = $jobset if ! $jobset eq "";$filter->{job} = $job if !$job eq "";$filter->{system} = $system if !$system eq "";
if !defined $p || ($input->revision || "") ne ($p->revision || "") || $input->type ne $p->type || ($input->uri || "") ne ($p->uri || "") ||
if !defined $p || ($input->revision || "") ne ($p->revision || "") || $input->type ne $p->type || ($input->uri || "") ne ($p->uri || "") ||
whereproject = activeJobs.project and jobset = activeJobs.jobsetand job = activeJobs.job and system = activeJobs.system
whereproject = activeJobs.project and jobset = activeJobs.jobsetand job = activeJobs.job and system = activeJobs.system
whereproject = activeJobs.project and jobset = activeJobs.jobsetand job = activeJobs.job and system = activeJobs.system
whereproject = activeJobs.project and jobset = activeJobs.jobsetand job = activeJobs.job and system = activeJobs.system
<table class="tablesorter table table-striped table-condensed"><thead><tr><th>Nr</th><th>What</th><th>Duration</th><th>Machine</th><th>Status</th></tr></thead><tbody>[% FOREACH step IN build.buildsteps -%][% IF ( type == "All" ) || ( type == "Failed" && step.status != 0 ) || ( type == "Running" && step.busy == 1 ) -%][% log = c.uri_for('/build' build.id 'nixlog' step.stepnr) %]<tr class="[% IF step.logfile %]clickable[% END %]"[% IF step.logfile %] onclick="window.location = '[% log %]'" [% END %]><td>[% step.stepnr %]</td><td>[% IF step.type == 0 %]Build of <tt>[% step.outpath %]</tt>[% ELSE %]Substitution of <tt>[% step.outpath %]</tt>[% END %]</td><td>[% IF step.busy == 0 %][% INCLUDE renderDuration duration = step.stoptime - step.starttime %][% ELSE %][% IF build.finished %][% INCLUDE renderDuration duration = build.stoptime - step.starttime %][% ELSE %][% INCLUDE renderDuration duration = curTime - step.starttime %][% END %][% END %]</td>
<table class="tablesorter table table-striped table-condensed"><thead><tr><th>Nr</th><th>What</th><th>Duration</th><th>Machine</th><th>Status</th></tr></thead><tbody>[% FOREACH step IN build.buildsteps -%][% IF ( type == "All" ) || ( type == "Failed" && step.status != 0 ) || ( type == "Running" && step.busy == 1 ) -%][% log = c.uri_for('/build' build.id 'nixlog' step.stepnr) %]<tr class="[% IF step.logfile %]clickable[% END %]"[% IF step.logfile %] onclick="window.location = '[% log %]'" [% END %]><td>[% step.stepnr %]</td><td>[% IF step.type == 0 %]Build of <tt>[% step.outpath %]</tt>[% ELSE %]Substitution of <tt>[% step.outpath %]</tt>[% END %]</td><td>[% IF step.busy == 0 %][% INCLUDE renderDuration duration = step.stoptime - step.starttime %][% ELSE %][% IF build.finished %][% INCLUDE renderDuration duration = build.stoptime - step.starttime %][% ELSE %][% INCLUDE renderDuration duration = curTime - step.starttime %][% END %][% END %]</td>
<td>[% IF step.busy == 1 %][% IF build.finished %]<span class="error">Aborted</span>[% ELSE %]<strong>Building</strong>[% END %][% ELSIF step.status == 0 %]Succeeded[% ELSE %]<span class="error">Failed: [% HTML.escape(step.errormsg) %]</span>[% END %][% IF step.logfile %](<a href="[% log %]">log</a>, <a href="[% "$log/raw" %]">raw</a>, <a href="[% "$log/tail-reload" %]">tail</a>)[% END %]</td></tr>[% END %][% END %]</tbody></table>
<td>[% IF step.busy == 1 %][% IF build.finished %]<span class="error">Aborted</span>[% ELSE %]<strong>Building</strong>[% END %][% ELSIF step.status == 0 %]Succeeded[% ELSE %]<span class="error">Failed: [% HTML.escape(step.errormsg) %]</span>[% END %][% IF step.logfile %](<a href="[% log %]">log</a>, <a href="[% "$log/raw" %]">raw</a>, <a href="[% "$log/tail-reload" %]">tail</a>)[% END %]</td></tr>[% END %][% END %]</tbody></table>
<ul id="tab" class="nav nav-tabs"><li><a href="#tabs-summary" data-toggle="tab">Summary</a></li><li><a href="#tabs-information" data-toggle="tab">Information</a></li><li><a href="#tabs-buildinputs" data-toggle="tab">Build inputs</a></li>[% IF relatedbuilds %]<li><a href="#tabs-relatedbuilds" data-toggle="tab">Related builds</a></li>[% END %][% IF build.buildsteps %]<li><a href="#tabs-buildsteps" data-toggle="tab">Build steps</a></li>[% END %]
<ul id="tab" class="nav nav-tabs"><li><a href="#tabs-summary" data-toggle="tab">Summary</a></li><li><a href="#tabs-information" data-toggle="tab">Information</a></li><li><a href="#tabs-buildinputs" data-toggle="tab">Build inputs</a></li>[% IF relatedbuilds %]<li><a href="#tabs-relatedbuilds" data-toggle="tab">Related builds</a></li>[% END %][% IF build.buildsteps %]<li><a href="#tabs-buildsteps" data-toggle="tab">Build steps</a></li>[% END %]
[% IF prevBuilds %]<li><a href="#tabs-history" data-toggle="tab">History chart</a></li>[% END %]</ul>
[% IF prevBuilds %]<li><a href="#tabs-history" data-toggle="tab">History chart</a></li>[% END %]</ul>
<div id="tabs-summary" class="tab-pane active">
<div id="tabs-summary" class="tab-pane active"><table class="layoutTable"><tr><td>[% INCLUDE renderBuildStatusIcon size=128, build=build %]</td><td><table class="layoutTable"><tr><th>Build ID:</th><td>[% build.id %]</td></tr>[% IF build.releasename %]<tr><th>Release name:</th><td><tt>[% HTML.escape(build.releasename) %]</tt></td></tr>[% ELSE %]<tr><th>Nix name:</th><td><tt>[% build.nixname %]</tt></td></tr>[% END %]<tr><th>Status:</th><td>[% INCLUDE renderStatus build=build %]</td></tr><tr><th>System:</th><td><tt>[% build.system %]</tt></td></tr>[% IF build.finished %]<tr><th>Duration:</th><td>[% IF build.iscachedbuild %](cached[% IF cachedBuild %] from [% INCLUDE renderFullBuildLink build=cachedBuild %][% END %])[% ELSE %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %] finished at [% INCLUDE renderDateTime timestamp = build.stoptime %][% END %]</td></tr>[% END %][% IF build.logfile %]<tr><th>Logfile:</th><td><a class="btn btn-mini btn-primary" href="[% c.uri_for('/build' build.id 'log') %]">pretty</a><a class="btn btn-mini" href="[% c.uri_for('/build' build.id 'log' 'raw') %]">raw</a><a class="btn btn-mini" href="[% c.uri_for('/build' build.id 'log' 'tail-reload') %]">tail</a></td></tr>[% END %]</table></td></tr></table>
<table class="layoutTable"><tr><td>[% INCLUDE renderBuildStatusIcon size=128, build=build %]</td><td><table class="layoutTable"><tr><th>Build ID:</th><td>[% build.id %]</td></tr>[% IF build.releasename %]<tr><th>Release name:</th><td><tt>[% HTML.escape(build.releasename) %]</tt></td></tr>[% ELSE %]<tr><th>Nix name:</th><td><tt>[% build.nixname %]</tt></td></tr>[% END %]<tr><th>Status:</th><td>[% INCLUDE renderStatus build=build %]</td></tr><tr><th>System:</th><td><tt>[% build.system %]</tt></td></tr>[% IF build.finished %]<tr><th>Duration:</th><td>[% IF build.iscachedbuild %](cached[% IF cachedBuild %] from [% INCLUDE renderFullBuildLink build=cachedBuild %][% END %])[% ELSE %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %] finished at [% INCLUDE renderDateTime timestamp = build.stoptime %][% END %]</td></tr>[% END %][% IF build.logfile %]<tr><th>Logfile:</th><td><a class="btn btn-mini btn-primary" href="[% c.uri_for('/build' build.id 'log') %]">pretty</a><a class="btn btn-mini" href="[% c.uri_for('/build' build.id 'log' 'raw') %]">raw</a><a class="btn btn-mini" href="[% c.uri_for('/build' build.id 'log' 'tail-reload') %]">tail</a></td></tr>[% END %]</table></td></tr></table>[% IF c.user_exists && available %]<form class="form-horizontal" action="[% c.uri_for('/build' build.id 'add-to-release') %]" method="post">
[% IF c.user_exists && available %]<form class="form-horizontal" action="[% c.uri_for('/build' build.id 'add-to-release') %]" method="post">
<h3>Build products</h3>[% IF !available %]<p class="error">Note: this build is no longer available.</p>[% END %][% INCLUDE renderProductList latestRoot=['/job' build.project.name build.jobset.name build.job.name 'latest'] %][% END %]
<h3>Build products</h3>[% IF !available %]<p class="error">Note: this build is no longer available.</p>[% END %][% INCLUDE renderProductList latestRoot=['/job' build.project.name build.jobset.name build.job.name 'latest'] %][% END %]
[% INCLUDE renderBuildSteps type="Failed" %][% END %]
[% INCLUDE renderBuildSteps type="Failed" %][% END %]
[% IF build.errormsg && build.buildstatus != 5 %]<h2 id="nix-error">Nix error output</h2><pre class="buildlog">[% HTML.escape(build.errormsg) -%]</pre>[% END %][% END %][% IF logtext %]<h2>Log</h2><pre class="buildlog">[% HTML.escape(logtext) -%]</pre>[% END %]</div><div id="tabs-information" class="tab-pane">
[% IF build.errormsg && build.buildstatus != 5 %]<h2 id="nix-error">Nix error output</h2>
<h2>Information</h2><table class="layoutTable"><tr><th>Build ID:</th><td>[% build.id %]</td></tr><tr><th>Status:</th><td>[% INCLUDE renderStatus build=build %]</td></tr><tr><th>Project:</th><td>[% INCLUDE renderProjectName project=project.name %]</td></tr><tr><th>Jobset:</th><td>[% INCLUDE renderJobsetName project=project.name jobset=jobset.name %]</td></tr><tr><th>Job name:</th><td>[% INCLUDE renderJobName project=project.name jobset=jobset.name job=job.name %]</td></tr>[% IF build.nixexprinput %]<tr><th>Nix expression:</th><td>file <tt>[% HTML.escape(build.nixexprpath) %]</tt> in input <tt>[% HTML.escape(build.nixexprinput) %]</tt></td></tr>[% END %]<tr><th>Nix name:</th><td><tt>[% build.nixname %]</tt></td></tr>[% IF build.releasename %]<tr><th>Release name:</th><td><tt>[% HTML.escape(build.releasename) %]</tt></td></tr>[% END %]<tr><th>Short description:</th><td>[% IF build.description %][% HTML.escape(build.description) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Long description:</th><td>[% IF build.longdescription %][% HTML.escape(build.longdescription) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>License:</th><td>[% IF build.license %][% HTML.escape(build.license) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Homepage:</th><td>[% IF build.homepage %]<a [% HTML.attributes(href => build.homepage) %]>[% HTML.escape(build.homepage) %]</a>[% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Maintainer(s):</th><td>[% IF build.maintainers %]<tt>[% HTML.escape(build.maintainers) %]</tt>[% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>System:</th><td><tt>[% build.system %]</tt></td></tr><tr><th>Max silent / timeout:</th><td>[% build.maxsilent %]s / [% build.timeout %]s</td></tr><tr><th>Derivation store path:</th><td><tt>[% build.drvpath %]</tt>[% IF drvAvailable %](<a href="[% c.uri_for('/build' build.id 'deps') %]#buildtime">build-time dependencies</a>)[% END %]</td></tr><tr><th>Output store path:</th><td><tt>[% build.outpath %]</tt>[% IF available %](<a href="[% c.uri_for('/build' build.id 'deps') %]#runtime">runtime dependencies</a>)[% END %]</td></tr>
<pre class="buildlog">[% HTML.escape(build.errormsg) -%]</pre>[% END %][% END %][% IF logtext %]<h2>Log</h2><pre class="buildlog">[% HTML.escape(logtext) -%]</pre>[% END %]</div><div id="tabs-information" class="tab-pane"><h2>Information</h2><table class="layoutTable"><tr><th>Build ID:</th><td>[% build.id %]</td></tr><tr><th>Status:</th><td>[% INCLUDE renderStatus build=build %]</td></tr><tr><th>Project:</th><td>[% INCLUDE renderProjectName project=project.name %]</td></tr><tr><th>Jobset:</th><td>[% INCLUDE renderJobsetName project=project.name jobset=jobset.name %]</td></tr><tr><th>Job name:</th><td>[% INCLUDE renderJobName project=project.name jobset=jobset.name job=job.name %]</td></tr>[% IF build.nixexprinput %]<tr><th>Nix expression:</th><td>file <tt>[% HTML.escape(build.nixexprpath) %]</tt> in input <tt>[% HTML.escape(build.nixexprinput) %]</tt></td></tr>[% END %]<tr><th>Nix name:</th><td><tt>[% build.nixname %]</tt></td></tr>[% IF build.releasename %]<tr><th>Release name:</th><td><tt>[% HTML.escape(build.releasename) %]</tt></td></tr>[% END %]<tr><th>Short description:</th><td>[% IF build.description %][% HTML.escape(build.description) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Long description:</th><td>[% IF build.longdescription %][% HTML.escape(build.longdescription) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>License:</th><td>[% IF build.license %][% HTML.escape(build.license) %][% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Homepage:</th><td>[% IF build.homepage %]<a [% HTML.attributes(href => build.homepage) %]>[% HTML.escape(build.homepage) %]</a>[% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>Maintainer(s):</th><td>[% IF build.maintainers %]<tt>[% HTML.escape(build.maintainers) %]</tt>[% ELSE %]<em>(not given)</em>[% END %]</td></tr><tr><th>System:</th><td><tt>[% build.system %]</tt></td></tr><tr><th>Max silent / timeout:</th><td>[% build.maxsilent %]s / [% build.timeout %]s</td></tr><tr><th>Derivation store path:</th><td><tt>[% build.drvpath %]</tt>[% IF drvAvailable %](<a href="[% c.uri_for('/build' build.id 'deps') %]#buildtime">build-time dependencies</a>)[% END %]</td></tr><tr><th>Output store path:</th><td><tt>[% build.outpath %]</tt>[% IF available %](<a href="[% c.uri_for('/build' build.id 'deps') %]#runtime">runtime dependencies</a>)[% END %]</td></tr>
<tr><th>Output store path hash:</th><td><tt>[% pathHash %]</tt></td></tr>
<tr><th>Output store path hash:</th><td><tt>[% pathHash %]</tt></td></tr>[% END %]<tr><th>Time added:</th><td>[% INCLUDE renderDateTime timestamp = build.timestamp %]</td></tr>[% IF build.finished && build.buildstatus != 4 %][% IF build.iscachedbuild && cachedBuild %]<tr><th>Cached build:</th><td>[% INCLUDE renderFullBuildLink build=cachedBuild %]</td></tr>[% END %]<tr><th>Build started:</th><td>[% IF build.starttime %][% INCLUDE renderDateTime timestamp = build.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Build finished:</th><td>[% IF build.stoptime %][% INCLUDE renderDateTime timestamp = build.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Duration:</th><td>[% IF build.iscachedbuild %]<em>(cached build)</em>[% ELSE %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %][% END %]</td></tr>[% IF build.logfile %]<tr><th>Logfile:</th><td><a href="[% c.uri_for('/build' build.id 'log') %]"><strong>Available</strong></a>(<a href="[% c.uri_for('/build' build.id 'log' 'raw') %]">raw</a>,<a href="[% c.uri_for('/build' build.id 'log' 'tail-reload') %]">tail</a>)</td></tr>[% END %][% END %][% IF !build.finished %]<tr><th>Priority:</th><td>[% build.priority %]</td></tr>[% END %][% IF build.finished && build.buildproducts %]<tr><th>Availability:</th><td>[% IF !available %]<em>Build output is no longer available</em>[% ELSIF build.keep %]<em>Build output will be kept permanently</em>[% ELSE %]<em>Build output is available, but may be garbage-collected</em>[% END %]</td></tr>
<tr><th>Time added:</th><td>[% INCLUDE renderDateTime timestamp = build.timestamp %]</td></tr>[% IF build.finished && build.buildstatus != 4 %][% IF build.iscachedbuild && cachedBuild %]<tr><th>Cached build:</th><td>[% INCLUDE renderFullBuildLink build=cachedBuild %]</td></tr>[% END %]<tr><th>Build started:</th><td>[% IF build.starttime %][% INCLUDE renderDateTime timestamp = build.starttime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Build finished:</th><td>[% IF build.stoptime %][% INCLUDE renderDateTime timestamp = build.stoptime %][% ELSE %]<em>(cached build)</em>[% END %]</td></tr><tr><th>Duration:</th><td>[% IF build.iscachedbuild %]<em>(cached build)</em>[% ELSE %][% INCLUDE renderDuration duration = build.stoptime - build.starttime %][% END %]</td></tr>[% IF build.logfile %]<tr><th>Logfile:</th><td><a href="[% c.uri_for('/build' build.id 'log') %]"><strong>Available</strong></a>(<a href="[% c.uri_for('/build' build.id 'log' 'raw') %]">raw</a>,<a href="[% c.uri_for('/build' build.id 'log' 'tail-reload') %]">tail</a>)</td></tr>[% END %][% END %][% IF !build.finished %]<tr><th>Priority:</th><td>[% build.priority %]</td></tr>[% END %][% IF build.finished && build.buildproducts %]<tr><th>Availability:</th><td>[% IF !available %]<em>Build output is no longer available</em>[% ELSIF build.keep %]<em>Build output will be kept permanently</em>[% ELSE %]<em>Build output is available, but may be garbage-collected</em>[% END %]</td></tr>[% END %]</table></div><div id="tabs-buildinputs" class="tab-pane"><h2>Build inputs</h2><table class="tablesorter table table-striped table-condensed"><thead><tr><th>Name</th><th>Type</th><th>Value</th><th>Revision</th><th>Store path</th></tr></thead><tbody>[% FOREACH input IN build.inputs -%]<tr><td><tt>[% input.name %]</tt></td><td><tt>[% type = input.type; inputTypes.$type %]</tt></td><td>[% IF input.type == "build" || input.type == "sysbuild" %][% INCLUDE renderFullBuildLink build=input.dependency %]</a>[% ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %]</tt>[% END %]</td><td>[% IF input.revision %][% input.revision %][% END %]</td><td><tt>[% input.path %]</tt></td></tr>[% END -%]</tbody></table>
</table></div><div id="tabs-buildinputs" class="tab-pane"><h2>Build inputs</h2><table class="tablesorter table table-striped table-condensed"><thead><tr><th>Name</th><th>Type</th><th>Value</th><th>Revision</th><th>Store path</th></tr></thead><tbody>[% FOREACH input IN build.inputs -%]<tr><td><tt>[% input.name %]</tt></td><td><tt>[% type = input.type; inputTypes.$type %]</tt></td><td>[% IF input.type == "build" || input.type == "sysbuild" %][% INCLUDE renderFullBuildLink build=input.dependency %]</a>[% ELSIF input.type == "string" || input.type == "boolean" %]<tt>"[% input.value %]"</tt>[% ELSE %]<tt>[% input.uri %]</tt>[% END %]</td><td>[% IF input.revision %][% input.revision %][% END %]</td><td><tt>[% input.path %]</tt></td></tr>[% END -%]</tbody></table>
<div id="tabs-relatedbuilds" class="tab-pane"><h2>Related builds</h2><p>The following builds are part of the same jobset evaluation that produced this build.</p>[% INCLUDE renderBuildList builds=relatedbuilds hideProjectName=1 hideJobsetName=1 %]</div>
<div id="tabs-relatedbuilds" class="tab-pane"><h2>Related builds</h2><p>The following builds are part of the same jobset evaluation that produced this build.</p>[% INCLUDE renderBuildList builds=relatedbuilds hideProjectName=1 hideJobsetName=1 %]</div>
<h2>Used by</h2><p>The following builds have used this build as an input:</p><table class="tablesorter table table-condensed table-striped"><thead><tr><th>Build</th><th>Input name</th><th>System</th><th>Timestamp</th></tr></thead><tbody>[% FOREACH input IN build.dependents -%]<tr><td>[% INCLUDE renderFullBuildLink build=input.build %]</td><td><tt>[% input.name %]</tt></td><td><tt>[% input.build.system %]</tt></td><td>[% INCLUDE renderDateTime timestamp = input.build.timestamp %]</td></tr>[% END -%]</tbody></table>
<h2>Used by</h2><p>The following builds have used this build as an input:</p><table class="tablesorter table table-condensed table-striped"><thead><tr><th>Build</th><th>Input name</th><th>System</th><th>Timestamp</th></tr></thead><tbody>[% FOREACH input IN build.dependents -%]<tr><td>[% INCLUDE renderFullBuildLink build=input.build %]</td><td><tt>[% input.name %]</tt></td><td><tt>[% input.build.system %]</tt></td><td>[% INCLUDE renderDateTime timestamp = input.build.timestamp %]</td></tr>[% END -%]</tbody></table>
<div id="placeholder" style="width:800px;height:400px;"></div><div id="overview" style="margin-left:50px;margin-top:20px;width:600px;height:50px"></div>
<div id="placeholder" style="width:800px;height:400px;"></div><div id="overview" style="margin-left:50px;margin-top:20px;width:600px;height:50px"></div>
<div id="placeholder-size" style="width:800px;height:400px;"></div><div id="overview-size" style="margin-left:50px;margin-top:20px;width:600px;height:50px"></div>
<div id="placeholder-size" style="width:800px;height:400px;"></div><div id="overview-size" style="margin-left:50px;margin-top:20px;width:600px;height:50px"></div>
[%- IF e.diff > 0 -%]<span class='label label-success'><strong>+[% e.diff %]</strong></span>[%- ELSIF e.diff < 0 && e.nrScheduled == 0 -%]<span class='label label-important'><strong>[% e.diff %]</strong></span>[%- END -%]
[%- IF e.diff > 0 -%]<span class='label label-success'><strong>+[% e.diff %]</strong></span>[%- ELSIF e.diff < 0 && e.nrScheduled == 0 -%]<span class='label label-important'><strong>[% e.diff %]</strong></span>[%- END -%]
<ul id="tab" class="nav nav-tabs"><li><a href="#tabs-status" data-toggle="tab">Status</a></li><li><a href="#tabs-channels" data-toggle="tab">Channels</a></li><li><a href="#tabs-latestbuilds" data-toggle="tab">Latest builds</a></li></ul>
<ul id="tab" class="nav nav-tabs"><li><a href="#tabs-status" data-toggle="tab">Status</a></li><li><a href="#tabs-channels" data-toggle="tab">Channels</a></li><li><a href="#tabs-latestbuilds" data-toggle="tab">Latest builds</a></li></ul>
<h2>Latest builds (latest evaluation)</h2>[% INCLUDE renderBuildList builds=currentBuilds showStatusChange=0 %]
<h2>Latest builds (latest evaluation)</h2>[% INCLUDE renderBuildList builds=currentBuilds showStatusChange=0 %]
<h2>Last 10 builds</h2>[% INCLUDE renderBuildList builds=lastBuilds showStatusChange=0 %][% END %]</div><div id="tabs-channels" class="tab-pane"><p>This job provides the following Nix channel:</p><ul><li><a href="[% c.uri_for('/job' project.name jobset.name job.name'channel' 'latest') %]"><tt>latest</tt></a> — contains the latestsuccessful build for each platform.</li></ul></div><div id="tabs-latestbuilds" class="tab-pane"><ul><li><a href="[% c.uri_for('/job' project.name jobset.name job.name'latest') %]">Latest successful build.</a></li>[% FOREACH system IN systems %]<li><a href="[% c.uri_for('/job' project.name jobset.name job.name'latest-for' system.system) %]">Latest successful build for <tt>[%system.system %]</tt>.</a></li>[% END %]</ul></div>
<h2>Last 10 builds</h2>[% INCLUDE renderBuildList builds=lastBuilds showStatusChange=0 %][% END %]</div><div id="tabs-channels" class="tab-pane"><p>This job provides the following Nix channel:</p><ul><li><a href="[% c.uri_for('/job' project.name jobset.name job.name'channel' 'latest') %]"><tt>latest</tt></a> — contains the latestsuccessful build for each platform.</li></ul></div><div id="tabs-latestbuilds" class="tab-pane"><ul><li><a href="[% c.uri_for('/job' project.name jobset.name job.name'latest') %]">Latest successful build.</a></li>[% FOREACH system IN systems %]<li><a href="[% c.uri_for('/job' project.name jobset.name job.name'latest-for' system.system) %]">Latest successful build for <tt>[%system.system %]</tt>.</a></li>[% END %]</ul></div>
<h3>Inputs</h3><table class="tablesorter table table-striped table-condensed"><thead><tr><th>Input name</th><th>Type</th><th>Values</th></tr></thead><tbody class="inputs">[% FOREACH input IN jobset.jobsetinputs -%][% INCLUDE renderInput input=input baseName="input-$input.name" %][% END %][% IF edit %]<tr><td colspan="3" style="text-align: center;"><button type="button" class="add-input btn btn-success"><i class="icon-plus icon-white"></i> Add a new input</button></td></tr>[% END %]</tbody></table>
<h3>Inputs</h3><table class="tablesorter table table-striped table-condensed"><thead><tr><th>Input name</th><th>Type</th><th>Values</th></tr></thead><tbody class="inputs">[% FOREACH input IN jobset.jobsetinputs -%][% INCLUDE renderInput input=input baseName="input-$input.name" %][% END %][% IF edit %]<tr><td colspan="3" style="text-align: center;"><button type="button" class="add-input btn btn-success"><i class="icon-plus icon-white"></i> Add a new input</button></td></tr>[% END %]</tbody></table>
<ul id="tab" class="nav nav-tabs">[% IF !edit -%]<li><a href="#tabs-information" data-toggle="tab">Jobset</a></li>[% IF jobset.errormsg -%]<li><a href="#tabs-errors" data-toggle="tab"><img src="/static/images/error_16.png" /> Evaluation errors</a></li>[% END %]<li><a href="#tabs-jobs" data-toggle="tab">Jobs ([% activeJobs.size %])</a></li>[% END %]<li><a href="#tabs-setup" data-toggle="tab">Setup</a></li></ul>
<ul id="tab" class="nav nav-tabs">[% IF !edit -%]<li><a href="#tabs-information" data-toggle="tab">Jobset</a></li>[% IF jobset.errormsg -%]<li><a href="#tabs-errors" data-toggle="tab"><img src="/static/images/error_16.png" /> Evaluation errors</a></li>[% END %]<li><a href="#tabs-jobs" data-toggle="tab">Jobs ([% activeJobs.size %])</a></li>[% END %]<li><a href="#tabs-setup" data-toggle="tab">Setup</a></li></ul>
[% IF !edit && activeJobsStatus -%]<h2>Status</h2><table class="table table-striped table-condensed"><thead><tr><th>Job</th>[% FOREACH s IN systems %]<th>[% s.system %]</th>[% END %]</tr></thead><tbody>
[% IF !edit && activeJobsStatus -%]<h2>Status</h2><table class="table table-striped table-condensed"><thead><tr><th>Job</th>[% FOREACH s IN systems %]<th>[% s.system %]</th>[% END %]</tr></thead><tbody>
[% FOREACH j IN activeJobsStatus %]<tr class="[% IF odd %] odd [% END; odd = !odd -%]"><td>[% INCLUDE renderJobName project=project.name jobset = jobset.name job = j.get_column('job') %]</td>[% FOREACH s IN systems %]
[% FOREACH j IN activeJobsStatus %]<tr class="[% IF odd %] odd [% END; odd = !odd -%]"><td>[% INCLUDE renderJobName project=project.name jobset = jobset.name job = j.get_column('job') %]</td>[% FOREACH s IN systems %]
<td class="centered">[% IF systemStatus != undef %]<a href="[% c.uri_for('/build' j.get_column(system _ '-build') ) %]">
<td class="centered">[% IF systemStatus != undef %]<a href="[% c.uri_for('/build' j.get_column(system _ '-build') ) %]">
</a>[% END %]</td>[% END %]</tr>[% END %]</tbody></table>[% END %][% IF !edit && !activeJobsStatus -%]<h2>Status</h2><p>[ <a href="[% c.uri_for('/jobset' project.name jobset.name 'with-status' ) %]">Show status overview</a> ]</p>[% END %]
</a>[% END %]</td>[% END %]</tr>[% END %]</tbody></table>[% END %][% IF !edit && !activeJobsStatus -%]<h2>Status</h2><p>[ <a href="[% c.uri_for('/jobset' project.name jobset.name 'with-status' ) %]">Show status overview</a> ]</p>[% END %]
</div>[% IF !edit -%][% IF jobset.errormsg -%]<div id="tabs-errors" class="tab-pane"><h2>Evaluation errors</h2>
</div>[% IF !edit -%][% IF jobset.errormsg -%]<div id="tabs-errors" class="tab-pane"><h2>Evaluation errors</h2>
<pre class="multiLineMsg error">[% HTML.escape(jobset.errormsg) %]</pre></div>[% END %][% END %]<div id="tabs-setup" class="tab-pane [% IF edit %]active[% END %]"><h2>Information</h2><table class="layoutTable">[% IF edit %]<tr><th>Identifier:</th><td>[% INCLUDE maybeEditString param="name" value=jobset.name %]</td></tr>[% END %]<tr><th>Description:</th><td>[% INCLUDE maybeEditString param="description" value=jobset.description %]</td></tr><tr><th>Nix expression:</th><td><tt>[% INCLUDE maybeEditString param="nixexprpath" value=jobset.nixexprpath extraClass="shortString" %]</tt> in input<tt>[% INCLUDE maybeEditString param="nixexprinput" value=jobset.nixexprinput extraClass="shortString" %]</tt></td></tr><tr><th>Enabled:</th><td>[% INCLUDE renderSelection param="enabled" curValue=jobset.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr><tr><th>Enable email notification:</th><td>[% INCLUDE renderSelection param="enableemail" curValue=jobset.enableemail radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr>
<pre class="multiLineMsg error">[% HTML.escape(jobset.errormsg) %]</pre></div>[% END %][% END %]<div id="tabs-setup" class="tab-pane [% IF edit %]active[% END %]"><h2>Information</h2><table class="layoutTable">[% IF edit %]<tr><th>Identifier:</th><td>[% INCLUDE maybeEditString param="name" value=jobset.name %]</td></tr>[% END %]<tr><th>Description:</th><td>[% INCLUDE maybeEditString param="description" value=jobset.description %]</td></tr><tr><th>Nix expression:</th><td><tt>[% INCLUDE maybeEditString param="nixexprpath" value=jobset.nixexprpath extraClass="shortString" %]</tt> in input<tt>[% INCLUDE maybeEditString param="nixexprinput" value=jobset.nixexprinput extraClass="shortString" %]</tt></td></tr><tr><th>Enabled:</th><td>[% INCLUDE renderSelection param="enabled" curValue=jobset.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr><tr><th>Enable email notification:</th><td>[% INCLUDE renderSelection param="enableemail" curValue=jobset.enableemail radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr>
[% IF !edit %]<tr><th>Last checked:</th><td>[% IF jobset.lastcheckedtime %][% INCLUDE renderDateTime timestamp = jobset.lastcheckedtime -%][% IF jobset.errormsg -%]<em>, with errors!</em>[% ELSE %], <em>no errors</em>[% END %][% ELSE %]<em>never</em>[% END %]</td></tr>[% END %]</table>
[% IF !edit %]<tr><th>Last checked:</th><td>[% IF jobset.lastcheckedtime %][% INCLUDE renderDateTime timestamp = jobset.lastcheckedtime -%][% IF jobset.errormsg -%]<em>, with errors!</em>[% ELSE %], <em>no errors</em>[% END %][% ELSE %]<em>never</em>[% END %]</td></tr>[% END %]</table>
[% INCLUDE renderInputs %]</div>[% IF !edit -%]<div id="tabs-jobs" class="tab-pane"><h2>Jobs</h2><p>This jobset currently contains the following [% activeJobs.size %] jobs:<blockquote>[% IF activeJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN activeJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %] [% END %]</blockquote></p>
<p>This jobset used to contain the following [% inactiveJobs.size %] jobs:<blockquote>[% IF inactiveJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN inactiveJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %] [% END %]</blockquote></p></div>[% END %]
[% INCLUDE renderInputs %]</div>[% IF !edit -%]<div id="tabs-jobs" class="tab-pane"><h2>Jobs</h2><p>This jobset currently contains the following [% activeJobs.size %] jobs:<blockquote>[% IF activeJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN activeJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %] [% END %]</blockquote></p><p>This jobset used to contain the following [% inactiveJobs.size %] jobs:<blockquote>[% IF inactiveJobs.size == 0 %]<em>(none)</em>[% END %][% FOREACH j IN inactiveJobs %] [% INCLUDE renderJobName project=project.name jobset=jobset.name job=j %] [% END %]</blockquote></p>
<ul id="tab" class="nav nav-tabs">[% IF !edit %]<li><a href="#tabs-project" data-toggle="tab">Project</a></li>[% END %]<li><a href="#tabs-settings" data-toggle="tab">Settings</a></li>[% IF !edit %]<li><a href="#tabs-views" data-toggle="tab">Views</a></li>[% END %]</ul>
<ul id="tab" class="nav nav-tabs">[% IF !edit %]<li><a href="#tabs-project" data-toggle="tab">Project</a></li>[% END %]<li><a href="#tabs-settings" data-toggle="tab">Settings</a></li>[% IF !edit %]<li><a href="#tabs-views" data-toggle="tab">Views</a></li>[% END %]</ul>
[% IF !edit %]<div id="tabs-project" class="tab-pane active"><h2>Jobsets</h2>[% IF project.jobsets.size > 0 %]<p>This project has the following jobsets:</p><table class="tablesorter table table-striped table-condensed"><thead><tr>
[% IF !edit %]<div id="tabs-project" class="tab-pane active"><h2>Jobsets</h2>[% IF project.jobsets.size > 0 %]<p>This project has the following jobsets:</p><table class="tablesorter table table-striped table-condensed"><thead><tr>
<tr class="clickable [% IF odd %] odd [% END; odd = !odd %]"onclick="window.location = '[% c.uri_for('/jobset' project.name j.name) %]'">
<tr class="clickable [% IF odd %] odd [% END; odd = !odd %]"onclick="window.location = '[% c.uri_for('/jobset' project.name j.name) %]'">
<td>[% INCLUDE renderJobsetName project = project.name jobset = j.name %]</td><td>[% HTML.escape(j.description) %]</td>
<td>[% INCLUDE renderJobsetName project = project.name jobset = j.name %]</td><td>[% HTML.escape(j.description) %]</td>
</tr>[% END %]</tbody></table>[% ELSE %]<p>No jobsets have been defined yet.</p>[% END %]</div>[% END %]<div id="tabs-settings" class="tab-pane [% IF edit %]active[% END %]">[% IF edit %]<form action="[% IF create %][% c.uri_for('/create-project/submit') %][% ELSE %][% c.uri_for('/project' project.name 'submit') %][% END %]" method="post">[% END %]<h2>Information</h2><table class="layoutTable">[% IF edit %]<tr><th>Identifier:</th><td><tt>[% INCLUDE maybeEditString param="name" value=project.name %]</tt></td></tr>[% END %]<tr><th>Display name:</th><td>[% INCLUDE maybeEditString param="displayname" value=project.displayname %]</td></tr><tr><th>Description:</th><td>[% INCLUDE maybeEditString param="description" value=project.description %]</td></tr><tr><th>Homepage:</th><td>[% IF edit %][% INCLUDE maybeEditString param="homepage" value=project.homepage %][% ELSE %][% IF project.homepage %]<a [% HTML.attributes(href => project.homepage) %]>[% HTML.escape(project.homepage) %]</a>[% ELSE %]<em>(not specified)</em>[% END %][% END %]</td></tr><tr><th>Owner:</th><td><tt>[% INCLUDE maybeEditString param="owner" value=(project.owner.username || c.user.username) edit=(edit && c.check_user_roles('admin')) %]</tt></td></tr><tr><th>Enabled:</th><td>[% INCLUDE renderSelection param="enabled" curValue=project.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr></table>[% IF edit %]<p>
</tr>[% END %]</tbody></table>[% ELSE %]<p>No jobsets have been defined yet.</p>[% END %]</div>[% END %]<div id="tabs-settings" class="tab-pane [% IF edit %]active[% END %]">[% IF edit %]<form action="[% IF create %][% c.uri_for('/create-project/submit') %][% ELSE %][% c.uri_for('/project' project.name 'submit') %][% END %]" method="post">[% END %]<h2>Information</h2><table class="layoutTable">[% IF edit %]<tr><th>Identifier:</th><td><tt>[% INCLUDE maybeEditString param="name" value=project.name %]</tt></td></tr>[% END %]<tr><th>Display name:</th><td>[% INCLUDE maybeEditString param="displayname" value=project.displayname %]</td></tr><tr><th>Description:</th><td>[% INCLUDE maybeEditString param="description" value=project.description %]</td></tr><tr><th>Homepage:</th><td>[% IF edit %][% INCLUDE maybeEditString param="homepage" value=project.homepage %][% ELSE %][% IF project.homepage %]<a [% HTML.attributes(href => project.homepage) %]>[% HTML.escape(project.homepage) %]</a>[% ELSE %]<em>(not specified)</em>[% END %][% END %]</td></tr><tr><th>Owner:</th><td><tt>[% INCLUDE maybeEditString param="owner" value=(project.owner.username || c.user.username) edit=(edit && c.check_user_roles('admin')) %]</tt></td></tr><tr><th>Enabled:</th><td>[% INCLUDE renderSelection param="enabled" curValue=project.enabled radiobuttons=1 options={"1" = "Yes", "0" = "No"} %]</td></tr></table>[% IF edit %]<p>
<script type="text/javascript">$("#delete-project").click(function() {return confirm("Are you sure you want to delete this project?");});</script>
<script type="text/javascript">$("#delete-project").click(function() {return confirm("Are you sure you want to delete this project?");});</script>
[% IF !edit %]<div id="tabs-views" class="tab-pane"><h2>Views</h2>[% IF views.size > 0 %]<p>Project <tt>[% project.name %]</tt> has the following views:</p><ul>[% FOREACH view IN views %]<li><a href="[% c.uri_for('/view' project.name view.name) %]"><tt>[% view.name %]</tt></a>
</div>[% IF !edit %]<div id="tabs-views" class="tab-pane"><h2>Views</h2>[% IF views.size > 0 %]<p>Project <tt>[% project.name %]</tt> has the following views:</p><ul>[% FOREACH view IN views %]<li><a href="[% c.uri_for('/view' project.name view.name) %]"><tt>[% view.name %]</tt></a>
</li>[% END %]</ul>[% ELSE %]<p>Project <tt>[% project.name %]</tt> has no views.</p>[% END %]<p><a class="btn" href="[% c.uri_for('/project' project.name 'create-view') %]">
</li>[% END %]</ul>[% ELSE %]<p>Project <tt>[% project.name %]</tt> has no views.</p>[% END %]<p><a class="btn" href="[% c.uri_for('/project' project.name 'create-view') %]">
[% INCLUDE maybeLinkuri = c.uri_for(c.controller('Admin').action_for('clearfailedcache'))content = "Clear failed builds cache"
[% INCLUDE maybeLinkuri = c.uri_for(c.controller('Admin').action_for('clearfailedcache'))content = "Clear failed builds cache"