VikramSingh178 commited on
Commit
5bfe3af
1 Parent(s): 65607a3

chore: Add new files for image processing pipeline

Browse files

Former-commit-id: 3918c26cfc8efd48f91cd4d6c13276a54e4af740
Former-commit-id: 1b6f3edb10469ba62e3cc22d29146c5f0858252e
Former-commit-id: 808e3257a7322edccd3a9790d77dddd9083f1207
Former-commit-id: 7a77166ea3192e233837f067ffb7ab48f8a42a22
Former-commit-id: f09ca673be186f76310658e0fba2616515dfca65

..bfg-report/2024-06-22/12-17-17/cache-stats.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ (apply,CacheStats{hitCount=458, missCount=603, loadSuccessCount=602, loadExceptionCount=0, totalLoadTime=692753596, evictionCount=0})
2
+ (tree,CacheStats{hitCount=2369, missCount=714, loadSuccessCount=706, loadExceptionCount=0, totalLoadTime=553613799, evictionCount=0})
3
+ (commit,CacheStats{hitCount=439, missCount=368, loadSuccessCount=368, loadExceptionCount=0, totalLoadTime=348005427, evictionCount=0})
4
+ (tag,CacheStats{hitCount=0, missCount=0, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0})
..bfg-report/2024-06-22/12-17-17/deleted-files.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 688fe713674b914c519bef018aa47f7a8ba18d58 14483456 bfg.jar
2
+ 74a152223565564def6ad6a76129bf59a0171b8f 14991036 optimizer.bin
3
+ c619da21bfd5d567bd60e03fbaf1c29d30578baf 14991036 optimizer.bin
4
+ 55f1b147723f81304a3217185314d068b6d49439 23390424 pytorch_lora_weights.safetensors
5
+ dafdc032f1a8f320ac0e888bcf5156500f5da7dc 23390424 pytorch_lora_weights.safetensors
6
+ bb4f104bc6e519ebd9ff69e8f59c3001beaa0b91 23390424 pytorch_lora_weights.safetensors
7
+ dfbc6651386c693d47d1944b179470ea50e68756 23390424 pytorch_lora_weights.safetensors
8
+ dd6cb78a89b6e91ebaa670d379e4ead3b73ee550 23390424 pytorch_lora_weights.safetensors
9
+ 4b11a02a7599e520f9f14a4703f4991237d6ce50 87769683 yolov8l.pt
10
+ cdb22b922d8e59c557a944f4560a5358770baad5 52117635 yolov8m.pt
11
+ 6e924a316b5623dd99eedf5f9988b66ee4f9dfbe 23897299 yolov8s-seg.pt
12
+ 5f7efb1ee991ebccb1ee9a360066829e6435a168 22573363 yolov8s.pt
..bfg-report/2024-06-22/12-17-17/object-id-map.old-new.txt ADDED
@@ -0,0 +1,555 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 002a6825814239d28e518dd3d2f207c9dad8f5ae bfd0eedf7844425ebd1d160627c190fb9f1486d3
2
+ 003205d9a5cd743cacc4e2cd692e8b545dc02945 c6a24e03038b7e8ff73752bb19a299df7bf2acb5
3
+ 004ff5ae12282a73bc57c17a638cda19e8cd4ace 5eb81bdca224b56dcd60dfb24f7de7b06e31e924
4
+ 0051757b51fb2232459507b28444451b4193a27f 9657c5db6e95a85463187519757f4e98309145c8
5
+ 0082a538ece06de684c7ac4de56996376f781e51 e0d5b0a1f5569171933e5dec8103114bbac1e677
6
+ 0153bd56dfb53c3740e96c190e25a304f7a8fe1c 50105d0eeed245834026a36044c7e56168356a70
7
+ 015b96d6c27a4fd84d7b536f50a088fa0e617249 cee06c1dcb91e1c1e759cb8b1b3b88f3afec9ae4
8
+ 023d91b42518d36065a818e75beb4d90fcd93a6f 1fe0e7ec42884c56d8e8b5747450e43e8640ac8a
9
+ 0247d915a96548b6b5bf5c7fd862f178fb0151f8 2447ce6388737a35ce95b1e4f4ecfd6d74423e69
10
+ 03ada268148f07d74047ee82a24b9b4529f1fd6a 6ffe34188389aebc0070e9b51597b8f0349691b6
11
+ 04241e070e8da12c5d11c495554c0448c1826f69 a517f3639eedc51fcba589a89785782a2b1e82f6
12
+ 045ed41b7db323cfed1ae83bdb94d56176adda49 ad644fe7f7ce46facfcac262d2cafde9d3861895
13
+ 049825a5c2076aec3551f63fe1c4d9bc8a013a76 d08f4226b1da43bf0543054064f04f37f36447f4
14
+ 04ef05c63d21a91f9b9564c0fbd67dcfd18b94ad 0eaacc4d69e7813fbb82405da36e1a5a2474feb4
15
+ 058fbd62ae57d841639e9e8f4c45b32c31d9efdf 2e019e5b34ce69f36ae31764279c954becfbe9e6
16
+ 061806f9a699691f1256806c750a55e415fa9bc9 cd31e199ee75aa7a5b685c045e46e86e8e0ef685
17
+ 06f1e9d3e06779f0f44371dafbc540663ae13c41 77435d7e53286685a3ed197511045de0a27c452a
18
+ 08567d9f482eaa4455bd15e97583181b2fa1ae79 ec2d8d59e0580b5fa0aa10346ac1952f0445ba64
19
+ 08e7b73eb72a9747b3ab9648a036ade0b48d95bc 93195147db90ea4592b233c3c747a8521cd96e89
20
+ 090b1a3eea86cba17f2a40560e5b61a291c836f8 c0211836165eff3b50088b90f38ea580690b7044
21
+ 098c5541a8165ca67537a2e7f6de070e28851b6e dbac62c6776ef7062d5ebee0906290390ef35dab
22
+ 0a23342f67fd143ab0c849a39c7228c476ea420e 2b86d1983d696cfbef116ae79b20777b84249462
23
+ 0a42d53908879b13b709a514132ccbd723c569d4 1ce63540c04faf8157e3f2d7bcb1aa472c97e506
24
+ 0afe6126d9437e31aa5202a76731719c3f9b3d7c 8f92d8e25cc41c707c4a6426d7ab9d1755e2c0f8
25
+ 0b3cf501bc0b840e54eb9a0eed57974cf4866a55 0b50bac03edf1eec14ae859abf0edf77e4df65c9
26
+ 0b78981fff94c1acd3fe5b42d931dafb741cb254 b250c7c2990fe3d20a48c3a66157acad23a4b783
27
+ 0b9c8f0f42def36bef3330a9967d0ed621081879 b9e955f8098270983a0548756f199adc9bc40ad6
28
+ 0c100fd272172a405d6c15a04bda95b9ceaf7449 764a369834daae0d5bba2e5cf134f5b2bf76b63f
29
+ 0caea23b864f7ac1e3663f3f59551de462daf546 a22b1ad8daf888d54feb46843fbf78e2f44a0820
30
+ 0cc8dccc01014c1def53acfcadc2dbe977c5d383 a91235e3434c052b04782f2fa4699fca66c1b534
31
+ 0cfcf1c399a75c7af8a967a6015a4c57777150df 50d72a8af35d1f8b12186c485407218c2bbf1c07
32
+ 0d6241db3f39097cab41cc1463a5d9493d797b25 90a70d8e9f601fc8a0d9255d8274beefe376c3b2
33
+ 0e58c57fa85967602d1f836634abad55d585c997 0a7de9a9102e6070b79c6e26b0ea20238074d147
34
+ 0eca847b3a137b7320ea4e5d8b69852796d79a21 96e5d8bcb5144b8a49d556b95f5a6a9c59431d2d
35
+ 0efef0ad81a5815861bcd49f827e634212b17519 ad020d884476ecbdf47b16ce1ec5c5d9cdefc6e9
36
+ 0f11e5faedd5ddad03498a1c98a0cd1f06178289 21e7bf27f231dfa5ed35bb26fe0329c66b877fde
37
+ 0f6921fddc3066605c621fd5f7af15aa3475e1cf 4598bbfc47b9f91478224e816abfa6753a056a6d
38
+ 0fd1d6407005667b7259cf9e4b73a5c86bf1a472 6887d7db2e4f3774c1e2e84547fa6eb12b723ede
39
+ 102ade1f2fa37244e81740f3eb6b82412f735523 d6b27b428573ffa1969923f9f44f295d5a42bb5b
40
+ 10b84659e1585c3b88012d0583f03d0e3d6d2aa9 27bf7552a00385c1f9978784da3d7551fb5a4175
41
+ 10c1ee8545ed09d13eb5efbe0fafc9b1f6bf10ad 2c1723494f7bcce56b5c91ec6b060bbee1d22cf5
42
+ 10ccfc18cdd4e901e195ec11f6f5e3f2dc9d7eda 1a5be03de833cca41a6c4d5c1c6bd2bf5a24492d
43
+ 10eeaf664a426bee52d8cd4de564767d0f540944 d6bfc1bcd690200bf945e4b0c5e092e72852a3d3
44
+ 111ec938f98577028be978f9d088cba56220de80 9e822977453b981de2fdd7e6e5629bcc20bfc624
45
+ 112b6ff28983661d601dcf342c9fdbc0c70ca71d 85d9c03a06307a6ee46a2177bd61fd48c6c74b65
46
+ 1189c44def6344db1cc47868740cfa2ea626e5dd b02fdf11ed32a7325931e48b8d2b13ed18fb2d16
47
+ 11d2b5ca4347950deb0a556a4f1d5bfa1a3645bb 99a02b5164e18dd2f088104257a32961e279ee8d
48
+ 1209bc9a1eb7d1216ec2d5f928c7651523d843ed 85b04584563de48935625e15b1892ebe0792a586
49
+ 123081a79f669105bbe9152f3a1c6f9503011c3d 045c1688769a5ca811a1647512d27fbd45d2bf01
50
+ 125e1372371de5fb9b86a5f390f2795ccdf7489d 6b6aa6e2aaca700bf4cd55f6e8c9d0b6c35d5b1b
51
+ 12a779eb2f60654104e286451b20248b62f906e9 2c68f5b0c4e0342c1e83a8b8bf96a01c25909efa
52
+ 12b2fd3077fe5f86869684ea478b7874418cd9a7 abcbabdd8edaf082709f6346ac42f090d486bd9a
53
+ 12ca595cea4fad4f818d1f2ac5264f33ae76de5b 0c64837b2647d8d6932bc48a2c30bb514c4e2133
54
+ 12cf34863565f000a67f9427de954455a0722a3a 6d83d2de20f98d7758a43d048aab26b8068adf5b
55
+ 131b1fca728baf2f799955fd09bc77b9725e4236 8b8edfbf3bc675f2c9ec5908168185edc8993d13
56
+ 133a82f8ba137b182b15e1504d6917f67de5326b 4efd868806e4a199c6b4ec6cb79538785f1ad9a4
57
+ 139e019d5dfdd074fec93f61437101522b1fcbf0 924623d1024e7b7ea45ec4d087a8e38ecb036e45
58
+ 1417f4f6f16d7f7b0572baab66f6cb91f5c5d62c 7d3ab92fd8e5a0815aeacda809bb968d0b91da91
59
+ 151fb62ddaafd88d077e22c373d307d3f3eb134c 4e71f4a77200c0cade5bc8da5742d64755d82b17
60
+ 161610cfd09df0b95f6f1b2d55490e66eef5cf27 ec2956c6f00ddd15a35e9a50fb1bc9b1948a1352
61
+ 1692d2dedf95b5b68b51011863a6a8cb33ee0f32 5a0e392ab3cb91a3d843eee389ccb31d178d0ae2
62
+ 172163876e4aac6a387087b4a2df035551820057 a0a64f596ed41a4ec355cfae902e1a9214f1d6c8
63
+ 181b2e6ff046b5c24085c2e152f18c4a19617c00 66a1acd5c4ffbb52c9596f460ba90aa56b624cd4
64
+ 1978520bf1eb1abb1ea3b11d188f245efbabda6c b6322103c45085d109f4340b8a2e773956334b21
65
+ 19860283415046070c274525e017885e09ffc6a6 3f703b3c77e7c44bb59535819aa97cd89069463f
66
+ 1a14660ae64fe6d0aafca8025ab9fc8696cfbbc7 2ee50f1da1324837f760e46eba3b88f550ca7406
67
+ 1a9e218ca6143a3d62c9dc98505404396af4a5aa 4ed5bf4b4a8dc8fc36729a0bacbc93cec5724139
68
+ 1ac6fb495b36a8a05244add6227f3c8124eec387 55f33a7a9d615d127eabb24de4c4f0157d35442d
69
+ 1baba31517ac985cd8e840b534e6ef8862742fa7 e1dba10af65500670565377902cd542e7ffcb46b
70
+ 1bc5f58cbcdbd569602da7e91d0ac0c54c9534a1 977e59df0c6c373e781e54f2e8d46df357d1a610
71
+ 1bd957f2a2c70cb19ebb8d846e96194ce909068c f0a38e323d01e606b5bf729869ea77429bfbef56
72
+ 1c9612b5270877e6af7ee9056c4d7ea34e436c9d 4834e28aebba0061008b1b7b60c1c4c4ca2c71ca
73
+ 1c96cab46d59226074240da105e42a168dcb9d7f e031253534c25fcc684f91b38ebecb7707186b7a
74
+ 1d3485d2cfe195acae0c88711958d5ea3daa873e 73224ce6d25b88af7eb0fdc7851a993d9b34d0c2
75
+ 1d602392ebd3563bb31906b7b02547fe688e7d0e 0c010c84d3baae8445334056aa92c455c8713fd1
76
+ 1d6382c1a9affcb0f6c73e20d3904c7fe0e7a6e2 9cef97fea09c12feae92eab775ad67614bd534e6
77
+ 1df64067cfb7b07488a66d961c123cc776511c26 f34d9d54eaa2f9b476a7b3226cc8d2611abc5ed9
78
+ 1e4f9cdb9cc5144be8213a2f24c3d00c9e49fe97 18213eca03e548453ce25b6feb50113ab4449687
79
+ 1eb25c6b6036995fdbbd909e8a189aa99f85091d 2eef00ac1822942633cfb7cc3f62c28fb1df9e6a
80
+ 1eb9bbd0d8ee2c9b29b15b2e3704a94c4eb599cb 051694586d77e4c5848d37d54c1f651752c7d087
81
+ 1f07e758095169c1f17de87ed12e453802a8a4ad 5c6c75b766b6a8283be8b494228cc5393d88e7ae
82
+ 1f4ef08af6d977aad02c2f87f296c404a0c050f2 2d43f452062aea01cc08c45aeace1d1805598143
83
+ 2162fb5869f885508819ef1eb2f1fbe2ddcf868f f21042ce9cf4d9d8ccda5fb21ff28a567d763dc1
84
+ 217de207d593ed52d8455b8fa469e42454cf9187 1d1cf06417b8a778c37a61af44744d6f9398b8a4
85
+ 221b3cac5a5d81d2fbb704dbbd84f94d785359b8 a6f73ca08096bf5294fd71adccc9f5e1a517badf
86
+ 23732bde710d8235e5bf58b173fbf3f33a06cf95 548f6920f5c8dfc0e96757a8530c3b851fc3e1a2
87
+ 248eeb3fac324f5bccd5fd3cbb290d2e7ae9cad8 f9e48f0bf6977717ebea5072b4eee31baf2a1a92
88
+ 254314fd1b49a6ce03c4aea48ccaabea98792b50 d103bbdd600c32cc0d032621e26772e5dd7f520b
89
+ 256b3d412b9b81b2bf693b13f8c89ca59bdfaf52 9c6e106b07046f09eeb2c84b4e9c9439e894b7c0
90
+ 25c42d54038579caf5f0f124c4f2de4ccd052c42 b8d33832e24a6a7264bbf5b07e9b01ac2d721616
91
+ 26a2954bc43357b3c83c626766700e1b823f8d57 71ba95f10c428b3326dbb13d96ebfa6c1f750372
92
+ 26eade943c4ea226dea434adc3d7bea2ba927691 5be67f9c18dd6326cae050c59abaa10839cee1c1
93
+ 273039038f87814cc0eb53bd7493ba65306133e0 e8e37d333fc484d47a8a7deb1c3bfb8fd353a07f
94
+ 275156dfb84c0f27f28445ba19637bdc28c29939 b83827c338b922c32ad8ff567c7aca9652076eae
95
+ 27aaa5018dc22d89e067d3c636daceeb80e1d6b9 ae0e33ef1f41b6851d34ddc2e952dc1d08cfab41
96
+ 27f2ea89e4cefe88a679f58b793b60fda74bdb3c 4fcd420a6cf942ebe730e7caef8aa7c17dd007b6
97
+ 28bf1d7f8ddbe203cc1a9ae4e35b2f2636367d03 b5982d97dfaea583d64d3f268e92ceadbe6093cd
98
+ 290703f3490183998c13d14bfda9ee04c518c687 88c62d25f93e98bab97174f4731181112be7e20c
99
+ 2981066144ab2556f9a93c337832f207241544ca 40bbe28606e3cc3566c8c7cb915bf6a702983f63
100
+ 299225e70d5322367187120a33a6b665a8c750b7 141e8c6288b1922807a90e9c6b54fcaa6fea2dab
101
+ 2a9832ad91ccb8d934e22ccd16bd61e81852cd30 383f1c0c1b3ce19acebdf4bda19dbfa362efffb7
102
+ 2b1324b36ecf72f35859bd8b0861c032328ab182 7cbcb48eaad37f16dc7e87cf708fe074f03000bf
103
+ 2b2c8b8238cf5fe806eeaa2e226eddea24655893 ab3e68aa0ac0181e730b5ece5dee77c0dd634082
104
+ 2b3380017d96eb4a0d176828605900285be8275a 76cb26a828fd087768d6a55158e5c06161b49fc2
105
+ 2b74e74f3f1171b3e771d51a0fdbedab3992d9cc 6618ecc82240136972a77930338fa2ec9eed46a7
106
+ 2ca3c5f9eb07b8118ba19e1c643c55d5fbe06a44 8db2dfa5c2af9e551ce36e29bd5418f26b58d41b
107
+ 2d875903ad0ff4d3623e8c1b2e9bbecdd1230193 214eb0f4025e28767a7a128771ee67eeb17a0f83
108
+ 2df32e99e6e8865ffea49790344da140193d40dd fd500a68d9f022d4d1705428adae75e857c0c2f4
109
+ 2e144f3f5c924ed16e13e3d6a59d31a6610746ab 38b24c66d30484a6039da9439f213acadec1a1b1
110
+ 2e263caa4291d97333368b869f7a79699f95424a d241a279fb3237bc0117fda312183f9fed4f17b8
111
+ 2f94147639658fa907e907a54fc0391105c1c2c8 ba1b347fecc4b01528db8a3f4f6c4806fb7ec3a8
112
+ 318b0fabcd3f1e6864aa32e3187e5ae4c9839b52 0dd3c34ba58a29917f91b5b7e2af19b9e3cf36de
113
+ 32001435f6e98b3a27c0b67def0a7ff07ee83678 6fb36579eec005a8bd10f4c5c0da696d39377dce
114
+ 32a454e7fb0ea72c69377cf41cc78ac00a2d0631 6d9d6d18fd2a4456a00e29350a7828b30e8e8902
115
+ 32bd1fa23953404da079962c4d371c7b6a223bc5 45d96564edb3cb95da15dbf5eb5e9151ef7eff67
116
+ 33121cf2380b7679265968c97789bfea61fbd9ae 0122b23dce933745b4f8ed367acbd6b26a059e93
117
+ 33f0ceb2bd2744650bc781675ef3e94693f1bee8 14d059dde09c17f0d81bab7188cfe77ace0144e7
118
+ 340cbdf4b98712a4318c2c34673d693c78cc92bb b4a54c24826daf24245ad04b015b9d732c9f04ce
119
+ 3524c3a9e0e6c5cf46873bbcef40346234101100 74c88ab0e0f5cb5f01ca8196a7a8bb16b4e9c09b
120
+ 3550d7eab461bf64ef3c3c6f764858bee6e7e571 e8aba0acfea86ef0e40763ef6367eeea8e3bbbe9
121
+ 358977297ca9c9aae7d5536903abfaf14a739e96 460cbb1fe6a30a04dfff3f2abe9a3ef6935d8330
122
+ 35c3e1a602cd46405b75749ed833249ed891b5c3 6eeca79f8388386deeb955274610e3768384d381
123
+ 35dba6b481308c531e6c69bf7cdc229d9e599fe6 55a6cbc7563e5d862a927906713a3b10c5110f8c
124
+ 37db470659470a35b72bbcf80a1721a1a128d4ad f6887907d6389d932a8c3514c00cb334f43b3d73
125
+ 3818f90f5159805067bac8e28131f7a6a31cb3ac 656fd537b1a9aa3262ba618dc654291cee6fa5c5
126
+ 382943479c529cf30c140e92eccf4f9806728ce0 3831c29c85cada5fe29ea401dd979b80c8a4d72c
127
+ 389c2da1cc7c040801adcf98e82de5d2012dd50e b0b358b17c316646fafcbbd6c92ffa549b5bd408
128
+ 3928e393228dc00c9939348ddedd484ab20e9bb1 ac27a2ba1d2846429c22d73e2a941d89c1cd6912
129
+ 3958c17a509ef4762acc00d3e63ead77e270c4a2 dcf481e7ac83fabc67beac938af8fabe60662788
130
+ 3a9444dc5c9337306cf0c89647a8910a89d01f64 2da03551c064e9886aa3287a2a3e565fde5b3e92
131
+ 3b2efd72327d0f4d348ebe6bdc502704da4ec8fa 02615f01a1e7e82eee7c78340e50592ccac3e10a
132
+ 3b344f703c3b0dbba4cf1b085eab832e8fe401b9 4302103ad04cf78136b314df056456fd518f5817
133
+ 3b621a5498d4f25144b46d5da1a23d2581f8d645 89c8257dc59edfd3e52d60bdfd1943eb17774802
134
+ 3cc840a53cf98c7899dffa960654b07ca1145ddb 795682f482548c46035def77c2b3d2e65f627a97
135
+ 3cea68a1e980488a731d1d165302551d1d7ddc1c 65851cff8aefc7860db3a7dce85bf4d7cb6e3eb6
136
+ 3cfcf647896e8d74631dd0318efdfb9ed2fca95b 00d82e689e10a5f6e48ba2ac1ea3ca7e4d679c0e
137
+ 3d3edd64312b2ce0bd399fe1dc9e93f058e6d74a 7f42f49ca3064ab87fee2600ba7539bff5b1bc00
138
+ 3e1d07c21391bdf9be37760ecb26440f5c06b75d 3d4a3d6bd4df2dc1cfd5610fa33b033223124876
139
+ 3f1e490404a9964e9c7cc217b6f54daf0de815ba 0a0f75a987bbdebeaeb9e6ecfde5ef7dc8a00e9d
140
+ 3f5f866d69910905626a223bc1abe568c4cf714f 637e8076d4baefe903ce21ad03f1da39ed502b0a
141
+ 4018fec266a19c404a670d8ad2387088397cc179 cde2ccd1174135b6a3b707dc39c87c14f23fbe9d
142
+ 40e223c26e2031da84394ded6c03f49607b023f4 80cda0ebe631b389ad12cd4df31c07e0e7eae0df
143
+ 4182742dd97f9113244141cfbe05b45525d3ff90 0d9e1ea48aec2a52c8519755a44e209975acb34e
144
+ 41ca8912545b7496a17bcd7956d9dbc7fdee4ad5 deb43be12cfe3e2ca17e2ea772a544ed61e9b21c
145
+ 444397a43d3fc05c2d779b98cc11f3638f26a0cd 1abc31500c0bb6d526a7af17ec13580396910e12
146
+ 44f3c4f733489a82c265c07568f9c0fe0292064a 132ce67cf2f04184aea11c55fbddf616620d800a
147
+ 454957241fd1c1624050587e62fd9544eb9624f7 bebeec0453b8a893d1d17e0bcd8624da8a832e95
148
+ 4554d1af7eb2905fbcbdb2911415d1ef55de4910 e927fa654b9ca37eba98d092ee09b90db30ff007
149
+ 457a688cbc51fdfff1e36e871a5d6890713cc51d 1147581df53b12f56c13ea470631c5e86cde6a5d
150
+ 458b4705d33d3903695727ff9ecbe65246ea811b b6a21a0c34734debfc58e476e89cc7c02f449316
151
+ 45bbf3455a2f4236c3eb4c0b4d39367ab67397b0 dcb457bba0a3952084f0ccf28ab578878e4f52fd
152
+ 45c624d87da3f9a129482bf5567d471865ca9b94 60087fb711a77ad2230735ad144159a15a1f541d
153
+ 4628c62f1a5936ec78d5669f59df38e067a777b0 55b89a6fd04d877357b379c7338431ffdd65da06
154
+ 4634f78eea39a6e99f7d62cf24f83ad544283214 72ed2e43abdee7b50825ea7ac4701534f4ffca66
155
+ 4679cbbc0b9e863b3944da3c580bf23b14411eff 20ff1033d3562c71ba63c6165f07d63f50c1d55a
156
+ 467d3c22ef6efa82a21d000ffad09bf199c83385 01867c5cc5219c46338538f5493cac0a0bb0ce83
157
+ 469f1941da346d03a6034c10541ba3e28b00cd02 819a7092105c4635dcfe6a5f305e72a056648cf4
158
+ 46bfd18fef3e31a05d7544bd788f3ffc090b24ca 3d5c19d9451309cf99933ed2f603eef70523c7df
159
+ 46c9e545dc22cf237d31b5366bdc4045be7550d8 e6ce85832f91a9ff9e333ede0d76dab71ea8d31c
160
+ 47aab73c5456c87f27e93f6aa3a5f509813b7013 d2ddf1513bfde975928e59394d121db287fb7745
161
+ 4860fa2767c2ab35070942ef8868015cac65a23b 43a6be668201eaf0079d9bc457e72ed2637e400e
162
+ 48a4fec8b230c463cbb0203d3dd5e7f256f54b0e c23f5f1b1d27fad34a44701956fe6db3b641ca3c
163
+ 4925449b54b98edaeb19c9386946943ea46ec1ef ae5d5ba05f2e49cd01d491d8a3d0d6aa7e063d03
164
+ 492eefa82bf5d09694c5d59f54c4382dfa5543d5 8372c73b536a95ec6e69facac6bce8b741b5a8f8
165
+ 494103141831f9fd894f19c313c02da28094172f 9aad387f8dc58d62d61b9e529ba622a5d445105d
166
+ 49883d44faab0571873a83bd6c142b2688ce4eb7 1166d8d8a3ce6a624bcbd61939bbf920eede9e5f
167
+ 49c5cbcd8db854f0a6c8db832b6ea96f3d4f4120 3c60a51dd1eca6ec87efd31a043148dde0ca0e78
168
+ 4a5962eaa44bbbf6bf5aa6a3a6645fcf0969b8a9 39a2875a832d26e213bf52ebc65e50ad736d8c70
169
+ 4a609341b2ab777ac64537c2d7e1a43b9de2cebe 58172510680b1f047f0397b55ab9508df53210ef
170
+ 4a8e5f6707e411e65eb7889d5405f54f77fa8b2a 2fd89a2d560ab329426fd12a658413816bdafbd5
171
+ 4ad1a2a9fcf96f7eaf81fef34a20d5a1a3205d4b 6f1d0e440665b07a1f2cff7bb72a3ae6dcb68dcf
172
+ 4bdab7e457507a6a54544abd45ee3c33708ebf3a 681869ca2bd5c3d258bff3dbbb08b79bbc64a7e0
173
+ 4bf4e9e22089a7577548435f567e0f2338c16156 8d16122ed5f3a0a98a0f88b610e585754f7dfd51
174
+ 4cd58d997f175d4bde087caa7c571bc34cae9f2a f1990b49e81de901cb2e860fb0f32e6ac2c6bf49
175
+ 4e58af0c77893f3aabc190555f996cb1da12f103 8cbe86439696f076fe5188c0fcdfc32ec8e3e7e4
176
+ 4e77d7b906a25d49d881b0adf39671966dfa0071 c77ce891defc1a2e4d67565279c0ff10fa58b303
177
+ 4e95fb2c0f62cfbd8527a4d1b9ccca081b52d617 2d2d3e9ff2b45112a3046006c0c114f1d793e049
178
+ 4f0b2bcc99789138d9d53665c509972ff31962d1 4f1cdeed8ef3ca7cc724fb5dc9327478c9bb9e10
179
+ 4f11ecdf867b1739f99bcf2dbb6a472a201e66a8 326210fe095e53cf878b60cb2ba1c06c6dd4d242
180
+ 4f6a8bb93426bb4df054524cd05af89e7b9707eb 570509915b81944f3586eef1c7735aca2ecb972d
181
+ 4f9c3845302cdae83624bdef099dd19006cd6f50 0c0f170301bda40f80922a59c8d04b39ce99b5c9
182
+ 4f9f5c757e926776ebb29ac9b9fa51e2d8838080 869f232bcd4a9838fe69427da708f8a5ca11888f
183
+ 4fec0e14663697e1eee8030bcb298a5dff89bb9c 36038dd8d4361a88b321df57e7fb4e63723923af
184
+ 501571d4b7aef5a9133de1762eeaf98159707c58 8cc6c8b6fc04727314354110f994e4971e8512f8
185
+ 510e9a4f7746040b1d6b09e700cfd3012aef145c 042ea1bf2abb8b6597467195865595474c466dcc
186
+ 5143828d65d9894a78b015a0048e496ed8ce0bb5 da9552b1783084299809ea8f37b969524885de67
187
+ 51b44f65da8c051236d9601bd51ae5d9dd681502 c2c30a05e048a1de593be6eff59043b9033094e0
188
+ 51e4664887549b6ab8ff51a2abe4d6a717566dd1 35811ea801bba298949b8f65f77fdfe81b0b7fa9
189
+ 51f579c32b6b4ef71de11f02b478e438dbc55ec6 47b4567f8d0619909606494860d25dfcc98889b6
190
+ 534f79be94138a09d3b579a6c9b227e4131ebb7b 9e512c44b7e1bd0fd5388a2419bb166498456bbd
191
+ 53f769041eafadef730099bf07fcf0641461fe7b 058d2f68eb351f35fc761b0a451ac32416b71152
192
+ 544730569f94a094d5708cb766ea80d0de40fbbb 5ea511e4cd562b2a369d8b00ca02e01cfc9d0f6b
193
+ 54bf70c301917b2a659ffbda9da7e613176f7f44 f08cd47ac2354ff77388dbc16e993737a60176c6
194
+ 54ec65f32f3f240faa6836d2cdb72ddd3db169e1 f87f42750d76ccbf4a9f345db1863180cc4f28cf
195
+ 5541ca8e7a9ef4ca1ea4c02f314bd54938946d22 4e550003606c682f162ade3db32f22f32cb1dc8c
196
+ 55498531be525325a2863675fc4f89f3eea7284b 41041e0052129dc22ca2335a895c336f4acfa675
197
+ 554c66eb48f1dfa30745c64f6c4105b155526a80 2a637e5c3732a17ceb20ea2b8c0978cc2aced1c5
198
+ 555cfe414e2b21b38647558773ad2b8f6002ed4b 18478ad987e0c0ec8d7dbf20979eef65150f15ad
199
+ 57325d7e2f2cfc1835cb5abc7e0d11ebaabe4719 7fcb332432b535922d91da9bb17b204c22fcd728
200
+ 574cb5167bec4be3eea3661c0db4fd09e89f6835 6fb70c336b2ae53a0cb2ed48294e32c55041e55f
201
+ 578042315644a2c6dc25045ddaa2c276a1c8018b 8e8da625692c2d67be6b0632e933f578d5e25ae6
202
+ 57b1747b0258739ccaa813b9ac4adf940217b5ea 50aebb6c330dbcb7c916566db4b21334d32283f9
203
+ 582ef4fb675cb224e6d5e04eac0a784fc402a5e7 4f50be09c7e7c23078927856a5c49b682eee7847
204
+ 5837c894962bfd6e7e9352fcbb84ef0e2d0947a6 0da80c4645296f873f407e867215755b42321fb3
205
+ 58406cb75316de95e167f88ee16e55475b62237c 47b903edd795564c667a0d1f394cd5baafefcc54
206
+ 59861bfa6b66e8b46783f067844f525a270ac5e3 d7aef147997b8018368741984c65984e5390eab4
207
+ 598b7c5a0e1734fc6ec3ba0922b6d11e5502b30a 6f431e18a061a142a948518f04619d634ca4fb8e
208
+ 59a29800f8818267ab7a92397069db7fed3c9c9d 3afff6ff108f6d00b9be3eab6423f844f4b95189
209
+ 5a2840568fec5034ffd9ea2b703684122bf90d38 60e94bc86604ed961d403b16e82b06e169a4e941
210
+ 5a90ff3c792996a34ec8e555f69cda1eadc16af8 42b2331d1bc1b1f3b7dd65bf782b9a432bcd59c7
211
+ 5a95882cf0fbf83ed7890c06b5c32ca2caeff9d2 7683cfa7bd66115fe782c8bf163056218e57f34a
212
+ 5a9b8845608cc9fffe22e15ffc06b6e71bdc3021 fc1c5f98f6a0fbe5ace736d893d7a5cc5f8c2008
213
+ 5b6639ed637e17590156bc7b0e823c123d0fe060 8c077237172e8efe4e774d843229fb1bf81a6fdd
214
+ 5bd48bbc65185b4cc9b176b01ff1ef2e2211361e f1c421a24a4362a171c776b89d94b787c3d03e0b
215
+ 5c19832191fab8a97016b3a4e9a1d742713b60f7 9ba5cd5d303657dc00e019e82304beab0dc0b95b
216
+ 5cdc7896564c02ad2be71c2997e3587e2639555e ad1306706ce109b3da1bb7b51759d6bd3c0bf1e7
217
+ 5d793faef88345fc35d9c0c512bfe4e8d846666e 405844b187dc8af0eb43b5ce24d90159b6eb1fb1
218
+ 5d9f28e01bdbdc1de4d8aa27e367997fc13a70e5 e56ab4dd1cf2181a029a0d349b3915b10750cfb4
219
+ 5df48abab2aa2947fb07a666e90289cdc8df0426 4e544f8aaab41bcbefc74483beba12be34920157
220
+ 5f2394cbb8c14dce1e9801c4f137d0a774bed668 8103c49f77c0dfc26ac47f13c122427595e8957b
221
+ 5f62f6b8d8dcd596b90d117cc29dfdc8da0cdf41 366e63288a08f8ac73e805b21c1d485c319169f6
222
+ 5fd950f541721413a470f907e54bfd26c4b3fdd4 8271671365ef3d2a1d55c464047d6a18f8170aa8
223
+ 601352e6b512a198e8e8a50ad2a57c0a5b32495f ff2216b119dc7cee3386da3b047e2bfb1dc03af5
224
+ 61ba5e8f8f5dc30e4b8bd3ee395116dbf59deab1 ba08db48af858eefa00a075d5f49eefbbb4553d1
225
+ 6232186e3169003b2e5f78824c1eda955cb960d4 e6f521aaede82f98bc48dda0387211002a72f2fa
226
+ 624347a311b51fd324794569e1b5e472e5c9821d 2f74a6b71deb7c7c63d2c3e6e8a4cc55a31a0797
227
+ 6370d78a316d10d48d04b7b11458d45f68b268e5 b97a9a1dfc6ac57d1e8aa3880e043f9f45b93e1c
228
+ 639055ebd003e23a75cee7f08c61c254c71c9ef5 e338eed68c5c8fca6e9fd2fc319d9529b396047c
229
+ 639f7c14d1357f298422ae8b33e7f2ecd855cba4 324974a0d2dfb598e9d7bdec4449ed9a8a93c2d8
230
+ 64752e29cf000e260a5414435596376887f16d4d 4d615a719201b268fdf337a2c4a9a58aed771790
231
+ 64944f52a7d06f22f9545dcc9be61f15a0c67f8b 7604186abb43b90e3cedf289564efefb5cb24a45
232
+ 64a905002b4cecb42fccaea96d1095c338e163e8 0a705ae90f6d6d553aee675cbb13ec17e8740d76
233
+ 65572f2c197ae25e70dad1230bf06cbfb634cebd 89c2bdf522823a433c297cb57b06d0e293aec98c
234
+ 65d2fb9bf8599d020de4d86c975f160448065cf9 5565593185537f1a931e912972c95abe236df90d
235
+ 6795e9b56b97bc0c7cbe9fb9923a5a8aeb7f4c8d 3f4d6f0f50eeb005561fd89a014ac5d0abc2d6de
236
+ 67977911b7b38ad7fd6c6c8da0bd3a993e708030 d759da5efb921600946c663eeb1911607f488587
237
+ 67d9b04c92f5a8be4a90469fefeb7e045b5822a9 64b94179931d1c9ae3a4a097ea468cd935d12277
238
+ 6886873d59937d4977d44458b6ba8d7cebd5e0fc 66ca31eaff542a28597c18cdf3c6d33924cb7e8d
239
+ 68c57408b0cea041a1ac1c880a541c9b5f2b3ccc 55eb0751bc1be43b846233709d8988af037d090f
240
+ 69b709553e41c10b612c6644afaa2091202804a4 a953704055b621bf886d49046deb06ede67c28ae
241
+ 6b18f568c223dbc0effda9d8556d7a8718bbf254 85f89b7447e3a259e286f71557dd080c031a1874
242
+ 6baad75ddff3f2e88a45f6381818cf1529e750b6 6ddcdda021b86801679f214a273cdab3285c22ee
243
+ 6bb938f38067b40080a9ea45243267927f49356a 7c1088bb9f2ba1e187e4ec1fa5cdfdf9cef8fed4
244
+ 6bf769c4e6ead56e5786ad809ccfb405ba0a1917 aeeaaa468d543a348bc41a1d8ec5011e3728d9c3
245
+ 6c562965c0c3f37d44a21f87066dd6cebc7dcccf 733ce501ab05971566aeadaebbb33d6b6389bb41
246
+ 6c80a2a9d468211880d8cb9ebf1b10a0f5c8ce1a 8c7730e668d9bb9707b6fa28041a7b5ba9b85d54
247
+ 6cfc13e68783648d7af7dee8703bccde7a1cbe26 adcd10e7e65df74b0459168b3dd0d80bcadb85f8
248
+ 6d75284651aa6ea3290acc3c485fd797860b4a8c d7ec499395183e153df74306353d67f00d945208
249
+ 6d8a0a79710d24405e1f794bc525d568077cabdc 405c52fb7c6fea73eb9b212cfd47f39ade5930a8
250
+ 6dc6f5b6e126e9c5bb8f262ca30dcc919bc303f5 f12ec3433499adc2526c2b67d7ce4fde6a73c892
251
+ 6de67af8968fc2f4d918ce2d292af360ebdbd73d 5b2559c540dc88cd58c741a6439847986f2d28f1
252
+ 6e24bea9430fd4b701fb1a79f92c7ed1628227cf 8190776805d9777cb26dacbb22cffb03547111a1
253
+ 6eceb23a8edda0e9ade6af52a1bd853265720479 041541d326a73ed77c3a1854daf88d8fb95a1d94
254
+ 6ee4c41474b4333e3d31e5f681b2dbf0c6b2986a 77209c77bf099590ca89ed6d90137e03240ba962
255
+ 6f017dca360d13043593ad9153ad926efe1e4ead 710f5d87bebc523526ae7dcf540a70939f8990cc
256
+ 6f14351b2732582f483008dd1604491511339a6e 6c3b5e35d84cffb0985a226522ae33fc5deb4d28
257
+ 719569fb23c74ced834bd1c58d41d743c07670b5 4e2f72b7023a7cf32d9a7171424ed802a91fe24b
258
+ 71ad2b505ea066c1f9f3638fd42a7ef801c68d14 a187babe8b3adc30ce2e89c93d8301a10b4cc9d2
259
+ 71b6c2730d3b70b54787c45b68fad7afe19ff746 ce50793c22250f9ed62255270f252f6d75dde747
260
+ 733e38812956cc1eaba3e31afe6e49660347a867 cf82cda638caf1f2035e6aac01e5af45d827b5cb
261
+ 73d598d44cfce433295ceaf539d9c9e34804295b 9181d977d74e659623eb5c5778981cd85ec120aa
262
+ 73e973c9b8b4e44abcf60d5030d9cf3c6e097543 70a94ad3de4ac069b3ac30368a912453e87fd5a4
263
+ 74a3d876eb8af5d012d025eb65b2dd9dc3646558 c9705bdd415608946d9e4a5b1f4cf65b7fa1eed7
264
+ 7601faf395c8b6b8466a7130c79eb8669c405732 ac8e67bc3c23fd455ea558ecb3b26bec460d674b
265
+ 7747e09ea8069af37c01e6b084ae1a7440a97b3a 2f5236ef11ee4b090d67e5e9b8d0327e4bb8899f
266
+ 77eb2000e3b8eee837d9d4da7e39a6303066a7f4 0b282e8f3c33ad32b464a07bd8d264222de5a29a
267
+ 7845859f8c0e4b74e20822d4b9ca5137185a6df7 aca71daad74fc8f6308eeb98dcb20090b704b8ac
268
+ 7b222e378928afaed7a967f30a45718960220c92 418bda6820bd3fb7853d9e50c5f2cb53a1f20238
269
+ 7c609e95c18539042cfae75f18775957a0a890b4 e3c094747c1e907aaa903a4633ee8406ae843bca
270
+ 7c7cac62e8117539b3075cffd01034e5dee70354 7d7679e2c65b88c95efc93b02c6ded305aee28d9
271
+ 7cde0f58fff6ad6569a1f85727e359e9249c266f f10e8b3d1b8c8b195e866dd7bb968dea4975baf3
272
+ 7cf742be18890ee866ac5493732cee7b3ca8cc12 af02e6886a7a776c5f52a808d92807de4f931337
273
+ 7d37f9cedac5d790759cf1fbc264d0ea2897957e fcc532e1d9d4b6a5bb886f9756af9427231f70ba
274
+ 7d82ebfdc856f65d8c39dbddca9d68335a2f3931 74f86425ea35b6a0709b597644a221ff90be61a1
275
+ 7e0651408aca6e97917c717d8603d3a376998192 ff9f2ab721f17b230df979f91ca1f6af2fcf14c6
276
+ 7e568f71f4a3e1d1bb689bc915130d06b5c38192 e5d389fbe37e693490b7c8b1f6312edbfee533a0
277
+ 8220ab57a7022f034b94600bafd4835daebe9ca9 9f93a9fb420d857859d64c5b23108d1c2eece9e4
278
+ 824eeb18b2f3a3fde1996b11c0112a131a93b236 0a1505955e0717ffc30f0397b8dfdf4f9e3f331d
279
+ 82a65b975bdd660bd369499fd1d8574f6fc8f832 b215f14f2d2d4c19546fb1b91b0774cb7ec93a8c
280
+ 82cdcf79f3ddec69935cc7ee7665c97a7adb435b e27f19c242fa713d0fa6e739f1ae63529d050fad
281
+ 831434d3cd5dd2055cc8e96ed4e2eaade581154f 8f51f500833cb3b84fd72da13092af16f3cb5547
282
+ 846a4a3b66a81cf69cc303970fe564fae64f3d79 8f754ca6f5fe4943e28a0946ed811da1cb1af79d
283
+ 84cf4955e1ea231b9a43ef7d865747765389d53b 232b7c0c0c638b095831b08a0f463de6d8564256
284
+ 8586e705adf1e14ebc6d2e072f2bf015931d8e5a 703bed5e5d01c077312120de5425db51461f0c0c
285
+ 8592cd384f25868bcd4bfc0affe32d1ba38b042a f99926e0a0704f0c194b6a7a9a3f36ee3a9e3897
286
+ 85a746039266e03ba5d9699849cbef1e78e8e2c8 f7d3d11eb3723c364ab440141ff537c793edbd96
287
+ 86a9614045be16f9e1c45a79d88b03704730ea0b ac4bc4fb803b611334e7f522ebb067936e5949d0
288
+ 886f9bdf68f6a6d7eb9e65d8c1c4588586fa58d7 b1ce0f4e4bfb324154ff29f847a9ad274ab04b17
289
+ 8875a8368e5304ee0344ee1aa7d523e58b47187e 3853ba13d5ddb1ba39997c65af186a2f92032865
290
+ 88ecc662607a9743027890d91f3ac2429232d3ca 6c69b8b962f1742ceb6acc02b4cd6e8d50abaf29
291
+ 88f7a060bcccc1fd8bd0eaedcf4d62503123976c fdc197b9450fc2b92397e1f6cbe4bef0e6a0b2c9
292
+ 8966729eb9c554b3c750a8c45d7665e8f66765d6 14845c4d81e2829142e1a6aaeadf2ff7c16f629e
293
+ 89c006a7d9cd67f23b4b696638a9d4b52d754189 5bf4043946eb99e002c32c79b68a7c27a4d9abad
294
+ 89dd38f71cf59784fe750a77bf8b228093a4afc3 9f7e8a007ca1a5ad1ed29a635e8cc174ade2ccca
295
+ 8a290e0e3e01251cd91da543fa8a640da6592484 6eca56b704e912cf26fd7b113f8f2461fbbedd72
296
+ 8acfa93df1d4f0f5dd7b1b85dea99ed5e7862cef 8371f8a137d35b340aff87e10d6fb027acf666d0
297
+ 8b79efd9c950c4370e03b85305b82f90b32b4250 958be7f558da041a8d8f778063285ed7f81bc5d4
298
+ 8ba38b438c13b32dcda0d1fd44d1d8950b70c6fd 887188965c584349130110ec71b77cb3c49b2606
299
+ 8bc394e48daaebfd81967fa9d12ba9aa07b6ea76 c887f110e3253db0bf7b6ffc23a3e1a8738ad17b
300
+ 8c1a4eb3fdd3c15d2b9a069bc1bb57716a4fd1b7 cb1720064488deeda80da950617dfed5c258b1bd
301
+ 8c948381711bdb15b4f8028dfb0b573e8d7ab222 be5fa2d07f19a955d728dce34fff27e927ec327d
302
+ 8cb094186162e675791b6a8c671a5c21cdffd1a9 4d73e7b0fada3c3f70cbe5b6f6a08a04d2fe725e
303
+ 8dbe669d39e057793b0d9fe92fded0906b2a53fa 3aa6a7a0824881f04ec8acc8d322e1282a86682d
304
+ 8dc4741b5862ff862797a302fbc992bb1c97e68a f82701a5ae58580dc35f40fc1e86f6ae8da1b6a1
305
+ 8e78eaeefdb81cdc74351edef21989f70daa59ad 96ba99280834a84c0cdf778bab3fecf1cdd16878
306
+ 8f1f2a27e651ce415168fcb9b080b7a86929c402 1dd6f27a59186f1e022f6c5de68b7fc093df8fb5
307
+ 8f550835f59d49cf4964d9d471ca75cbf2ac2724 f005ed124b8b6dd2ff9b7e0401e1d1e678ddeb71
308
+ 8f82eb5822565b089cdf73902b69c71aeb3fc595 588c7fdee1706f2df063330c2b32d7087bf5fa0c
309
+ 9183f59a081c45a7679076b8fd6791994c6366dd d67e2f4755dc54ea1c1f0f7bc5ab14cc8c13b399
310
+ 9196ae886676fb6c9c06bd19e1d5a09a5bbce50a 448a0c6a7b7dc964fcecf0dfae96b765fc613ca2
311
+ 91c2bb95722206e5750f268b530033ddf185cafe a1cca456d41110d7d8a7dbd759e89ed6442b9fe9
312
+ 91e2241f854bc5fc252313dc1c384e27e1cbf13e 0032d31aa4acbe68624dd2cf322a48772243d915
313
+ 91ff6042d2e2206d2ed87a50b4dadb5e243092ed b7f688b00ed267b05b23a6dcc841476d1acc13c6
314
+ 926a6416b9c8a278249ba7a4b5faab8e70e92ec7 be26485c62606dc817d6870e3955233d167630db
315
+ 926d4c3693b503ac128b32fe13b4eca21448a76d 7db80dd1653703aece31873735ed8806bacfc321
316
+ 92a961e02cce7fad2ec0c1900c10714e3de6ab46 2529ad95dd799216c40e01843c389aedc5e0bee6
317
+ 93599f80a55f89212fad1f0070915f6a5c47c0e5 bb26aa881bcf020390fe469702decce932913d69
318
+ 93a2a950d217d1dabc2949db05c49a2a1350f08c 107d2a9a8f3f0d9017006bf58c8057715cc70e10
319
+ 93a325d4de7d9508cdb1b8c88d23dcb6f253cbdc 1d6eaaa92bbfa1b8103edd51d36dc71dfb6a16f4
320
+ 93bbf1e351ce9a57bea421b1bbb4cbb07ba295b1 ac5a1be14787100c943e1ac598e4cd52a104d932
321
+ 93fdde5bdcfa20ed980c8c9261c5df0d34fc1786 44f621da0f58d305b6b1a688b334eebe13df7d04
322
+ 94cb3d42ed6ec708f430c7423812ed7ac4012e97 0ffa4afb77df16464ee7d7e101854f21952bf1e4
323
+ 962e9957f1f849fb4f1705c876d199a5c8a28013 26b435e60e4999e59bd71d051872c40469f61947
324
+ 96819c5185dad6e330c18a5714d6f68113132c6b 3b71a62d9d9bd9da963642ed6a08aa0aa544e8fc
325
+ 969a75cfa4dc4325da17ca26c4176f91814eca38 3af238b743b1aee24fb1ce31150291dc70ebe4ff
326
+ 96a4992bec2248b0ca1b8dfaccb9ecf30b37ca4f 50402c71e330cec1b6a16cf0878f84231dc80a9b
327
+ 96cadecf7fe6d990778991e674ffad82ca02bad9 dc74a93ac5354cf62c6942936069b67bd894b1c6
328
+ 96db360d7957491877777a0d9c76afa8dcf6ac8a d4868f145305357fc2d21e2d8bc03d1b7d5cd0da
329
+ 970da1e1bebf9bb8948898594e38212c052a4766 ef0a012b4569e08cef921423ad55426b43729d80
330
+ 97315bbed499f51f42a0b6aad87aaed13cd8be57 6b18ee8451a36c53cf29f9487cc719c8467079ce
331
+ 975ec14a11f88872c3d0f2b2bc1246e73c417fdc f0164ea04a5985729d8ac5e5aee7e6f2627e6a3b
332
+ 985fb3819633d3a10d035325f6735bc324a2830a 6516f1cd95f6056956c0a9961d5eb28388614a1e
333
+ 986b522b1378c3a33ea130dd08395c37cabff2f3 6e36ad45b38c4f68cb77740f0c2d07ee2e8d1c95
334
+ 9883fa7aa1ebf5bdd0cc4579ddd035b63ce59139 0472a3341ae86c0031aaef58d46c559fe18af4cf
335
+ 990beb83cccd4fea8bbf373cdb3c6114cc11db02 8d19eeb593dfd5c2a32160d897dcef7a39ad31ff
336
+ 9973777b53e11183ac02c9733052f0a70f76ee63 837915f21239f1e154737aebc58f0a91c849f424
337
+ 9a3d1c193976c2b3f285cf2c8e43db9919a94615 84b1c62c9b4cb7afa145783626bed9b12ff624ae
338
+ 9ae8e8a35c0ce1f6aabb1ff95fff28a2bb630346 7b5d905fd1fa1b20d92b09b86e7507c56b7ce582
339
+ 9b33bfd7b7f1acc06f2ac9986ed45343a94f9310 3b4f4eeb56e9886412c5b89295ee86368628892f
340
+ 9b47b250418b526dc34a6172bf4e9463cb512889 77b9858be0f011c5cf5536e81a16376f0490d673
341
+ 9bdd11c5f7ba19adc9f5f3e97e18f7008a1d0df6 d3d9ecd3422181f6d06bed554eed464b32116e01
342
+ 9d0aed93a1d76ca13acf3f3930706b30b5c2c4cc 448be9cf5e3ebb5ce8964de58d2736ec28d5f743
343
+ 9eab0b8ea82ef3d2e99d557946836ade0207c46a 0e538ae698a204118201ebdf8e4cfe4426d55d63
344
+ 9eda297c615bea39cc7e4d7834f3442133d0ecda d20bcd99e3220aa16762afa8f58609469c07022f
345
+ 9f4fe461836b8087a2a632b6c6cee2258b64eb2c f7e556e91f11b9d5b153707635479538dd7855b8
346
+ 9f88c4e1f7abc94bc2af71dc503b169d91e0b84a 8a14804adb2a05d5677d3a900ce55fe958cb0209
347
+ a065e05f47c84e202f984179f70f2b757607e3c5 a8b8e5b7d5a1d85fee7a9a648355ecd850c7c40d
348
+ a09f3dc4268ea68fea0009da7cc2d1164cb3fe3b 8f1dea465913c40afac68bccd453d10459886262
349
+ a0fda043c94c51694d1df63203c42cd04c771699 220650777126d78f5d3e9f7c10eb0da57e5e3a40
350
+ a1c3fe528aed1963639c59f61b775bf6a1bc4955 7757f6a1267f79f4b7a29191525974ed4aaa5304
351
+ a209219f8097117f289f37689e2d2e819fd55cb4 ee17853c6ef4ef5b10ebe435b338598b306230cf
352
+ a3e0ccbc1977519a56a17b42b99c9237e2ffd538 298db34c05d1c5e5ea170492400b892a27dde8d2
353
+ a43966b80b197550636012837c83c2352efdcad0 1b14feb539bdb552ff4e67edcbbb421140384d55
354
+ a4f39c5cd7d1582e44d46195b0ad1a20757f9cf8 790e42288535edf71d51b127e7aa96ed955106b2
355
+ a5759ebacc7feca54e6e2fa178585860be079123 7d8fbaf114db1f62fef2ebad35cf51f8abd923ee
356
+ a5bfdeb011c518b851499d2bbb0c2f4defc6bc49 eef53980224563f0b1dab366e292398d35440e74
357
+ a615d43777dc94afcf488943af8b08c25cc58d00 fa220a2e1ea6189f262b1dc9897059f97ccf767a
358
+ a719fa6692663c3594c4039a65a3ffe96da3e746 b11383b80a786e65960cfb65498de8fb2c629198
359
+ a7957f3473cdbcf050f2bc6e53a727f452896daa 8455c4b67ca3c8549177eed67d36ec5a217c61dd
360
+ a7a825c65ae644310fd1fa10b70666c6d02611b7 54644268c4ac8bb2a4845cea39166d25e5f3f5a6
361
+ a817fb6aa524f390e9ab16eca4d223ffc9070ed3 be5848d15cb05bfeac2887b51e4c5a852ead7ea9
362
+ a8b5c3e118b55b3bdb3c8c5c4900410fb235221d 7d260707b6ffddbcdd86695b6a5574483c5689be
363
+ a8db8c3a2a8375dc3ebe7de1575734d65065373d c8045b8c0c27f005ab9871f03cc90910222c8908
364
+ a8efab4e529bf308cb4e5df04d7ed52287832cf4 ee2845e5b7b88734c00b0e9bd2b941bca99e45d7
365
+ a8f67fe543b5bb90bd0b472d00a883c50b42ca70 35285ced93e3c47eb8da4b3c594e4ac4d50b05b2
366
+ a98383329b939d0ef2b5776153b043f45e6bfa0c 761a1a61ed1b1ea5f6bc8e56e61a9dfcc73488d9
367
+ aa8898f50c4f4aec08df6dd27f975f91595a497b 6442972d81e7cc82e8ab29bedfeb3a6cb3b257f5
368
+ aa9348a31213413bf5bab6cc54f41584171db015 ece39f042e31d8029d3cc2b6d12dc22452f91c72
369
+ aab3be2f5b76f4205110a62f1e533406ef717ac4 1e489f85255f8d3dbae49cbd6d4c729c9684b61d
370
+ abcea563487f34f9d42a102c129109634b7ef38d f5fd1d2149ce0a4c64392aea448ad16d62c5710a
371
+ abe37fb8e043cdbc007f9edf5f0a681e51bf62ff 734754d065124656144b07a6bf11a04be09796f4
372
+ adcfa0b5d882c405df6b68b2acfa4ea797fda607 78adadbabe8700cf1ba4060b5c869ecbbe2334bc
373
+ aec685cfc15ca9cd7538f3a054a9e6ce727c062b a778a01509596f20d00498f077dbae5fe2ffee2b
374
+ aecd99ce1cfd134fe1dc1800f5bb2440b7a10875 19f38ae378e8656f43eef6d98f51eef861981551
375
+ afab673b800b8f9a2bc0a0dc5157b8eb2cb2dcc0 3daf93c637911af49e4b0e9238566b654f27875e
376
+ b00b217279e06377edfbe5f3de6d7aa117cd8b8a e8612e50b3053a644c9b40fec752d5dd86ccefe5
377
+ b0336c85674df4b3ad1300639aeb0f04f268df19 f381023c6159888619ee1ac31932c6694d88ac96
378
+ b101c6a02a31a856a0c84e3e1eb318dbcfcc95d1 06600cd7ba3f9082eddb683c7a5037d51e6066de
379
+ b12888da9666508539636b0069c3c7a99f1bf718 74ee48ff6296c2d3f1966f3f271c01a201217dd9
380
+ b15512fda8a8ca49184539f9c7ff47c05de28343 434a41145ccd2fc42dde325ed7e20e079b88e709
381
+ b1c4929421e5edfcc229fbeaf7230e450c45375a 077c8ae9fbe1b0019474c649d9ea7bf9a22d0614
382
+ b2564a9fce25acc892d37c5cb53522548db75107 2c2c14c784fdd7ed742ce009fa3d0b2f5d83f0bf
383
+ b2b3fb044afe4864b6be58500e036f79f4261f78 8cdb9edc95e4c0639622f22d79bebb8a27db9da0
384
+ b33bc60ec11551c1e972a9ec28f116d5a6eea421 9611ffbf811a065a1b07fbfd1446c9461dc818e8
385
+ b3bf59a0b4bf4bc4353c853a8556109444ae0d50 25e54c8714e6513c5434759b47183e1f783e118a
386
+ b4105821fca35b345c45a914cdbfd5b6d4747365 b8ab4166b81f4acaf464ae36caba566943934b92
387
+ b459487a4d7d4fe725190a8abe103c9349e6657f 3e2495012c3f4777ad74dd476e153ccc298bcaf6
388
+ b47c1c6628b3619fc4a5c6c89c4fc7c78e94eae1 0aa08c18f43f662dbaa1d721bfb6e6d450f7e0bb
389
+ b481583c8f13690fc4d8d0dc00367e1453b35821 4157cfbd8bc174c1278534f1c17c3d542a0c93ba
390
+ b56e04f54f0f1d4422b1b6ff403a7ea591284f58 26e1f862e062bf46700c2a25259c5a851e88c42e
391
+ b59747417cc9593691eff47f1ac15e3c811461eb 83d47f444b7218189e5322ccf28f9ad20bb6d6e4
392
+ b5e3fffc8059496ad21167cd02b6796e1fa7f38b a923f5156fa82ac694b739551f639a028f8cfa21
393
+ b605b2f6e7f858d873e2615710e06c1acc0c1361 aaf897b7b30c665a0c84a17faadf1c509eab1b02
394
+ b70ce7ddb2fe7174d9f80b9ae22e57f18dbbc984 9ca0956c78b57ed627f44140e03d058eae4b66e7
395
+ b74c5d09f9424b7e475abc91451a9203ec06d837 3c4c8fc81c94acb1edcfd46bfac76cbfe7c854b1
396
+ b7f31d45a42885da355da8be857644428647aa2b 16cd7b301c7321410652f777b32e16e60661d199
397
+ b92c54aecf9a99386d99db8ad5b2f06b86f074e8 08ba6420f11eae17cd3eae435fdca19aefa4a5df
398
+ b98ac2672a7cbf2c405d4de32cc101f6ff6a12a9 90f17eacec695be52240a72134551e56e6a65ed4
399
+ b9a93b1b986c792f46cfb485ecf50d5006dd8583 c9c28051801f937002033e40e6b57a771351f0a3
400
+ b9caed38da099e1b75a08af6a06b2b7498513fd6 60ecd5b9a4b67563dcdf34f6d0a5261b4bdcd00c
401
+ b9d985f354cdcfbf0bd44d32a02f962eefa87c28 fe3fbe1033332b6bdb6a7473ab97da95f9d75d5c
402
+ ba1aab876727933900c2bae5470a6eb825285b51 7dce291d70cc4177e97af6bf84dcb01d043a44b8
403
+ ba59c5e50fe9461e12c2a08c0163bc8370e176a5 5916bd60c48328adaed1fc77aec13f6ae91e691b
404
+ bac7fb9679d38c5e0a4e08db837a04b696ef55be fef356a6483ae59758dfcd48dffe676228f40815
405
+ bb1cf4200dbb1919ec4388447b3641a4365e89ae 602005a383dbcce5dc0f5bcd5287120fe547fd68
406
+ bbc69cf8131dcd5c76c0f77a5cf4b5203c0449aa ff9d31a3c0a9105c761bcb2919686dc51dba11bf
407
+ bbe605dc465d7ae6ab29f541eccce154ed887444 d72feed142f9b693b859e2bb3476742947e94658
408
+ bc0b51bb3d084970c84d08ccc410887cf3ddba92 621d7844e1eea10198f02123119ad072bc67551a
409
+ bc1a75c915cb17bb7913370e13b210fd6a6bc5e6 8fc852290817731912dac72aa87b0025235f1d00
410
+ bc534214cf50bdd22ddbed0b9e589e46b43aefaf 8e680e35ede3080bb5ce2ac5b893454cd3b6886b
411
+ bc8d8c191a81713d8bb4a7cba1ac45a60fd2edfe 0d025e919386993d6b477ccd8e202caf87416cdb
412
+ bdfa59e4f543f71b5ee6d7beabc2adde7c08a950 d986dfb801d178fbe89bfc1d4b857d90eb18a60f
413
+ be5316bcd2f2927dc8e6ed4b333281cbd8d8c4ea 2db31aac1d750d41c4e8387254cfc8de68dbb967
414
+ bf36349c95fa928b8f1a09c83c5f93284092e058 51e1ff08f4bd25f9e7f6ffd8772e669a1ac3cbd0
415
+ bf572d30eda3f21feb1f57dd9e0f2f7ec5d2ebe4 83588ef8c228886955caf46e57c4b6e8d3526697
416
+ c0f593c8d3c6b9f63be8473c19ae75928b47795e 9460a420462dbd8fb9aa4b56c2bf3e8c7d2cefc8
417
+ c1141cd82ddd55f0bedc21d31e337cb849a3964e 4b16ebb6307a11bfd0b44e2ac6594f3248d1dacd
418
+ c15defb7037391503700e0ef7c89c2ed530ec82a a0945a396066b137a0fd0c5acb008a147f4a228c
419
+ c21a8aba532a9c9a9eea8edfb5ee959a4dd57a96 fda9c2691859c2c24db2bbb6b9939de70f5531ed
420
+ c301d8868c0c5ef68d1be144d4acd5baf893eaef f55e0947fa9144cc2a89f443e48c514765af3bb6
421
+ c33e465a28db865faf56c9f2e49896f3c8e6082f 9b6ac699d97edc16b17986cb82e7f1968aa8fe11
422
+ c34f8277846ea6ad2614a925cdd9013804c3db3f a9c1f373bae69cdf853a9c664fee058d60e060c3
423
+ c45c2dc6d4680ca2926611cdea48b5805b63ba09 8abfe90f7ea9da07554e75e17201c6ff415b7a56
424
+ c47b7ccd3e6e593787ea80b8576cf6b642a6a651 6ae7b1150768f086f4bbc8210f4a553be2831b0a
425
+ c48d9f27349045ac287c61fc60e319d37cde92f7 023553e620c01f89dcd1623a0f647a2c43858b33
426
+ c49700fa45295fbd81d4fc37db8a2163fd449341 44913f9948b1053908afb3e0cc10160755ed463e
427
+ c4e8086a40636f4d321c1e2dcc350ee4d119a0fe fba62e0beac58d7fcb5fca450b3fa4faaf9d1196
428
+ c50176e4fc7e7f2bf4d9e7823953fded7e4f8219 63130b5b23f9d77b66c803990a300083479c0b68
429
+ c50338391ea3bc06b5078fb03715be27c5654336 91646491f3311c287c2ac076bdab802a765c7a34
430
+ c6a287b950202a7463b3720597bbbeafb71feea5 42a6b014689ef6fb9a8abd463b7edc1f2c4943e1
431
+ c7224adbe7891d4e009d3a35f8e9858138565ef5 ff69bf4e27a2a32ff5893124fa2c9fffa4b4aa7c
432
+ c74c03456d9134904ba40d608bdde3c5ee9188a4 3b695b86da69694ffec0113287aab20946a864b5
433
+ c79d6d06333ec7c35b792e858beed3b750fc8738 539327af3c05cc816a00798cadaa8b22f068817b
434
+ c88ccf450bb18fc8858b8436b7447f39f6b06ffc 7a901ea7e560c813e42a0218574c221dc57e94d5
435
+ c8d535ad851bbced1b7bf234a9a662f3e7e0d4e7 7cd39ebf35d054bb97d5ccf08a01da0b655e82ba
436
+ c9be680d5dba261cd136177388aee707430faadc 54b8471b2fe1a37d285965f945fae362078494c6
437
+ cb8285de218fb9bebe5cf46045c7eeee3b791b16 a06ebe88d3c4a31745d94b57a3eaff5940825835
438
+ cc0911977cea378883334dba2eafac5eab12c9f5 4bac0927309bc67b6b3cfa35bd169f6b6c017388
439
+ cc9b37951d31bade00716760cb06eedd9aadc498 6d9b032e9b2a4e3a2bdc4d7bff376c5feb867e8e
440
+ ccd76782253976a1b6ac22eb7e35ba8ca3c345d3 69877df31a227db2c65ab9034588f0c4f315cf3d
441
+ cceaa9e1001773bb68750d6c26598664bf7013e7 d1db33f961edad1224733b773f2c378b92460beb
442
+ cd0498d1864dc76cce2616b6a6f6df092aead254 870959cf10ef7b45701b8a1ab03bdc3b6150fb01
443
+ cd23bdbb8e5934c6e3e2cac3cc31b5e76959b727 139783a9fe24afa21f7dfe3d2e5423b9272cfd7a
444
+ cd2b6e86967e941a70caf943862ad59dc864f07e 1027d84b0b1db394a76ae542c4f1a619e20e7a63
445
+ cd571fbb87842fd641ab73acbc1913e09a9b85fb 48b2b107dd619fdc8ca40a13f9f0beb0a20dc0c4
446
+ cfb49082b954b24547d812ca7b00ed65b33fd412 663b888011a64ed06e0c3381d1ae5737433829ce
447
+ cfebb6eaf806da623f36d47271f7ed72fec9d78f d7a73381364310ae20dfca44832633cf32202f9c
448
+ d01be62ed78b868344d467fb67fd722f6c3597c9 c0b2f890189c34420b2d63c3636e24f3f82ab7e5
449
+ d01fe9f71f4dbb5cc6bda01d455174ff1717633b 84cfec92b95a393a24b4f1d311a93d54bfc439ca
450
+ d056baa869f36bb6c8278986f3b81b247e9df10a 4b0de92b23093c23b0c688f96e3199ac65bdf234
451
+ d1eb01c1853677068e1d41aadff405224c57e982 d29afb8bbd9876698baa02eaaefb20e76782108c
452
+ d28423db5a75c24d5d796b3ad186fb633e75fa91 cb285919826c1c95abcdacf0fd5d856746707280
453
+ d2a959af444722892cb72f69e5321ce06e3882d4 c3816d78450f5afd4e6e01e51bd466408a69361f
454
+ d318ed8316a96d78c1136d43dca617d852a2d579 b5c2459cdefb5966a7515996ab01e1b27e75bdb8
455
+ d334ed2825259ed0a024fef0496d9986ba61e229 788c75f7efd2f57698e53f96e751d3a70f027795
456
+ d385870e28f032a7777e755f0132cfbcb0484daf d96c8f166a89b5317b96e9f31380a8f42b0094c9
457
+ d3cb173f3b066efbd1793477b18fbff88035c191 2bd22ade5d8b1b03201ab5829a6eafe3c316eccd
458
+ d532985c3d27c49f2517716ca9736d54358838ed 2dc5453d456639ab92c3a3d539b6479ea9e54e25
459
+ d55e6b05d2dbb8c18810d383ab86d16ff8b4edce 4633ea7f15a0a9468feba54b85926adcc6894686
460
+ d63cdac76e47b5921839a03ded6a4626c3cdc199 1d472e047a53396aa28bddbe3052c9a23b3ac452
461
+ d65f7bccd18c152666d340ea2e7c644986251fcd 52319e340cca80326b49f715070988931e837297
462
+ d68a7127548140be448c15d93e63f267fa682909 bd70cf32ea851ec8dee0b62e07f93576c75185d2
463
+ d6971145031c15ca62c42fef92f04c6511319ae3 044f704284c5ddaab067d2008e93be296404911d
464
+ d737eb42100ddb013f61a232439eef494af4e9af fb49a64280213bb6bff52ea38964f6c60f79c76d
465
+ d79b048e16f69de94eb470f28d7c08b43576c22d d3faf56d6af34060ebb10db2e88a69ba8d3803f4
466
+ d8d6a85419846b80c08846749c5addf4cee79781 a58cb9af0e941e80191506b713842155d5b9624e
467
+ d8f51da7a468226ac03047a01f543085f5f35d0e 0c3288d97903cd1ffbb8180e358f7cba8b9369bd
468
+ d98b035063d9484913b1609ff4608f735f92f61d f58c9be3bf7e73f0787f065713260057437aef4e
469
+ d9fc343bc351c5d5f04f9b0d4c5869e316816762 3e1b8c90c4f1a6e4f66555f1408a74d6afe25860
470
+ da4e5b887ee8dedc5911a231dd30c06b9e5ab1e1 53568e9aca5e5fa9ac4bc106159e811b9b26c1da
471
+ da52cc9d099c853ed3b1ca2a29d2c8a69ea6b993 e9caf50b2fec47dec7ffa74dfebb4bec87f27f28
472
+ dc51870746b4cfe2a44fbfcef79eaf38c04749a2 325337f9fd621bcdf9403a503bc4efd0b5b13696
473
+ dc937dc829add39e28d44e1e8415b0c831d15d9c 7cf480c21da68e2825f3ee9dedb0c763f0371bc6
474
+ dcb9f4616bd60a918f6310dd65ac57f100913266 15f2145f8711d9dc0127ae66e6cc31044aa1c893
475
+ dd1f28522f320362a60e10b1b7fda1990d5f78ca b9001a65d2f11bcbd21b7e69951005acdbe1780a
476
+ de99db8010cbaa39ace7ab86c688c2e85dce0ef6 d79ff75b2220ab228df2b4babb5f7312811d10b9
477
+ df0bc091475f8d03ede39b44248f97e513ab4073 abe864166e9752035d3d0f1de7db9e3cf14573ec
478
+ df7abbf69f95bbd820c0432dceb4f48621ffb0ff 496a2cf88c83994a63dc9485eda8ba082fa5fba2
479
+ dfa274dc5af9beb4077368b3940df5291d429c0d 2f0220790170a97c349230930b8849d75d46257d
480
+ dfb36cc24f5cbd139e24b1be720313740f9d8cbd d786f388c7073b8376258029a8186d1ab293aa01
481
+ dfb71f8ff7b4354652740e6a622c2631ec6d5e41 a8d1f41960f63b9002ebd8845815bfa1f7c1d30f
482
+ dfe65321466f6081f42dd80cfa48a59de1f7948e 3a82d96623a9326046d4412dd6b6b2c4b34f2252
483
+ e0048076377d905ffa7400d9a7fb411e8e007606 60aeef619244383100d111a004016b1fa5110ce7
484
+ e0812383c179967b1667a12df8221c4243b7bc6c 9c33962d770911226ae83bca73d808a90cdf53a8
485
+ e0dbda44b8b6d288fb8bd1c775f7f3369eda73f0 061d66fe6eb901102b9af40f36eed33e20897706
486
+ e0e7f5137a6d23440aad7fcd9133fa8d320795f4 ece58500fb1c26655e6aab32f4b647a5a06ea0f1
487
+ e23a4d2db8f8adba8d5ced08c287bbae016108d1 d9e09f4f45766db316f2d56dfdffc05885f2f512
488
+ e33275e65d0cd88e0c809d4b5d54039ac777c99d aaed2f54a9930161a58ba19a342fccfdf92d044d
489
+ e355dc319ac028e94943a39a7891c8b271ebcd1e c8b252bf3bd025343fd884428689cc4fad59598a
490
+ e3817bcddcd53698c497adf8c24890bcdd722ac1 d08f4226b1da43bf0543054064f04f37f36447f4
491
+ e3c2d8dbdbfd5f2c570de4784ffd4df6b6a633d7 59b830d092f8778f4213149348ae97f849927413
492
+ e3d4dfdf1047e1b1f2f2d59ab0f5bef4c62dcb24 662fb48ac3f038ecc93af0dc91a58e0d6dbad1f5
493
+ e4ac0d969c51e8ef808297020929e8c50c8a52de a4e313198721340af1c3c938ed086ef57267b6fd
494
+ e4ac557e01bd9d02eb648f2e3ed0e3399f524a9e 4eaf7fb8ccf3b146c246a66e3009607dbd170e45
495
+ e55539a774005dc51c5785a1b8bbd1eefe512f4e 30d4d7d4d7b8078380f6ee9cf4ffeab3baadd037
496
+ e56f46338c50746f75386c49f90414671cf9f70a d1f2a3647266b631b7897fff7c55de38f44a81a5
497
+ e632725c4cf848b2bb2942ce344f42ecfdb2ba51 3ce6c2d8351cb3ab64f74445a06b0013245518d1
498
+ e637cf89b2a888410d6a3145933ee7946cfb26e7 37d78b286b19fed14e0f1db0b2d05bde9eca7d4b
499
+ e7580d677f74c2e425ed382417ba5287817c0a20 59b3b6e5b860bea5dcacd1fd82944dfb8bc6b207
500
+ e776fe4708dd082e9ad1c43a502ba0755038cca7 0d93da80246199945c03c500645dafb1818ea976
501
+ e8b66c942b31c6bbb44697a16dfd2cc5e3283846 0786b68a1ca84dac25ded285be84d0ad62f7dcbb
502
+ e8b6dfb768ffdf0c170435a108ee05e14d16ac30 0689637a904310664bca8150c15b259991bdd196
503
+ e8f3fe0e73b40420949606ef8074b363667c923d 75fa185a967eed0f3169062fba06481d9b2fd25e
504
+ e9fa7f85379e9558cb3a60c599f3c5d14cf91b0b 833479b99626afd01b189f1fa78727f4b8073b65
505
+ eab2b93b198157636b9922ac8455f3b14065eb10 f998c3dec70728678fee3621a39bd77b7e230136
506
+ eb3433a841395ac0bb6102c4deec3ec34b2fd1f9 a0c50f5b63e96755d1daffb4b4e03c7b18d7ae67
507
+ eb6fd4d9c223f4383b25b30e82b921c5128b3733 98051b4cfbcf8d2437283dff7785e2fe5e6bceba
508
+ ec9d87deffa4aec594151db4f40f0670d6823904 2a17ef01e71408e08b767762030cb6777fd57408
509
+ ed1b9996d197199b5c6e4544c0bc084ada9dd260 ae8b4ddedb1d37282b0922b53c4a033656ef1cb9
510
+ ed37db1a6df764e45a0c99e38938330dab6069ba a19b0e15e19575a804110cd6ffb2003c3c5f0d60
511
+ ed7d2d3f47d092ae264a319c0f234ff608ece920 d3869bd99f53066cfc242e2617c1a5a8b283db05
512
+ ef27f45b42e5c0873d0523d1f93e635fa9494ca5 343cad6361e69b8bfb5bd9c7e9d5a83f25986768
513
+ efc7a24accec6a928f1395d29b2b748a271b80cc 8a49d1c7183955162f03d756b81bc60c38d5c1f8
514
+ eff2901c1c0540cd386a7590228d321a96c3f387 995094eb44c4d2e645df65f22e69c0b66d987d8e
515
+ f01d11b8ec7a7e9bf8d4f96b6ec1f07d1d5264c9 b73e72adb1c56ba028d2bc8c9b54b27d73fb00ae
516
+ f04d712ede6a05b925354a0e7415959b50498ebd b40f0005093b568cda46bf0e9fb28c05e9e5ef0c
517
+ f07bb90cb4797c4912bb3d5af5ca3bf19229fc5a 8ea0bfe528016117da42753316944eff31df0fb4
518
+ f0911b055c72081b798394510c981b16c2cdb195 3ead32a7f267a4eb91582fba755166cd890503c8
519
+ f0998ebe1eae97cb442e11216f7d2dfee7c07e79 1a7ea8b886801557762ab1eeda079330ef1a678a
520
+ f115d98f965c0f4d696cbf9867e35f5ff81cfd42 f113bcf72463ab5612c2f95f0d142831f5603c05
521
+ f1be0a1223af32c88e15d099a2fe1505cf5d90cf 21f4c22c203fbb5670396a2fa44500004e054f71
522
+ f1ca88b2f2aab87c188374f0b28e87bd6b477d4b 15543bf6fcc103afcb1b45a47a254f6eeb79dfe6
523
+ f2d2e2b179434da61b0e6c97c15ce487aa1b35a3 2124a49e0b379b872ea910df1588f76a04573883
524
+ f3c603303364c09da8fb7865bed320836bea58a5 f6502ebbacba9c26220d0c26ce9804028c9dbd0f
525
+ f4cf0f5b616554779fedfd738c55642ea82e937d b5ac03b0fb99df528e5645e6eafa1a3f4819ee3f
526
+ f5285e1ca7e974c9492cdda4d98b92f0010d0fc2 0870779eab66cae726664d349d3b120147bcde7f
527
+ f5306077081e292c922d8e6570c236d172189e3c c1f115cb720728b2724bd890f71d182e7fbcf7bc
528
+ f53d0cb38a909f273d2d385b594d8d460918f960 096d47ab387f1000b2d8f91852c8f8f1780a8769
529
+ f566d17aa268b74375954a4bb278d16ae9e5c466 07f87a587152da462bb09fce2b42e26cbd75cdae
530
+ f64f8585c433a5d1bc67d4f171dda6ee83ea8482 dc3e5de266e121fa5aa193fd036c2248ddf03faa
531
+ f6777ed7b9faf8cfb87e420880e5bc7fb770d845 c477be4dde450bf2fd02ddf369d71aad9e9d9af9
532
+ f6f3f1244cfbcf4b832c8ef9744f61679877cbb3 92b4c5b370bd9d6ad63c7fcd54e0fa3dc46a629e
533
+ f733bee4a549039bc2dde67913364c2d7e5629d0 da4e4210239681b9fc9e62d9cbe5ab0a50ecd3e9
534
+ f77946e569e7e848b69c3ed838bd07790cc5143a 0d4416d996ddda9538df61b0aec270766ab47a4f
535
+ f7e8c93efde43d9e9b2d0d9e71c98aee73247390 73e001eef5b98ce6afae9139213878c823b92c4d
536
+ f860f82a5758e56db2d3384de064e1ec0df69d25 ddba164bb873f2cff9531684da61fc5fbd5c2121
537
+ f8915fe6720d3844a0e3901d2134478313cb3a84 d7ead8b7b644b55caf401dfd3ce7bcb173f9b37c
538
+ f8d7f06cb4e0f62487e06af19418081cb092a3cc 19b212ae4e73be9e6ba12990f4a9c8ed4b2b7249
539
+ f93b04feb77e5743dcddd0f76b1685ac8d8a08f6 d582af6a30a86b3a4fdb2178c5bb4fd791181833
540
+ f979a5c407957758cb90d55529c8fdc15cae88d6 eaaafecd8f8cf7d08db681fef56740386233ce39
541
+ f9904745e48ac8a49036631792123567b47ffedd fe3de69e25f5172763e8bc9bfd6ded17cce12431
542
+ fa24d6fbaa24ecfb898acab38c69b0c094fe4a98 2745cf5eb988b0bc4de30d13c3f851999953d6f9
543
+ fbfd5258b9ec144f92ce702946df37dfa68430e1 2da3a4a93b66c2dec18967a38597ec068220587e
544
+ fc07b0d3ceae3a7a182857c119469339926b6d48 288fac6908636cd7d72fe11929482ef8c82aabaf
545
+ fc7553ad4c6b4ca7bb55b0ae676aff3e2ceab5e1 d206a3b464653bfe8b0f15cdc32c32717a75eb0d
546
+ fd13d961de611db280b2c83c0539eefe0a03b51c 50b65c7f2454af07b808838c8929801d1479b943
547
+ fd5297ac949d6c4c90462a96af43c12d05986742 f579559b50611037caba8a14592b345b113f2412
548
+ fdae23766df00240acabd46960f9dbfe5aa5796d 94ca6c6e3a17cc6f1d4bd00163db006ff072bd12
549
+ fdde19cd49bd16d31a2a6dc3d0a4b3d7ad8c22dd 2f94b3f7c9d5f02f4abb831641d49a01bf7cc113
550
+ fe11e17c5163b99f2559f2e00cc5d4ab9b9fb97c 814c50476134f31c5412256047a70b52ce97282e
551
+ ff07903b896dd1efc7665175296f0228a22e65ab 8e781950b8e12fe521cc4248abeb2bf30534fb1b
552
+ ff5b091b8d1c34fc0e395bc1ae67b39dba5f43db 4e4b822c270d00ecd7a40e4f2e6ea60b9e096cca
553
+ ff67e84cdb4c87ceed332b98a47640f1e392259a 6a0bb29bf5fb3c18ad85ef1e2cddc351ab8003b0
554
+ ffa01de3138a1b80fa768ee5538f72a0944de518 d364896c791fc93c731894ce3f97b38d9243b5f4
555
+ ffb5463f5af1554d8b01924f9d9b467c5942994d 57e849bd9493380d9f828c7770eb46d26e0ddcf7
..bfg-report/2024-06-22/12-17-17/protected-dirt/1df64067-HEAD.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ 688fe713674b914c519bef018aa47f7a8ba18d58,DELETE,regular-file,bfg.jar,14483456,
api/routers/painting.py CHANGED
@@ -1,4 +1,3 @@
1
- <<<<<<< HEAD
2
  from pathlib import Path
