forked from skx/webmail
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstatic.go
More file actions
112 lines (97 loc) · 22.8 KB
/
Copy pathstatic.go
File metadata and controls
112 lines (97 loc) · 22.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// This file was generated via github.com/skx/implant/
//
// Local edits will be lost.
//
package main
import (
"bytes"
"compress/gzip"
"encoding/hex"
"fmt"
"io/ioutil"
)
//
// EmbeddedResource is the structure which is used to record details of
// each embedded resource in your binary.
//
// The resource contains the (original) filename, relative to the input
// directory `implant` was generated with, along with the original size
// and the compressed/encoded data.
//
type EmbeddedResource struct {
Filename string
Contents string
Length int
}
//
// RESOURCES is a simple array containing one entry for each embedded
// resource.
//
// It is exposed to callers via the `getResources()` function.
//
var RESOURCES []EmbeddedResource
//
// Populate our resources
//
func init() {
var tmp EmbeddedResource
tmp.Filename = "data/folders.html"
tmp.Contents = "1f8b08000000000004ffbc586d73db36f27f9f4fb145faff5b1e9ba41fd226b649dda44ae2a47562c776d24baf771d885c51b04180014059accedffd06009fa4ba6d7a2f0e1e8f04601f7fbb582c147ff5e27c72fde9e225cc4dc1c78f62fb019c8a3c2128c8f811403c479ad92f00b16186e3f895e4192a3863dac4915f7a0476bb404341d00213b26078574a6508a45218142621772c33f324c3054b3170935d6082194679a053ca31d9770a01bca0b93165809f2bb648c8c40b09aeeb1207220d2e4d644d3e81744e9546937cb87e153c6be57c150470460d6a03a92c4ac631032a322898603386194caeae20081af33913b7a09027449b9aa39e231a027385b3845863f4711415749966229c4a69b451b4b493541651b7101d8687e1d328d5ba5f0b0b26c2546b024c18cc15337542f49c1e3e7b127cf7f11363576f5ee10ffbd969f1fde5f3db3aad5e3f7f7d991f1e9c171fd2bbbba7521c5e7ecaf2271fe9ce457175ad7f8d7ef8f6d9629abdbc993fa908a44a6a2d15cb9948081552d485ac3419fb9858086ede57a86a601a94c5536106d31a3a93a14340a78a9506b44a7b8f53996178f3d94a709efaafc17eb87f103e719edd3ce898583ca77b3bdfbecf8f527ef769727a7a51be787ff6b13c7b27f66697f4f2fce6f567bd7f689e9ce637872f7ffd66efefe2f4fde73452cfdecec5e58b9f08a44a6a2d15db742c8ebc9d4dd8ac877f18e4efe9825e79cffed0d32f8dedcd66681f06e03afde6cd7b36dd3b78fa7951df5cbd9dbdbe397f4bcf6e67d58f1f973f2d3f5c88c9f7cf9ff28362f2e3bb37e5e951713a79f1eceef4dd9bf4e2c5d3eb25255f00808fb14b57307589893f1236d73c3aee5cc3cad101c094a6b7b99295c8825472a98e1fcf8eecdf8927b8f71fa136b8c06026a541d5339734cb98c88fe1c95eb984bd8607c04b82c74747ad9c0714c1ba2680a95419aac0c8f2180eca2568c959068ff1c8fe35b21fb427147411d8a234b4adb161ca697adb3003cca430c11db27c6e8e612a79d6ec78b171e470f338b5a93f00f1862ea84fb416cbaf4790c9b42a5018d80e15d2ac1ecd2a911a26c5681b56f0f5688b89b232c70697e678c1349b723c9e31a5cdd676389369a547db2770bfed701ee6711c598fac2df15466b5fd02100bba809453ad1322e8624a15f88f20c319ad786718c419eb286dc1a54ca00a66bc62596bbc9537a06a0459ada8063400f1b432468a060a3f21eb660446e639478b3aa7a5c68c40460d6d9613924abfde2e5395a349c863af9400558c06b82ca9c8304bc88c728dcdaab55e49de79bc661a40ac4b2a5a63b40aa4e035195f7b73045db09cda68c491a5f328b6638d95a5520453aac8f87f451a471ecaa151316d5df1c804534545d6de391119ff88d382321e47b4678ba38c2d06531b5496b519b219a936145dacd6008d2b3eb0c00238a52a1074b146051073368e29f8bb3022e3d7b2406b541c71d69b021047155f9bff9efc5695b287f3b7ca60a08dcb5c56868ccfdce79f6b5dc367308923411bdc1c66cdc152f2aed33f5c4f250f74111c5ae082220b0ec9d8975b3b8684cc9ef8c056d5b21364c77abef54401cd3229c83866ad0939afcbb9cd48e8be051aa94ae7363dd903291a3b79cd1135b834c4a5c08c71838a343d583b5b505e614208949ca63877dd5bd2edba22d87467c7fb7b7bff3770a241cf552b3b866e73a65bafbd6e27570fb801562b45458e10fa9651c3bd2fbd7ef4d9dfcb0a98c102a646d8ffb6cc81974d5a5badc301e52c17c71c675d8f1679b268b50adfd102efef0928c931696bd878b56233083f085bb9efefe3e978b54291dddf770c1b04514761b3ae43c1fae5f8ba9506a7c6ade1f91c22d664d4519b514703ace2f9c1f87c81caf6cd71343f18e49a37eaa552520de08bcbf16ad5aec651d99bb75a21d7b84e7ac1916a048d1c5303b401148c04ab100ad49ae6a8c34d41169ddfba35f0302ec7ff2fa6ba3cb19cffcdc4498f9b56c39631ffb52b637e0ac38ea40d6b5fee3b20d7e116fe1eec7637ef4977aebf1d6cc346415cdb7255b03db27d0f42c657b25229c24466b8590f1d4f5fcbda5744ceccbc9aba765adf2ea33b5fe5c9f8f982324ea71c410af04436f336a5ae57d94134ec5887e04f5d842ff37122cbdad5ea4d5b7ec74317aff0168b329cb1888caf6c47093f6051fe458706dec5914f8626677c6f36a8810f746c510457686022e52d4328a9d64ce460abc3ae2f8bbb90d15a031380cb922974e9086d5307a963fc45a319d977edae2ba5bb9ef417cbb9ddb5d60baa5a724b0a89abc24dc7096ebbe3339808bc8317d4e068bb23196c871a8ddb1daee5cdda36ecf4b4b5ee050c4c708626a8535ae2c84d2cd7a89757eb244944c5f936fc0d08816320278d549d909da15e233f5c4fae8c622277bac90994d4cc938840afbb6d8c430f59e23f3c143b4012023bd0ac39731aafef9bcb258ae0128d62b840a00da17da45a281f8e498e66d408b444eb8160bbcbdd7ad76f271ba685bae4cc8cc809e9ad9f49052396ec9db0d833851c456ee6276c6767dbebb7a30bb61dcbc6c77fb07f86ba9a6aa3467b8d4abbc44486cbf3d9882464bb576447fd5b46af74936d677f9d71992c4385ee161f45fffa59effcfb67bdf37594ef92812b76b0198c9649a3c6c3d33b61c79a23762834951250892665ea75cdd0bc99dc686e8441e85eb9be03cc1c9b9b25b037faaefbada544a5993660e6d48046f758f2c674a7cc372a6f29e353b9b40f29bfef0f8def74923ec172342f39da47d877f59b6cb4e5b9b77a83ed31f08b9078f6d0a59c4de4b24435a17a78ec2c3967fa6115fabb7a621f60b6648cb67c833150e5f2c60a6090c0de093088adac367bc0a6cf106c4b6ab315124be6e32d50bdbe7e7bd61c083b6cf82cd5bac15d4679dfb6619cc0de5a5c3973225d4717664c979cd690c0960d866bacb6064a6c93d0e26cc7ef310b29b0e76b626f1ffdb6a4baca086d2f697fcf2bab06edae360cf2e412696a6cd791ce6d5fa8436f8045e5af86d9d18752dc625d959034016f72e8a4af2ae7024a9a63c025cd604e45c611a8a8db126303d864a87dd57b6899c80796e1926963af8da46172a5a773baf3d346ad271e84dd9bea5210928ec2bb0e8dcac6f0ee36f038afff423095593d7e14477353f0f1a3ff040000ffffcc4c4110bb150000"
tmp.Length = 5563
RESOURCES = append(RESOURCES, tmp)
tmp.Filename = "data/login.html"
tmp.Contents = "1f8b08000000000004ffcc586d73dbb811feee5fb187dcf4ecb952f45b625b263575edc44ee2c4af49eafb061220051904680094a568fcdf3b00484a949539673a6d0f99b10070b1d8e7d9c56291e897938be3dbbbcbb73034051fac45f6073816798ca840833580684831b11d80d90c5806bdb74a49054f4f6b0000916186d3c1b9cc99807798714aa2d0cfb9efb319e59aae12bea60f1553cfc50569a40b6a30085cd0188d197d2ca5320852290c1526468f8c98614ce898a5347083bf0313cc30cc039d624ee32d0700c02b1a1a530676cf718c8ebd92e0765ad20595864e4c68293884748895a626fe72fb2ed86ff4fc1204708e0dd506525994162c6041a06082658c1238beb98120f0c823cec43d28ca63a4cd94533da4d420182a9ac5c81aa3fb6158e0494a442f91d268a3706907a92cc27622dce9edf4f6c254ebf95caf60a2976a8d80094373c5cc34467a8877f677837f7ebd63ece6fd3bfa718b9c161fae8feea769757674769def6c5f145fd2c7c73d2976aeef48befb15ff7e59dcdceaefe1c737fbe384bc1d0d772b04a9925a4bc5722662848514d342561a0d9c3b1d05a3ab8aaa29300dcaf2a92881640aadc9730674aa586940ab748e389584f6460f568343eabbc1566f6bbbb7eb908d560213e323bcf9fb9babfc20e58f77c7a7a797e5c9d5f9d7f2fcb3d8ccaef1f5c5e8ec416fed98ddd37cb4f3f6fbebcd7f89d3ab873454fb9f86e2fae40f04a9925a4bc5968145a1b7b376db9f3af9031ee31b8facf5b5d7d045fa52df8e965dbb9a80dbf4f5fb2b966c6eef3d8ca7a39b4fd9d9e8e2133ebfcfaa6f5f277f4cbe5c8ae30f477b7cbb38fef6f97d797a509c1e9fec3f9e7e7e9f5e9eecdd4e307a0101dec72e5cc14c4b1afb236163cdb3032e51c0cc09022438bdcf95ac040952c9a5eabfca0eecbfc3fabbcf11003d6de89806999486aa767589096122efc3ee663981cd6691d704af0e0e5a3dcff681a58d12a908558191651fb6cb0968c9198157f4c0fe6b14afb6a627f038b0496ec1b2da8484e3f4be599d49618247caf2a1e9432239693e78b551e868f33435f1b0c0e1088fb18f929aca5fd781c8b42aa830b0d1531493e97a5689d43029d6376006bfaeffc6445999bea113d31f33cd124efb1953dafcb6d1cb645ae9f58d4378da70642f4671145a3cd6942891646a3bb645028f21e558eb18093c4eb002ff13109ae18a3796d91611d6cada948b99a02ac878c5486dbf6f8b72b532bb37551d298028a98c91a266c40f50d798c0c83ce7d492cf71a9294140b0c1f5748c52e9e79b69ac726a62f4ca6f8b002b86033a29b12094c428c35cd37ad6225092b7b8978c0388748945638e5681147c8a06b7de2081c72cc7d62f5168e51a3e9bd659cc522982042b34f8df0a47a127b56b5c841b509ea520515890e6160ad1e01b4d0acc7814e2c5855148d8b83361c38191266e963dd7b8a6f5dd12c151c517ecb084265805028f97e4c0de9a830883bf254334389305b5c64521678b06014461c51767966cee0ca350e0f1c0a737e8c4ac8d0c17db0b96b460b9ad6a123941e0ce768c0aac72265c9a79bd594e0e5b1e0accaca0c51f142478d3746496696a821d37d645b0df74ea0fdb0bdb760d2bb1a01cdcdf80894c225804bb42d69d3b26f28e46db1c9cfad87b7dae3e43be68ebf0e4dbaa29ebff9a843a6d3b167636cb494b82576e33ceb2b1ab6bc77973ea6b1331a7ca80fb1b102cf267a9c4b6a81ccc66be127d7a8ac2b2cb8d6d2b40d8369bcd0bcc7973fbd7f008d325c7d3be90822217f32e0c0267518bd58d3a56369edddab6477fe9fcd816655215738576d4aab383602815fb2e85c11c81929cc66e1a017677428c42670882829aa12431babcb8b97de6ed3a326a3075c026d21859f461fbf582bb98bd5c027b7d972bb42ce5c405e1001322051a44ac7159cea7e5d0263e687b41ce65422d13ec0789d0b6c8a9759cd83a1fd5d783a19339d38e1a7b4c95e4a87e0e0ca53608c698573446cdaa4a710425c7291d4a4ea88a112bb0abb2ed6f8f4e705172ea8ace15787f102f8b91f1ff23b3d2f61444ff152e3df12d971d02edbe3d2bf00fc7f88b4fd95f83352ed3fb9f88c0126bfd281569e2693eae33d3aa48b4424b5177272b0576de29fb4f38b3e5ecd662867516b8130b65c579a06c35ba628b3a09d476a792dbbb676bdb3d9e6d1db4720934c7d157adba4a0a667c066cfa3614e27654c78c7bfbb7992c31021223fc9df51cbcbdb757e4c61f4c47a145dcd5f2eca02e4d7486f5c055c8606f8dbf89449787f6c688ca9f1f383d51fd8cb1e590efb6e0fd10165f3b4d2a9f17912d2bee94b43e12abeb90f6bb2f2cdac5b675cbaace275749358be72f1c34b891954a291c4b4257d4547ca1fa6afe8f22676658252e6feafb49f8e82b4634381a63c671c22948015e6855a5d6add36a8758eb6deb52f0a710e165188f65397547e385089dbf7af7b4287b190bd1e0c6be56e1232dca9f04b480ce86ae7dedda9889c24492e9602d0a87a6e083b57f070000ffff8e7591ae77130000"
tmp.Length = 4983
RESOURCES = append(RESOURCES, tmp)
tmp.Filename = "data/message.html"
tmp.Contents = "1f8b08000000000004ffbc3a6b77dbb692dff32be632de95746c924e9cb6894d6a4f6a378f366912db69b6b7b7db0391230936053000f4ba5afdf73d03802f5979ddddb3d3d388c463de33180c9dfcede2cdf9f5ef6f7f82a99915c37b09fd40c1c4240d5004c37b00c914594e0f0089e1a6c0e16bd49a4d10369bc83f46cf6491a382ed16fed86ca01e7efff202b6db3f93d86dbc07846486868160334c8305c7652995092093c2a03069b0e4b999a6392e7886a17d39022eb8e1ac0875c60a4c1f58b6001ca2a93165881fe77c9106e70e4978bd2eb185d2e0cac424d8196453a6349af4fdf5b3f07185e76f6108af98416d2093b3921798031339ccb8e0638e399c5f5d41187af60b2e6e41619106daac0bd4534413c054e1380d88197d1ac733b6ca72118da434da2856d24b2667713d109f4427d10f71a6753316cdb88832ad03e0c2e04471b34e033d65278f1f853ffef63be7572f9fe12f0ff2e7b39f2f9fdeaeb3f98ba72f2e27270fdfccde67cbe50f529c5cfe9e4f1efdc60edfceaeaef53fe35fbe7fbc18e53fdd4c1fcd03c894d45a2a3ee1220d9890623d93731d0c9d4d480537efe6a8d6c03528d2a7c21c466ba859865a033a53bc34a055d6489cc91ca39b8f84c14aea1ec307d18387d1232bd9cd5ec1c4e2293b3efcfedde449562c7f3f7ffefc6d79f1eed56fe5ab5fc5f1f8925dbeb979f1513f38318f9e4f6e4e7efae777c7ff299ebffb98c5eaf1eba9b8bcf87b0099925a4bc577054b62c7a7371b49f85923ffcc16ecca49f65949bfd6b637bba6ddaf80ebecbb97eff8e8f8e10f1f17eb9babd7e317376f5eb357b7e3f987df567f5fbd7f2bce7f7efa43f17076fee1d797e5f327b3e7e7178f97cf7f7d99bdbdf8e17ac582af5080b3b1755730eb12531712e46b4e3b36fa6163d701c08865b71325e7220f335948757a7ffc84fe3b730bb6ee27d20617188ea534a89acd25cb732e26a7f0e8b85cc1b1df03e030c1fd274f2a3c7b08419712c048aa1c556864790a0fcb156859f01ceee313facfe3decb4f24d822a4d4d5e6cdf3302a5876eb37038ca530e112f9646a4e61248bdccf38b4496cf5e6f454b97e4b89376cc19ca355ba3ce8432eb3f90c858141a490e5ebfe782e32c3a5e80f600307fd1e17e5dc9c1a5c99d305d77c54e0e9982b6d7a83682cb3b9ee0fce603bb07a6efb71129344c44b3292f99a1e0012c11690154ceb34106c31620adc4f98e398cd8b9a3148725eafa484cbb840158e8b39cf2be6095f6b9547445451b5d60024a3b931527855b897a0cb4668e464522069bd60a5c63c809c19e687d320936ebc1a666a82260dee3ba20130c55988ab92891cf33418b342a31f25ee952c6a893bac0124ba64a26246ab508a621d0caf1d3b822df88491359298d6392d56d0d9ca3329c21153c1f0ff6b69123b55b6994a58258ad34c38524ce4d5991307c30f389a315e24316bb62571ce17ad57322acf2b0fd9b554658ada561d8526f3a2c5012970c45428d8a2b30a2029f83061e0cec23818be903324a692b8e00d2b00493c2f3aef9fc25f9152149c7789418b5a2127726e82e12bfbfb65aa1dfdb45e925830af37ab331f584a2e6bfaedf14c16a19e8527a4b870968727f52a007be69ccf95a24ce02ba4ea682168e329b83621e5dcb285005aa66f1684dce00c4646d0ff558cc3d8566001d86ce5127cc80a3e11a7058eeb022576cbe2cdc6976cdb6d004a169856213c6c4d758361c4f20906c33f369be8bda0b4b6dd129e6b6958618b3c1b4ca4799bb708bc5e9b773a859ff1820e8c4f6982536adca70a425f99a3b52864792e45304c78353929d6e5944217eaa7502353d994e298ef89e5c4e2f3b9cce0ca043656c696d3c017abd5db8215734c8300ca826538b57a4feb59af7f5bb99e3e383efeb7963df7aae3695178e7d09fd449637ccf9825aa5ba801361bc5c404c11b56c3d61d600e9a1cd2e0fa3f72a45fd90cf7b9111f43ed28c968b8d9a0c8b7dbcdc66fd87417c4f58a8e07915c765fe343edc4d67da11ce7e3d5c7e5932a2e9fb474e528ffa494542d1dd9ddde7a33a6265cd8aae3bbe3727556a7cb19e362245715d6efab07391e6b343e0de859f8d84ee85935f1b045be7b0e974c6001f6df908bb10ca0091f02cb9617caada2c3988b490723c1dd95f6d6150cada41d4d39d837442af44af0859cd5c2c971b9aa95e0d8a00264975982a4a41462696eb7495cee88d3b61ec1cec0ceeb668385c6b6952883bc4096e36eb81836a25ac3d541eec5fe1b6aa37889b97f9bca052affec8acb7a2a93224741754ac373155507b7b83e82031bfb709a3657dc8a97168f745156c3c4e4c3cdc66e045284c9ed10d09843538dc6463504f739bc95a3596275f0d418964da9c8eca68dcd0628f0aa8bf90ba6db2b5b5c5a537b752db12860e6aef5216b30b714417cb90473c08fe0a0ab8416891685aea3b74f50076d0e7cbc7edfa148d049fb753e6f65f69295a8b28297be349cf23c47910646cd91f23d1d1b8dee1c6c3607183de305badc55e716077d3bed9b09d44bd86e079d253b4e4af075b2d4855c757a978acf985adb937ca5830e150b9db3f9ee745533ff352a98b8ddb3c0d762cea6f16673507b862b48ec19de0cbe7f79e146daead983d696e6051b511be4422e452159fb0a51c1178d97577b1dc6afb11d404570471d3be70695999d1278cf803f936a443b86ada69b79ca3e3fca7cdd3da9eb8ad1c1dd7236346cd40d260aa7dd407d71fdfa553b420992a22e6bee46b6dfc032c317e899bd1b4055417e9f3276487d30afede612d59a710e67d8a8ba95d94b536a478644708f9abbd5bd150d45feaf8852e5fb6f12c9156cd625774472339f15e91a57f6b650db9860f7c2e2ae369d25b63677d1e514abd872bf5ebf82894bb6fca25abb97a6d63585a09d7e0c1b593da0e85e99ec9a5a17f610af8f74da432330661902177b8e11b23d6c6bcb780bbb7ab4f19fa10b79ba6992a785fe50a16b856b32d5f9c7e3f317eb9dc8f347c797b9cd3fcf2dc9818546ea4c573e7597736ba161522aa4139bf86ed824ffa0839a26ff574cb63445aef20972974f3fd8ba600fb91dea3edebd53b626fda39d48cae1bf8b912ecfa810fb575e1c16dfe323abbac7da71dc2bb45b81d585b2e9b3d439c9baa0af3928546d03aa9ef546afe7ed85ba5b1174536b6b27412b5736cdbf607825e72a43389739ee8feb3a4356edfb0937d3f9c8f6b1f5ed2a5ebaf64a307cba60bcb065a614e01651d8ee62dd8dd4ce29d455c1174584af93f15c966bdb24d9e5c565ae3b125a7b45b7382ba3318f83e115b572e1179c95df28907736abfed83983f719d7146ddda9f7b64a9bc668dd7d3ee8f72263b56cd41fb6614869f6cfde2042964df7ed0038e89b29d703fa7cd2ef6573a5a5ea1df54a495f52546f10d9aabf6fd9f4b087b0830a15cbf373ba4cf47b2e71f406be2fec607bf44dd814cee4023f8b701049d1efcde45ce3bcec1dd51c421f074d7bdd815e72934da18fd172cab369b73cdd5d0c10c7f00ac706ce0b9edd466dc60932a6111e9cee0e574deca890996d9742da28c718d5efd5c6d9d10dc14821bb3d7359a805710caf799edb9bda2779797887970535b571f9818b5c2ebf898fa5dd12c91245bfc670043d5731ef611ca352e10285b970ddf37ed7ee045e367aaca14ac4169afbc2767076cf2b811e69b6ddd0a75675a6e86bda673f29c4315ca18173296f3942c9b4e6620274793972eda823c8d95ad3c18dab922bb4841a0fcaecc6bf349a3e7d783db2f7cf23b7f42fdad9441f69da2fa7a590daee57edfa345def33980a5cc20533d8d2526b3ad268ec6c7b6ce2c70670d8ac5deb46cd44c3b360194d5167acc4be7da15dfd06df5aa7692ae6453180ff8020805308ce3c569d06876dba46bebf3ebf328a8b89a51d9c41c9cc348d036868d74eef1848dd8f53c521046900871ddebc62b6dec6710c976814c70502f30be92b2aa972bf4d2668fa2d225d43f0a3d5d1fac84da73bac45ba2cb8e9076741c3fd582ae8f3f4f88c276e5354a09898e9193f3c6ce5883ad512acbc8c7ff03f233d1f69a3fac79e240d7191e3eacdb81fa4c1a02144b0bebbd111dddd76f8a0bb7195ae2285b67bda8fffeb1ffaf0bfffa10f0fe2c951d01285808fa1bf4a3d196b839610041d4108149ab9123017de65d65dcad00e531fb12dd3f9ceb499a26fa787d42c3db27f0c50a2d25c1b30536640a3fd9ab76351d7207ecd7831922bfad2e7e6c13ab4eb30a78d834dd0fc542035707e5cbfccfb3db7bb9590280cdc20a46e7b6423801cb92c519d33dd0e3b5a5e70bd9f84fe716dcf1e4a19fd9e6b1fb74859bf21041c52383e030e09e1aabc07c87ddacaa6a5e4d290d232676f818a4a7a1f1004643e5ad565b8f62827db0086291c77ec5a708bd2b621a39cebb2606b48a147c6b03deb5e8b0855f7959e093eb5594881cd3e6f7bfa2a4d29d56646a87af8f40727e5dc6bbbce0d2d3fb94496193092fe9c444c50fb1395b4f2ad66b6eb23296e713d2f21f506f73e541d9f710c6f04946c8221355a60ca049da04cacab144306f41e4a1f9b9c6ab998b438c315d7868e8dd46fb2a9a716ba9693acd62c6e99ddb16a5d10d27a45a57b47d2335e9f0695d20efac17dba57d5f7c14144affd7d13741beb0fc0b944fbb04ce291ccd7c37b493c35b36278ef7f020000ffff3ab11024bd240000"
tmp.Length = 9405
RESOURCES = append(RESOURCES, tmp)
tmp.Filename = "data/messages.html"
tmp.Contents = "1f8b08000000000004ffec39fd77db3692bfe7af9865732be9d9249d386d129bd4bdd4f96cf3693bed75bbbd3e881c51b029800140595a9dfef77b038014292bd9a677efdefdb093178b00073383f90486c95f9ebe3bbbfce5fd3398997939be93d00f944c1469802218df014866c8727a00480c37258ed76b889ecb3247059b4d12bbc93b400873340c049b631a2c38de5452990032290c0a9306373c37b334c705cf30b48343e0821bceca5067acc4f49e6509e008cd8ca942fc54f3451a9c3922e1e5aac20e49834b1393d0a790cd98d268d28f97cfc3470d9dbf8421bc6606b5814cce2b5e620e4ce430e7824f39e67076710161e8c52fb9b80685651a68b32a51cf104d003385d3342061f4491ccfd932cb453491d268a35845834ccee376223e8e8ea38771a6f5762e9a7311655a07c085c14271b34a033d63c78f1e84dffff40be717af9ee38ff7f217f31fce9f5cafb2fae59397e7c5f1fd77f38fd9cdcd43298ecf7fc98b073fb183f7f38b4bfd8ff8c7ef1e2d26f9b3abd9833a804c49ada5e2051769c08414abb9ac7530763621155c7da851ad806b50a44f85394c56d08a0cad0674a6786540ab6cbbe34ce6185d7d220a76a7ee31bc17ddbb1f3db03bbbdabb31b178c28e0ebefb503cceca9b5fce5ebc785f3dfdf0faa7eaf55b71343d67e7efae5e7ed2f78ecd8317c5d5f1b37f7c7bf41fe2c5874f59ac1ebd9989f3a77f0b2053526ba9f8eec692d8c9e9cd463bfca2917f600b76e176f6c59dfe51db5eed9a76bf022eb36f5f7de093a3fb0f3f2d5657176fa62fafdebd61afafa7f5cf3f2dffb6fcf85e9cfdf0e461797f7ef6f3db57d58bc7f317674f1fddbc78fb2a7bfff4e1e592057f4001cec6d65dc1ac2a4c5d4890af39edd8c886b5c5038009cbae0b256b9187992ca53af966fa98fe9d3a848dfb89b4c1058653290daaede28ae53917c5093c38aa9670e4d700384af0cde3c70d9d3d8ca0cf096022558e2a34b23a81fbd512b42c790edfe063fae769ef9527126c11525aeacae66598942cbbf68b01a65298f00679313327309165eedf38b2496cf5e6f4d4b87e4789576cc19ca335babc3b845c66f51c858151a490e5abe1b41699e1520c47b086bbc30117556d4e0c2ecdc9826b3e29f164ca95368351349559ad87a353d88cac9ebb7e9cc4b423922599c87c450f0089600bc84aa6751a08b6983005ee27cc71caeab2150c929cb79894701917a8c26959f3bc119ee875b03c21e28aaa8303904c6a63a4f0aa7083a02f4668645194485a2f59a5310f206786f9e934c8a49b6fa6992ad0a4c1378e69004c7116e2b26222c73c0da6acd4e867497a25cb76c73dd100125d31d108a3552845b90ac6974e1cc116bc60648d24263ca7c5067a4b79264538612a18ff5fa126b1536557a884355b719a09278a89bca9397130fe192773c6cb2466db65499cf345674846e579e321bb966a4cd1daaaa7d0a42e3b129002274c85822d7a580049c9c70903570be360fc52ce91844ae2926f450148e2baec8d3f47bf61a528386f33830eb75216b236c1f8b5fdfde75c7bfae90c925830af37ab331f584adeb4fcbbf3992c433d0f8f4971e13c0f8f5b2c005b73ce6aa52813f8c350535a08ba744aae4d4839b7ea10808ee9b708213738878911f4bf897198dac35600365bb9041fb29217e2a4c4697b40891d5abc5efbd3d96613809225a64d088f3baffac130617981c1f8d7f53afa2828ad6d3644e7521a566e36bff90821cddbbc45e0f5ba1d53157ece4b2a189fd304a7d4b84f1514ab8d393a4821cb73298271c29b9745b9aa6614bad03e851a99ca6614c77c4f2c27969ecf65069726b0b132b59206feb0da8c16acac310d02a84a96e1ccea3d6ddf7afddb93ebc9bda3a37febd873af3a9e94a5770efd599d6c8def05b34c758734c07aad9828b039766bd8b802e6609b43b6b4fe971ce92d9be33e37e253681d25998cd76b14f966b35efb05eb3e42dc62f43c88f665d76d7da89bd8fa03ca713e5e7d5c3e6ee2f27147578ef333a5a4eae8c8aef6d69b335570614f1ddf1e55cbd3365dce191713b96ca87ed73cc8e954a3f16940cfc347f6859e372fee77d8f7eb70c5049660ff865c4c6500dbf021b062f94d392c2ac65c143d8a04b731edad2b18db9df634e560df14a9d02bc11fe4ac168e8faa65ab0427061d40768525482a4a219627ddfcaa9ded74ad47b033b1335cafb1d4d8b5121d76ecc1a06413ba84bd67055299f025bda7954e5da958c1852dfa3d0c57b35adf72b02d612ecee2de65d68ede2b5c00397d4f14850b2eeb7e583a70c9cb22cf789ea34803a36a0cc67f2dd9a75a9efae4b92b48b7a013ec16d23f2bfe5b5c9a5be2d3e48e72083e2fbafa9f88de3f03f8aadbee3f316c42274777aa7503fb37d446f10a733f9ac9052affecae0aedab4c8a1c059d3abb6a4d8c1a2766364e62fa6366e3a7cc603b78aee4bc1d5cd4932bcc8c1bc74675c9b4c9f60d6acd0adccdb646b9a3ae3f0acd1d1695cb574f6dd9bcdba9bfeb3550ae7c8b37b0d9f8e0bb7d2909281828838e13938ffd9a27c6b06c46570d92c099ca2badad7d9d2a58b10a5556f2ca1fa3fbbee89db04dd456aa73ac4aea816cfe39753d63aa39a07f8972129bbcd94444fa27e2dd3932c3ee9cb7463b7dcb2056375b078aadbb6c6df6afc4b1d50541d23f9213fc81bc4739e2ff63e220f109bceffa71a798f847fb22a9c67f15135d9d267135fe330347c5373ee852e51edb02e986d0ed8f34a7ecede5b34d4bb6e6faa0a57badbd95b76ffba7053ad6ccf3f0bbce6be896b9bd77b286f8b623128c2f64ad32843399e3fea2d23a43d3d32cb899d513dbdcd3d7cbf8c6dd3983f19305e3a5cdd6528043a2bab54b7537dfdfbe9db62ab017a92f6d117adbb745b059dddde399ac56f6e6b82b8b5d717b87d65ed135ceab68cae3607c41fd2df811e7d5576ec83b1b3964123b67f03ee33a459d8bc6defed1b65bd4b6e4ee0e0791cd6860d4afb68b42a5e5b7c1284296cdf6ad00b83b3433ae47d4531e0eb25a69a90687834a527b590d46912d9e432ba6873d8c1d34a4589e9f514d1e0e5866f8020723df2c73b039fc2a6a0ae772815f24388aa4180ee6b2d6585783c3564218e268db7374a06fb8c96630c4e866c6b3d9a82b0bec2203c431bcc6a981b39267d7511f1920631ae1dec9ee74d3d98b4a99d9e324a45be518a38683d6383bba21982864d7a72e0b75208ee10dcf737be0f9ac2cf76fc9b2a04e1fdefccc452e6fbe4a8e1bbb2492158a614be11006bf4f4a26aef7088e51a57081c23c752dc561dfee047e6ff4d84293882d6c5a836c46a777bc12e891de76bb9cd4bfcb147d62f8629f358ee1020d9c4979cd112aa6351705d06df4d0ddd10f21672b0d5c002e2baed032da7a506617feaed10ce96bd4a1bdd71f3ad4df69e536fa48d31e9d5021b52d81d6f5e975bbce602af006e85cd3d152e775a4d1d8b7ddb9c2cf8de0608bbbd25b35130f2f821534459db10a877640ab865b7a2b9da6a9a8cb7204ff0e410027109c7aaa3a0d0eba7c8dfc78797661141785e51d9c42c5cc2c8d03d8f26e9dde0990ba1fa78a0308d2000e7ab279c56cbc8de318ced1288e0b04e611e9d312a972bf4d0a34c30e93be21f8e1f27075e85ea73ba245ba2ab91906a7c156faa95430e4e9d1294fdca2a8445198d9293f38685d72273f2cfd1e7fe5bf45ba9e68a386479e254d7191e3f2dd7418a4c168cb8860757ba163babbece05e7fe1325d460a6d4b6918ffe7dff5c17ffd5d1fdc8d8bc3a0b315023e85e132f56cac0d3a9b20686b46030a4dad04d4c2bbccaacf19ba61ea23b6633adfae3333f43dc6903a4887f60b69854a736dc0cc98018df613c78e455dd7ec0de3e5442e879d9c4d0eedda6ee9d6c10a34cf4aa4fbccf7ab57f970e056771212ad729390bae5918d0072e4aa4275c67437ec08bde47a3f0bfdfdcad61e4a19c381bbeb775859bf21021c52383a050e09d16abc07c87dbaca265472694809cdd95ba07a79f9e6b50f0802321f61f5056e3dcaed6d04e3148e7a762db92569af8751ce7555b215a4302063d846dea0c3044bed23cbc1e7160b2970bbcedb9e3ed5514ab599119ac6267d85af6aafed363774fce41c5966c048fac62e0ad4bea29256bed6cc163f92e21a577505a937b8f7a1a67cc631bc1350b102c352b21c664c50056562d5a41832a0f750eac03bd572517424c325d786ca46ea17d9d4d36ebadd27596d8bdc31bb13d5ba20a42d868b01f02cbde06d35707aee56bc249ec87c35be93c433332fc777fe3b0000ffffedb9d7fc73210000"
tmp.Length = 8563
RESOURCES = append(RESOURCES, tmp)
}
//
// Return the contents of a resource.
//
func getResource(path string) ([]byte, error) {
for _, entry := range RESOURCES {
//
// We found the file contents.
//
if entry.Filename == path {
var raw bytes.Buffer
var err error
// Decode the data.
in, err := hex.DecodeString(entry.Contents)
if err != nil {
return nil, err
}
// Gunzip the data to the client
gr, err := gzip.NewReader(bytes.NewBuffer(in))
if err != nil {
return nil, err
}
defer gr.Close()
data, err := ioutil.ReadAll(gr)
if err != nil {
return nil, err
}
_, err = raw.Write(data)
if err != nil {
return nil, err
}
// Return it.
return raw.Bytes(), nil
}
}
return nil, fmt.Errorf("failed to find resource '%s'", path)
}
//
// Return the available resources.
//
func getResources() []EmbeddedResource {
return RESOURCES
}