3
  import os
4
  import uuid
@@ -85,99 +84,12 @@ def augment_image(image_path, target_width, target_height, roi_scale, segmentati
85
  Tuple[Image.Image, Image.Image]: Augmented image and inverted mask.
86
  """
87
  image = Image.open(image_path)
88
- =======
89
- import sys
90
- sys.path.append("../scripts")
91
- from fastapi import APIRouter, File, UploadFile, HTTPException
92
- from pydantic import BaseModel
93
- import base64
94
- from io import BytesIO
95
- import uuid
96
- from inpainting_pipeline import AutoPaintingPipeline
97
- from s3_manager import S3ManagerService
98
- from PIL import Image
99
- import io
100
- from utils import ImageAugmentation
101
- from hydra import compose, initialize
102
- import lightning.pytorch as pl
103
- pl.seed_everything(42)
104
-
105
- router = APIRouter()
106
-
107
- def pil_to_b64_json(image):
108
- """
109
- Converts a PIL image to a base64-encoded JSON object.
110
-
111
- Args:
112
- image (PIL.Image.Image): The PIL image object to be converted.
113
-
114
- Returns:
115
- dict: A dictionary containing the image ID and the base64-encoded image.
116
-
117
- """
118
- image_id = str(uuid.uuid4())
119
- buffered = BytesIO()
120
- image.save(buffered, format="PNG")
121
- b64_image = base64.b64encode(buffered.getvalue()).decode("utf-8")
122
- return {"image_id": image_id, "b64_image": b64_image}
123
-
124
-
125
- def pil_to_s3_json(image: Image.Image, file_name) -> dict:
126
- """
127
- Uploads a PIL image to Amazon S3 and returns a JSON object containing the image ID and the signed URL.
128
-
129
- Args:
130
- image (PIL.Image.Image): The PIL image to be uploaded.
131
- file_name (str): The name of the file.
132
-
133
- Returns:
134
- dict: A JSON object containing the image ID and the signed URL.
135
-
136
- """
137
- image_id = str(uuid.uuid4())
138
- s3_uploader = S3ManagerService()
139
- image_bytes = io.BytesIO()
140
- image.save(image_bytes, format="PNG")
141
- image_bytes.seek(0)
142
-
143
- unique_file_name = s3_uploader.generate_unique_file_name(file_name)
144
- s3_uploader.upload_file(image_bytes, unique_file_name)
145
- signed_url = s3_uploader.generate_signed_url(
146
- unique_file_name, exp=43200
147
- ) # 12 hours
148
- return {"image_id": image_id, "url": signed_url}
149
-
150
-
151
- class InpaintingRequest(BaseModel):
152
- prompt: str
153
- negative_prompt: str
154
- num_inference_steps: int
155
- strength: float
156
- guidance_scale: float
157
-
158
- def augment_image(image, target_width, target_height, roi_scale, segmentation_model_name, detection_model_name):
159
- """
160
- Augments an image with a given prompt, model, and other parameters.
161
-
162
- Parameters:
163
- - image (str): The path to the image file.
164
- - target_width (int): The desired width of the augmented image.
165
- - target_height (int): The desired height of the augmented image.
166
- - roi_scale (float): The scale factor for the region of interest.
167
-
168
- Returns:
169
- - augmented_image (PIL.Image.Image): The augmented image.
170
- - inverted_mask (PIL.Image.Image): The inverted mask generated from the augmented image.
171
- """
172
- image = Image.open(image)
173
- >>>>>>> 85a7460 (added API folder)
174
  image_augmentation = ImageAugmentation(target_width, target_height, roi_scale)
175
  image = image_augmentation.extend_image(image)
176
  mask = image_augmentation.generate_mask_from_bbox(image, segmentation_model_name, detection_model_name)
177
  inverted_mask = image_augmentation.invert_mask(mask)
178
  return image, inverted_mask
179
 
180
- <<<<<<< HEAD
181
  def run_inference(cfg, image_path: str, request: InpaintingRequest):
182
  """
183
  Run inference using an inpainting pipeline on an image.
@@ -265,74 +177,10 @@ async def inpainting_inference(
265
  request_dict = json.loads(request_data)
266
  request = InpaintingRequest(**request_dict)
267
  result = run_inference(cfg, image_path, request)
268
- =======
269
- def run_inference(cfg: dict, image_path: str, prompt: str, negative_prompt: str, num_inference_steps: int, strength: float, guidance_scale: float):
270
- """
271
- Run inference using the provided configuration and input image.
272
-
273
- Args:
274
- cfg (dict): Configuration dictionary containing model parameters.
275
- image_path (str): Path to the input image file.
276
- prompt (str): Prompt for the inference process.
277
- negative_prompt (str): Negative prompt for the inference process.
278
- num_inference_steps (int): Number of inference steps to perform.
279
- strength (float): Strength parameter for the inference.
280
- guidance_scale (float): Guidance scale for the inference.
281
-
282
- Returns:
283
- dict: A JSON object containing the image ID and the signed URL.
284
-
285
- Raises:
286
- HTTPException: If an error occurs during the inference process.
287
-
288
- """
289
- image, mask_image = augment_image(image_path,
290
- cfg['target_width'],
291
- cfg['target_height'],
292
- cfg['roi_scale'],
293
- cfg['segmentation_model'],
294
- cfg['detection_model'])
295
-
296
- pipeline = AutoPaintingPipeline(model_name=cfg['model'],
297
- image=image,
298
- mask_image=mask_image,
299
- target_height=cfg['target_height'],
300
- target_width=cfg['target_width'])
301
- output = pipeline.run_inference(prompt=prompt,
302
- negative_prompt=negative_prompt,
303
- num_inference_steps=num_inference_steps,
304
- strength=strength,
305
- guidance_scale=guidance_scale)
306
- return pil_to_s3_json(output, file_name="output.png")
307
-
308
- @router.post("/kandinskyv2.2_inpainting")
309
- async def inpainting_inference(image: UploadFile = File(...),
310
- prompt: str = "",
311
- negative_prompt: str = "",
312
- num_inference_steps: int = 50,
313
- strength: float = 0.5,
314
- guidance_scale: float = 7.5):
315
- """
316
- Run the inpainting/outpainting inference pipeline.
317
- """
318
- try:
319
- image_bytes = await image.read()
320
- image_path = f"/tmp/{uuid.uuid4()}.png"
321
- with open(image_path, "wb") as f:
322
- f.write(image_bytes)
323
-
324
-
325
- with initialize(version_base=None,config_path="../../configs"):
326
- cfg = compose(config_name="inpainting")
327
-
328
- result = run_inference(cfg, image_path, prompt, negative_prompt, num_inference_steps, strength, guidance_scale)
329
-
330
- >>>>>>> 85a7460 (added API folder)
331
  return result
332
  except Exception as e:
333
  raise HTTPException(status_code=500, detail=str(e))
334
 
335
- <<<<<<< HEAD
336
  @router.post("/inpainting/batch")
337
  async def inpainting_batch_inference(
338
  images: List[UploadFile] = File(...),
@@ -366,6 +214,3 @@ async def inpainting_batch_inference(
366
  return results
367
  except Exception as e:
368
  raise HTTPException(status_code=500, detail=str(e))
369
- =======
370
-
371
- >>>>>>> 85a7460 (added API folder)
 
 
1
  from pathlib import Path
2
  import os
3
  import uuid
 
84
  Tuple[Image.Image, Image.Image]: Augmented image and inverted mask.
85
  """
86
  image = Image.open(image_path)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  image_augmentation = ImageAugmentation(target_width, target_height, roi_scale)
88
  image = image_augmentation.extend_image(image)
89
  mask = image_augmentation.generate_mask_from_bbox(image, segmentation_model_name, detection_model_name)
90
  inverted_mask = image_augmentation.invert_mask(mask)
91
  return image, inverted_mask
92
 
 
93
  def run_inference(cfg, image_path: str, request: InpaintingRequest):
94
  """
95
  Run inference using an inpainting pipeline on an image.
 
177
  request_dict = json.loads(request_data)
178
  request = InpaintingRequest(**request_dict)
179
  result = run_inference(cfg, image_path, request)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  return result
181
  except Exception as e:
182
  raise HTTPException(status_code=500, detail=str(e))
183
 
 
184
  @router.post("/inpainting/batch")
185
  async def inpainting_batch_inference(
186
  images: List[UploadFile] = File(...),
 
214
  return results
215
  except Exception as e:
216
  raise HTTPException(status_code=500, detail=str(e))
 
 
 
scripts/config.py CHANGED
@@ -1,5 +1,4 @@
1
- <<<<<<< HEAD
2
- <<<<<<< HEAD
3
  MODEL_NAME:str="stabilityai/stable-diffusion-xl-base-1.0"
4
  ADAPTER_NAME:str = "VikramSingh178/sdxl-lora-finetune-product-caption"
5
  ADAPTER_NAME_2:str = "VikramSingh178/Products10k-SDXL-Lora"
@@ -14,19 +13,6 @@ ENABLE_COMPILE:bool = True
14
  INPAINTING_MODEL_NAME:str = 'kandinsky-community/kandinsky-2-2-decoder-inpaint'
15
 
16
 
17
- =======
18
- MODEL_NAME="stabilityai/stable-diffusion-xl-base-1.0"
19
- ADAPTER_NAME = "VikramSingh178/sdxl-lora-finetune-product-caption"
20
- ADAPTER_NAME_2 = "VikramSingh178/Products10k-SDXL-Lora"
21
- VAE_NAME= "madebyollin/sdxl-vae-fp16-fix"
22
- DATASET_NAME= "hahminlew/kream-product-blip-captions"
23
- PROJECT_NAME = "Product Photography"
24
- PRODUCTS_10k_DATASET = "VikramSingh178/Products-10k-BLIP-captions"
25
- CAPTIONING_MODEL_NAME = "Salesforce/blip-image-captioning-base"
26
- SEGMENTATION_MODEL_NAME = "facebook/sam-vit-large"
27
- DETECTION_MODEL_NAME = "yolov8l"
28
- >>>>>>> a817fb6 (chore: Update .gitignore and add new files for inpainting pipeline)
29
-
30
 
31
 
32
  class Config:
@@ -86,18 +72,3 @@ class Config:
86
  self.debug_loss = False
87
 
88
 
89
- =======
90
- LOGS_DIR = '../logs'
91
- DATA_DIR = '../data'
92
- Project_Name = 'product_placement_api'
93
- entity = 'vikramxd'
94
- image_dir = '../sample_data'
95
- mask_dir = '../masks'
96
- segmentation_model = 'facebook/sam-vit-large'
97
- detection_model = 'yolov8l'
98
- kandinsky_model_name = 'kandinsky-community/kandinsky-2-2-decoder-inpaint'
99
- video_model_name = 'stabilityai/stable-video-diffusion-img2vid-xt'
100
- target_width = 2560
101
- target_height = 1440
102
- roi_scale = 0.6
103
- >>>>>>> aaed2f5 (Refactor config.py and models.py, and add new functions in segment_everything.py and video_pipeline.py)
 
1
+
 
2
  MODEL_NAME:str="stabilityai/stable-diffusion-xl-base-1.0"
3
  ADAPTER_NAME:str = "VikramSingh178/sdxl-lora-finetune-product-caption"
4
  ADAPTER_NAME_2:str = "VikramSingh178/Products10k-SDXL-Lora"
 
13
  INPAINTING_MODEL_NAME:str = 'kandinsky-community/kandinsky-2-2-decoder-inpaint'
14
 
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
 
18
  class Config:
 
72
  self.debug_loss = False
73
 
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
scripts/models.py DELETED
@@ -1,192 +0,0 @@
1
- from logger import rich_logger as l
2
- from wandb.integration.diffusers import autolog
3
- from config import Project_Name
4
- from clear_memory import clear_memory
5
- import numpy as np
6
- import torch
7
- from PIL import Image,ImageFilter,ImageOps
8
- from mask_generator import invert_mask
9
- from diffusers.utils import load_image
10
- import cv2
11
- from config import controlnet_adapter_model_name,controlnet_base_model_name
12
- from diffusers import ControlNetModel,StableDiffusionControlNetInpaintPipeline
13
- autolog(init=dict(project=Project_Name))
14
-
15
-
16
-
17
-
18
-
19
-
20
- def make_controlnet_condition(image: Image.Image) -> Image.Image:
21
- """
22
- Applies image processing operations to create a controlnet condition image.
23
-
24
- Args:
25
- image (PIL.Image.Image): The input image.
26
-
27
- Returns:
28
- PIL.Image.Image: The controlnet condition image.
29
- """
30
- image = np.array(image)
31
- image = cv2.Canny(image, 100, 200)
32
- image = image[:, :, None]
33
- image = np.concatenate([image, image, image], axis=2)
34
- image = Image.fromarray(image)
35
- return image
36
-
37
- <<<<<<< HEAD
38
- def make_inpaint_condition(init_image, mask_image):
39
- """
40
- Prepare the initial image for inpainting by applying a mask.
41
-
42
- Args:
43
- init_image (PIL.Image.Image): The initial image.
44
- mask_image (PIL.Image.Image): The mask image.
45
-
46
- Returns:
47
- torch.Tensor: The prepared initial image for inpainting.
48
-
49
- Raises:
50
- AssertionError: If the image and mask have different sizes.
51
-
52
- """
53
- # Prepare control image
54
- init_image = np.array(init_image.convert("RGB")).astype(np.float32) / 255.0
55
- mask_image = np.array(mask_image.convert("L")).astype(np.float32) / 255.0
56
-
57
- assert init_image.shape[0:1] == mask_image.shape[0:1], "image and image_mask must have the same image size"
58
- init_image[mask_image > 0.5] = -1.0 # set as masked pixel
59
- init_image = np.expand_dims(init_image, 0).transpose(0, 3, 1, 2)
60
- init_image = torch.from_numpy(init_image)
61
- return init_image
62
-
63
-
64
- def make_hint(image, depth_estimator):
65
- image = depth_estimator(image)["depth"]
66
- image = np.array(image)
67
- image = image[:, :, None]
68
- image = np.concatenate([image, image, image], axis=2)
69
- detected_map = torch.from_numpy(image).float() / 255.0
70
- hint = detected_map.permute(2, 0, 1)
71
- return hint
72
-
73
-
74
- =======
75
- >>>>>>> aaed2f5 (Refactor config.py and models.py, and add new functions in segment_everything.py and video_pipeline.py)
76
-
77
-
78
-
79
-
80
-
81
-
82
- def controlnet_inpainting_inference(prompt,
83
- image,
84
- mask_image,
85
- control_image,
86
- num_inference_steps=200,
87
- guidance_scale=1.2,
88
- strength=5.0,
89
- generator=torch.Generator(device="cpu").manual_seed(1)
90
- ) -> List[Image.Image]:
91
- """
92
- Perform inpainting inference on an image using the given parameters.
93
-
94
- Args:
95
- prompt: The prompt for the inpainting inference.
96
- image: The input image to be inpainted.
97
- mask_image: The mask image indicating the regions to be inpainted.
98
- controlnet_conditioning_image: The conditioning image for the controlnet.
99
- num_inference_steps: The number of inference steps to perform (default: 200).
100
- guidance_scale: The scale factor for the guidance loss (default: 1.2).
101
- strength: The strength of the inpainting (default: 5.0).
102
- generator: The random number generator for reproducibility (default: torch.Generator(device="cpu").manual_seed(1)).
103
-
104
- Returns:
105
- A list of inpainted images.
106
-
107
- """
108
- clear_memory()
109
- pipe = fetch_control_pipeline(controlnet_adapter_model_name, controlnet_base_model_name,kandinsky_model_name, control_image)
110
- image = pipe(prompt = prompt,num_inference_steps=num_inference_steps, generator=generator, eta=1.0, image=image, mask_image=mask_image,guidance_scale=guidance_scale,strenght=strength, control_image=control_image).images[0]
111
- return image
112
-
113
- def kandinsky_inpainting_inference(prompt, negative_prompt, image, mask_image):
114
- """
115
- Perform Kandinsky inpainting inference on the given image.
116
-
117
- Args:
118
- prompt (str): The prompt for the inpainting process.
119
- negative_prompt (str): The negative prompt for the inpainting process.
120
- image (PIL.Image.Image): The input image to be inpainted.
121
- mask_image (PIL.Image.Image): The mask image indicating the areas to be inpainted.
122
-
123
- Returns:
124
- PIL.Image.Image: The output inpainted image.
125
- """
126
- pipe = fetch_kandinsky_pipeline(controlnet_adapter_model_name, controlnet_base_model_name,kandinsky_model_name, image)
127
- output_image = pipe(prompt=prompt,negative_prompt=negative_prompt,image=image,mask_image=mask_image,num_inference_steps=200,strength=1.0).images[0]
128
- return output_image
129
-
130
-
131
-
132
- def kandinsky_controlnet_inpainting_inference(prompt, negative_prompt, image, hint, generator=torch.Generator(device="cuda").manual_seed(43)):
133
- """
134
- Perform inpainting inference using the Kandinsky ControlNet model.
135
-
136
- Args:
137
- prompt (str): The prompt for the inpainting process.
138
- negative_prompt (str): The negative prompt for the inpainting process.
139
- image (torch.Tensor): The input image for inpainting.
140
- hint (torch.Tensor): The hint for guiding the inpainting process.
141
- generator (torch.Generator, optional): The random number generator. Defaults to CUDA generator with seed 43.
142
-
143
- Returns:
144
- torch.Tensor: The inpainted image.
145
-
146
- """
147
- prior_pipe = fetch_kandinsky_prior_pipeline(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image)
148
- img_embed = prior_pipe(prompt=prompt, image=image, strength=1.0, generator=generator)
149
- negative_embed = prior_pipe(prompt=negative_prompt, image=image, strength=1, generator=generator)
150
- controlnet_pipe = fetch_kandinsky_img2img_pipeline(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image)
151
- image = controlnet_pipe(image=image, strength=1.0, image_embeds=img_embed.image_embeds, negative_image_embeds=negative_embed.image_embeds, hint=hint, num_inference_steps=200, generator=generator, height=768, width=768).images[0]
152
- return image
153
-
154
-
155
-
156
- <<<<<<< HEAD
157
- =======
158
-
159
-
160
-
161
- def image_to_video_pipeline(image, video_model_name, decode_chunk_size, motion_bucket_id, generator=torch.manual_seed(42)):
162
- """
163
- Converts an image to a video using a specified video model.
164
-
165
- Args:
166
- image (Image): The input image to convert to video.
167
- video_model_name (str): The name of the video model to use.
168
- decode_chunk_size (int): The size of the chunks to decode.
169
- motion_bucket_id (str): The ID of the motion bucket.
170
- generator (torch.Generator, optional): The random number generator. Defaults to torch.manual_seed(42).
171
-
172
- Returns:
173
- list: The frames of the generated video.
174
- """
175
- clear_memory()
176
- l.info("Stable Video Diffusion Image 2 Video pipeline Inference ->")
177
- pipe = fetch_video_pipeline(video_model_name)
178
- frames = pipe(image=image, decode_chunk_size=decode_chunk_size, motion_bucket_id=motion_bucket_id, generator=generator).frames[0]
179
- return frames
180
-
181
-
182
- >>>>>>> aaed2f5 (Refactor config.py and models.py, and add new functions in segment_everything.py and video_pipeline.py)
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
scripts/pipeline.py DELETED
@@ -1,172 +0,0 @@
1
- <<<<<<< HEAD
2
- from diffusers import ControlNetModel,StableDiffusionControlNetInpaintPipeline,AutoPipelineForInpainting
3
- import torch
4
-
5
-
6
-
7
-
8
-
9
-
10
- class PipelineFetcher:
11
- """
12
- A class that fetches different pipelines for image processing.
13
-
14
- Args:
15
- controlnet_adapter_model_name (str): The name of the controlnet adapter model.
16
- controlnet_base_model_name (str): The name of the controlnet base model.
17
- kandinsky_model_name (str): The name of the Kandinsky model.
18
- image (str): The image to be processed.
19
-
20
- """
21
-
22
- def __init__(self, controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image: str):
23
- self.controlnet_adapter_model_name = controlnet_adapter_model_name
24
- self.controlnet_base_model_name = controlnet_base_model_name
25
- self.kandinsky_model_name = kandinsky_model_name
26
- self.image = image
27
-
28
- def ControlNetInpaintPipeline(self):
29
- """
30
- Fetches the ControlNet inpainting pipeline.
31
-
32
- Returns:
33
- pipe (StableDiffusionControlNetInpaintPipeline): The ControlNet inpainting pipeline.
34
-
35
- """
36
- controlnet = ControlNetModel.from_pretrained(self.controlnet_adapter_model_name, torch_dtype=torch.float16)
37
- pipe = StableDiffusionControlNetInpaintPipeline.from_pretrained(
38
- self.controlnet_base_model_name, controlnet=controlnet, torch_dtype=torch.float16
39
- )
40
- pipe.to('cuda')
41
-
42
- return pipe
43
-
44
- def KandinskyPipeline(self):
45
- """
46
- Fetches the Kandinsky pipeline.
47
-
48
- Returns:
49
- pipe (AutoPipelineForInpainting): The Kandinsky pipeline.
50
-
51
- """
52
- pipe = AutoPipelineForInpainting.from_pretrained(self.kandinsky_model_name, torch_dtype=torch.float16)
53
- pipe.to('cuda')
54
- return pipe
55
-
56
-
57
- def fetch_control_pipeline(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image):
58
- """
59
- Fetches the control pipeline for image processing.
60
-
61
- Args:
62
- controlnet_adapter_model_name (str): The name of the controlnet adapter model.
63
- controlnet_base_model_name (str): The name of the controlnet base model.
64
- kandinsky_model_name (str): The name of the Kandinsky model.
65
- image: The input image for processing.
66
-
67
- Returns:
68
- pipe: The control pipeline for image processing.
69
- """
70
- pipe_fetcher = PipelineFetcher(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image)
71
- pipe = pipe_fetcher.ControlNetInpaintPipeline()
72
- return pipe
73
-
74
-
75
- def fetch_kandinsky_pipeline(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image):
76
- """
77
- Fetches the Kandinsky pipeline.
78
-
79
- Args:
80
- controlnet_adapter_model_name (str): The name of the controlnet adapter model.
81
- controlnet_base_model_name (str): The name of the controlnet base model.
82
- kandinsky_model_name (str): The name of the Kandinsky model.
83
- image: The input image.
84
-
85
- Returns:
86
- pipe: The Kandinsky pipeline.
87
- """
88
- pipe_fetcher = PipelineFetcher(controlnet_adapter_model_name, controlnet_base_model_name, kandinsky_model_name, image)
89
- pipe = pipe_fetcher.KandinskyPipeline()
90
- return pipe
91
-
92
-
93
-
94
- =======
95
- import torch
96
- from diffusers import AutoPipelineForInpainting
97
- from diffusers.utils import load_image
98
- from utils import (accelerator, ImageAugmentation, clear_memory)
99
- import hydra
100
- from omegaconf import OmegaConf, DictConfig
101
- from PIL import Image
102
- import lightning.pytorch as pl
103
- pl.seed_everything(42)
104
- generator = torch.Generator("cuda").manual_seed(92)
105
-
106
- class AutoPaintingPipeline:
107
- """
108
- AutoPaintingPipeline class represents a pipeline for auto painting using an inpainting model from diffusers.
109
-
110
- Args:
111
- model_name (str): The name of the pretrained inpainting model.
112
- image (Image): The input image to be processed.
113
- mask_image (Image): The mask image indicating the areas to be inpainted.
114
- """
115
-
116
- def __init__(self, model_name: str, image: Image, mask_image: Image):
117
- self.model_name = model_name
118
- self.device = accelerator()
119
- self.pipeline = AutoPipelineForInpainting.from_pretrained(self.model_name, torch_dtype=torch.float16)
120
- self.image = load_image(image)
121
- self.mask_image = load_image(mask_image)
122
- self.pipeline.to(self.device)
123
- self.pipeline.unet = torch.compile(self.pipeline.unet, mode="reduce-overhead", fullgraph=True)
124
-
125
-
126
- def run_inference(self, prompt: str, negative_prompt: str, num_inference_steps: int, strength: float, guidance_scale: float):
127
- """
128
- Runs the inference on the input image using the inpainting pipeline.
129
-
130
- Returns:
131
- Image: The output image after inpainting.
132
- """
133
-
134
- image = load_image(self.image)
135
- mask_image = load_image(self.mask_image)
136
- output = self.pipeline(prompt=prompt,negative_prompt=negative_prompt,image=image,mask_image=mask_image,num_inference_steps=num_inference_steps,strength=strength,guidance_scale =guidance_scale,height = 1472, width = 2560).images[0]
137
- clear_memory()
138
- return output
139
-
140
-
141
- @hydra.main(version_base=None ,config_path="../configs", config_name="inpainting")
142
- def inference(cfg: DictConfig):
143
- """
144
- Load the configuration file for the inpainting pipeline.
145
-
146
- Args:
147
- cfg (DictConfig): The configuration file for the inpainting pipeline.
148
- """
149
- augmenter = ImageAugmentation(target_width=cfg.target_width, target_height=cfg.target_height, roi_scale=cfg.roi_scale)
150
- model_name = cfg.model
151
- image_path = "../sample_data/example3.jpg"
152
- image = Image.open(image_path)
153
- extended_image = augmenter.extend_image(image)
154
- mask_image = augmenter.generate_mask_from_bbox(extended_image, cfg.segmentation_model, cfg.detection_model)
155
- mask_image = augmenter.invert_mask(mask_image)
156
- prompt = cfg.prompt
157
- negative_prompt = cfg.negative_prompt
158
- num_inference_steps = cfg.num_inference_steps
159
- strength = cfg.strength
160
- guidance_scale = cfg.guidance_scale
161
- pipeline = AutoPaintingPipeline(model_name=model_name, image=extended_image, mask_image=mask_image)
162
- output = pipeline.run_inference(prompt=prompt, negative_prompt=negative_prompt, num_inference_steps=num_inference_steps, strength=strength, guidance_scale=guidance_scale)
163
- output.save(f'{cfg.output_path}/output.jpg')
164
- return output
165
-
166
- if __name__ == "__main__":
167
- inference()
168
-
169
-
170
-
171
-
172
- >>>>>>> a817fb6 (chore: Update .gitignore and add new files for inpainting pipeline)