gradient-diffusion
commited on
Commit
•
f87c2aa
1
Parent(s):
10d3b38
Delete hed_workflow.json
Browse files- hed_workflow.json +0 -736
hed_workflow.json
DELETED
@@ -1,736 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"last_node_id": 47,
|
3 |
-
"last_link_id": 111,
|
4 |
-
"nodes": [
|
5 |
-
{
|
6 |
-
"id": 4,
|
7 |
-
"type": "DualCLIPLoader",
|
8 |
-
"pos": [
|
9 |
-
-157,
|
10 |
-
198
|
11 |
-
],
|
12 |
-
"size": {
|
13 |
-
"0": 315,
|
14 |
-
"1": 106
|
15 |
-
},
|
16 |
-
"flags": {},
|
17 |
-
"order": 0,
|
18 |
-
"mode": 0,
|
19 |
-
"outputs": [
|
20 |
-
{
|
21 |
-
"name": "CLIP",
|
22 |
-
"type": "CLIP",
|
23 |
-
"links": [
|
24 |
-
2,
|
25 |
-
27
|
26 |
-
],
|
27 |
-
"shape": 3,
|
28 |
-
"slot_index": 0
|
29 |
-
}
|
30 |
-
],
|
31 |
-
"properties": {
|
32 |
-
"Node name for S&R": "DualCLIPLoader"
|
33 |
-
},
|
34 |
-
"widgets_values": [
|
35 |
-
"clip_l.safetensors",
|
36 |
-
"t5xxl_fp16.safetensors",
|
37 |
-
"flux"
|
38 |
-
]
|
39 |
-
},
|
40 |
-
{
|
41 |
-
"id": 6,
|
42 |
-
"type": "EmptyLatentImage",
|
43 |
-
"pos": [
|
44 |
-
769,
|
45 |
-
430
|
46 |
-
],
|
47 |
-
"size": {
|
48 |
-
"0": 315,
|
49 |
-
"1": 106
|
50 |
-
},
|
51 |
-
"flags": {},
|
52 |
-
"order": 1,
|
53 |
-
"mode": 0,
|
54 |
-
"outputs": [
|
55 |
-
{
|
56 |
-
"name": "LATENT",
|
57 |
-
"type": "LATENT",
|
58 |
-
"links": [
|
59 |
-
66
|
60 |
-
],
|
61 |
-
"shape": 3,
|
62 |
-
"slot_index": 0
|
63 |
-
}
|
64 |
-
],
|
65 |
-
"properties": {
|
66 |
-
"Node name for S&R": "EmptyLatentImage"
|
67 |
-
},
|
68 |
-
"widgets_values": [
|
69 |
-
1024,
|
70 |
-
1024,
|
71 |
-
1
|
72 |
-
]
|
73 |
-
},
|
74 |
-
{
|
75 |
-
"id": 32,
|
76 |
-
"type": "UNETLoader",
|
77 |
-
"pos": [
|
78 |
-
529,
|
79 |
-
375
|
80 |
-
],
|
81 |
-
"size": {
|
82 |
-
"0": 315,
|
83 |
-
"1": 82
|
84 |
-
},
|
85 |
-
"flags": {},
|
86 |
-
"order": 2,
|
87 |
-
"mode": 0,
|
88 |
-
"outputs": [
|
89 |
-
{
|
90 |
-
"name": "MODEL",
|
91 |
-
"type": "MODEL",
|
92 |
-
"links": [
|
93 |
-
58
|
94 |
-
],
|
95 |
-
"shape": 3,
|
96 |
-
"slot_index": 0
|
97 |
-
}
|
98 |
-
],
|
99 |
-
"properties": {
|
100 |
-
"Node name for S&R": "UNETLoader"
|
101 |
-
},
|
102 |
-
"widgets_values": [
|
103 |
-
"flux1-dev-fp8.safetensors",
|
104 |
-
"fp8_e4m3fn"
|
105 |
-
]
|
106 |
-
},
|
107 |
-
{
|
108 |
-
"id": 7,
|
109 |
-
"type": "VAEDecode",
|
110 |
-
"pos": [
|
111 |
-
1374,
|
112 |
-
69
|
113 |
-
],
|
114 |
-
"size": {
|
115 |
-
"0": 210,
|
116 |
-
"1": 46
|
117 |
-
},
|
118 |
-
"flags": {},
|
119 |
-
"order": 13,
|
120 |
-
"mode": 0,
|
121 |
-
"inputs": [
|
122 |
-
{
|
123 |
-
"name": "samples",
|
124 |
-
"type": "LATENT",
|
125 |
-
"link": 6,
|
126 |
-
"slot_index": 0
|
127 |
-
},
|
128 |
-
{
|
129 |
-
"name": "vae",
|
130 |
-
"type": "VAE",
|
131 |
-
"link": 7
|
132 |
-
}
|
133 |
-
],
|
134 |
-
"outputs": [
|
135 |
-
{
|
136 |
-
"name": "IMAGE",
|
137 |
-
"type": "IMAGE",
|
138 |
-
"links": [
|
139 |
-
79,
|
140 |
-
101
|
141 |
-
],
|
142 |
-
"shape": 3,
|
143 |
-
"slot_index": 0
|
144 |
-
}
|
145 |
-
],
|
146 |
-
"properties": {
|
147 |
-
"Node name for S&R": "VAEDecode"
|
148 |
-
}
|
149 |
-
},
|
150 |
-
{
|
151 |
-
"id": 8,
|
152 |
-
"type": "VAELoader",
|
153 |
-
"pos": [
|
154 |
-
1088,
|
155 |
-
-47
|
156 |
-
],
|
157 |
-
"size": {
|
158 |
-
"0": 315,
|
159 |
-
"1": 58
|
160 |
-
},
|
161 |
-
"flags": {},
|
162 |
-
"order": 3,
|
163 |
-
"mode": 0,
|
164 |
-
"outputs": [
|
165 |
-
{
|
166 |
-
"name": "VAE",
|
167 |
-
"type": "VAE",
|
168 |
-
"links": [
|
169 |
-
7
|
170 |
-
],
|
171 |
-
"shape": 3,
|
172 |
-
"slot_index": 0
|
173 |
-
}
|
174 |
-
],
|
175 |
-
"properties": {
|
176 |
-
"Node name for S&R": "VAELoader"
|
177 |
-
},
|
178 |
-
"widgets_values": [
|
179 |
-
"ae.safetensors"
|
180 |
-
]
|
181 |
-
},
|
182 |
-
{
|
183 |
-
"id": 14,
|
184 |
-
"type": "ApplyFluxControlNet",
|
185 |
-
"pos": [
|
186 |
-
546,
|
187 |
-
-264
|
188 |
-
],
|
189 |
-
"size": {
|
190 |
-
"0": 393,
|
191 |
-
"1": 78
|
192 |
-
},
|
193 |
-
"flags": {},
|
194 |
-
"order": 10,
|
195 |
-
"mode": 0,
|
196 |
-
"inputs": [
|
197 |
-
{
|
198 |
-
"name": "controlnet",
|
199 |
-
"type": "FluxControlNet",
|
200 |
-
"link": 44
|
201 |
-
},
|
202 |
-
{
|
203 |
-
"name": "image",
|
204 |
-
"type": "IMAGE",
|
205 |
-
"link": 110,
|
206 |
-
"slot_index": 1
|
207 |
-
}
|
208 |
-
],
|
209 |
-
"outputs": [
|
210 |
-
{
|
211 |
-
"name": "controlnet_condition",
|
212 |
-
"type": "ControlNetCondition",
|
213 |
-
"links": [
|
214 |
-
28
|
215 |
-
],
|
216 |
-
"shape": 3,
|
217 |
-
"slot_index": 0
|
218 |
-
}
|
219 |
-
],
|
220 |
-
"properties": {
|
221 |
-
"Node name for S&R": "ApplyFluxControlNet"
|
222 |
-
},
|
223 |
-
"widgets_values": [
|
224 |
-
0.7000000000000001
|
225 |
-
]
|
226 |
-
},
|
227 |
-
{
|
228 |
-
"id": 21,
|
229 |
-
"type": "PreviewImage",
|
230 |
-
"pos": [
|
231 |
-
1507,
|
232 |
-
-265
|
233 |
-
],
|
234 |
-
"size": {
|
235 |
-
"0": 210,
|
236 |
-
"1": 246
|
237 |
-
},
|
238 |
-
"flags": {},
|
239 |
-
"order": 14,
|
240 |
-
"mode": 0,
|
241 |
-
"inputs": [
|
242 |
-
{
|
243 |
-
"name": "images",
|
244 |
-
"type": "IMAGE",
|
245 |
-
"link": 79,
|
246 |
-
"slot_index": 0
|
247 |
-
}
|
248 |
-
],
|
249 |
-
"properties": {
|
250 |
-
"Node name for S&R": "PreviewImage"
|
251 |
-
}
|
252 |
-
},
|
253 |
-
{
|
254 |
-
"id": 19,
|
255 |
-
"type": "CLIPTextEncodeFlux",
|
256 |
-
"pos": [
|
257 |
-
134,
|
258 |
-
267
|
259 |
-
],
|
260 |
-
"size": {
|
261 |
-
"0": 400,
|
262 |
-
"1": 200
|
263 |
-
},
|
264 |
-
"flags": {},
|
265 |
-
"order": 7,
|
266 |
-
"mode": 0,
|
267 |
-
"inputs": [
|
268 |
-
{
|
269 |
-
"name": "clip",
|
270 |
-
"type": "CLIP",
|
271 |
-
"link": 27,
|
272 |
-
"slot_index": 0
|
273 |
-
}
|
274 |
-
],
|
275 |
-
"outputs": [
|
276 |
-
{
|
277 |
-
"name": "CONDITIONING",
|
278 |
-
"type": "CONDITIONING",
|
279 |
-
"links": [
|
280 |
-
26
|
281 |
-
],
|
282 |
-
"shape": 3,
|
283 |
-
"slot_index": 0
|
284 |
-
}
|
285 |
-
],
|
286 |
-
"properties": {
|
287 |
-
"Node name for S&R": "CLIPTextEncodeFlux"
|
288 |
-
},
|
289 |
-
"widgets_values": [
|
290 |
-
"bad photo",
|
291 |
-
"bad photo",
|
292 |
-
4
|
293 |
-
]
|
294 |
-
},
|
295 |
-
{
|
296 |
-
"id": 46,
|
297 |
-
"type": "SaveImage",
|
298 |
-
"pos": [
|
299 |
-
627,
|
300 |
-
168
|
301 |
-
],
|
302 |
-
"size": [
|
303 |
-
315,
|
304 |
-
270
|
305 |
-
],
|
306 |
-
"flags": {},
|
307 |
-
"order": 11,
|
308 |
-
"mode": 0,
|
309 |
-
"inputs": [
|
310 |
-
{
|
311 |
-
"name": "images",
|
312 |
-
"type": "IMAGE",
|
313 |
-
"link": 111
|
314 |
-
}
|
315 |
-
],
|
316 |
-
"properties": {},
|
317 |
-
"widgets_values": [
|
318 |
-
"canny_process"
|
319 |
-
]
|
320 |
-
},
|
321 |
-
{
|
322 |
-
"id": 39,
|
323 |
-
"type": "PreviewImage",
|
324 |
-
"pos": [
|
325 |
-
502,
|
326 |
-
-155
|
327 |
-
],
|
328 |
-
"size": {
|
329 |
-
"0": 210,
|
330 |
-
"1": 246
|
331 |
-
},
|
332 |
-
"flags": {
|
333 |
-
"collapsed": false
|
334 |
-
},
|
335 |
-
"order": 9,
|
336 |
-
"mode": 0,
|
337 |
-
"inputs": [
|
338 |
-
{
|
339 |
-
"name": "images",
|
340 |
-
"type": "IMAGE",
|
341 |
-
"link": 109
|
342 |
-
}
|
343 |
-
],
|
344 |
-
"properties": {
|
345 |
-
"Node name for S&R": "PreviewImage"
|
346 |
-
}
|
347 |
-
},
|
348 |
-
{
|
349 |
-
"id": 23,
|
350 |
-
"type": "SaveImage",
|
351 |
-
"pos": [
|
352 |
-
1549,
|
353 |
-
-156
|
354 |
-
],
|
355 |
-
"size": {
|
356 |
-
"0": 356.1513671875,
|
357 |
-
"1": 270
|
358 |
-
},
|
359 |
-
"flags": {},
|
360 |
-
"order": 15,
|
361 |
-
"mode": 0,
|
362 |
-
"inputs": [
|
363 |
-
{
|
364 |
-
"name": "images",
|
365 |
-
"type": "IMAGE",
|
366 |
-
"link": 101
|
367 |
-
}
|
368 |
-
],
|
369 |
-
"properties": {},
|
370 |
-
"widgets_values": [
|
371 |
-
"canny_res"
|
372 |
-
]
|
373 |
-
},
|
374 |
-
{
|
375 |
-
"id": 13,
|
376 |
-
"type": "LoadFluxControlNet",
|
377 |
-
"pos": [
|
378 |
-
71,
|
379 |
-
-369
|
380 |
-
],
|
381 |
-
"size": {
|
382 |
-
"0": 316.83343505859375,
|
383 |
-
"1": 86.47058868408203
|
384 |
-
},
|
385 |
-
"flags": {},
|
386 |
-
"order": 4,
|
387 |
-
"mode": 0,
|
388 |
-
"outputs": [
|
389 |
-
{
|
390 |
-
"name": "ControlNet",
|
391 |
-
"type": "FluxControlNet",
|
392 |
-
"links": [
|
393 |
-
44
|
394 |
-
],
|
395 |
-
"shape": 3,
|
396 |
-
"slot_index": 0
|
397 |
-
}
|
398 |
-
],
|
399 |
-
"properties": {
|
400 |
-
"Node name for S&R": "LoadFluxControlNet"
|
401 |
-
},
|
402 |
-
"widgets_values": [
|
403 |
-
"flux-dev",
|
404 |
-
"hed2k_new.bin"
|
405 |
-
]
|
406 |
-
},
|
407 |
-
{
|
408 |
-
"id": 16,
|
409 |
-
"type": "LoadImage",
|
410 |
-
"pos": [
|
411 |
-
-299,
|
412 |
-
-390
|
413 |
-
],
|
414 |
-
"size": {
|
415 |
-
"0": 315,
|
416 |
-
"1": 314
|
417 |
-
},
|
418 |
-
"flags": {},
|
419 |
-
"order": 5,
|
420 |
-
"mode": 0,
|
421 |
-
"outputs": [
|
422 |
-
{
|
423 |
-
"name": "IMAGE",
|
424 |
-
"type": "IMAGE",
|
425 |
-
"links": [
|
426 |
-
108
|
427 |
-
],
|
428 |
-
"shape": 3,
|
429 |
-
"slot_index": 0
|
430 |
-
},
|
431 |
-
{
|
432 |
-
"name": "MASK",
|
433 |
-
"type": "MASK",
|
434 |
-
"links": null,
|
435 |
-
"shape": 3
|
436 |
-
}
|
437 |
-
],
|
438 |
-
"properties": {
|
439 |
-
"Node name for S&R": "LoadImage"
|
440 |
-
},
|
441 |
-
"widgets_values": [
|
442 |
-
"A beautiful woman with white hair and light freckl.webp",
|
443 |
-
"image"
|
444 |
-
]
|
445 |
-
},
|
446 |
-
{
|
447 |
-
"id": 47,
|
448 |
-
"type": "HEDPreprocessor",
|
449 |
-
"pos": [
|
450 |
-
85,
|
451 |
-
-135
|
452 |
-
],
|
453 |
-
"size": {
|
454 |
-
"0": 315,
|
455 |
-
"1": 82
|
456 |
-
},
|
457 |
-
"flags": {},
|
458 |
-
"order": 8,
|
459 |
-
"mode": 0,
|
460 |
-
"inputs": [
|
461 |
-
{
|
462 |
-
"name": "image",
|
463 |
-
"type": "IMAGE",
|
464 |
-
"link": 108
|
465 |
-
}
|
466 |
-
],
|
467 |
-
"outputs": [
|
468 |
-
{
|
469 |
-
"name": "IMAGE",
|
470 |
-
"type": "IMAGE",
|
471 |
-
"links": [
|
472 |
-
109,
|
473 |
-
110,
|
474 |
-
111
|
475 |
-
],
|
476 |
-
"shape": 3,
|
477 |
-
"slot_index": 0
|
478 |
-
}
|
479 |
-
],
|
480 |
-
"properties": {
|
481 |
-
"Node name for S&R": "HEDPreprocessor"
|
482 |
-
},
|
483 |
-
"widgets_values": [
|
484 |
-
"enable",
|
485 |
-
1024
|
486 |
-
]
|
487 |
-
},
|
488 |
-
{
|
489 |
-
"id": 3,
|
490 |
-
"type": "XlabsSampler",
|
491 |
-
"pos": [
|
492 |
-
1119,
|
493 |
-
136
|
494 |
-
],
|
495 |
-
"size": {
|
496 |
-
"0": 342.5999755859375,
|
497 |
-
"1": 234
|
498 |
-
},
|
499 |
-
"flags": {},
|
500 |
-
"order": 12,
|
501 |
-
"mode": 0,
|
502 |
-
"inputs": [
|
503 |
-
{
|
504 |
-
"name": "model",
|
505 |
-
"type": "MODEL",
|
506 |
-
"link": 58,
|
507 |
-
"slot_index": 0
|
508 |
-
},
|
509 |
-
{
|
510 |
-
"name": "conditioning",
|
511 |
-
"type": "CONDITIONING",
|
512 |
-
"link": 18
|
513 |
-
},
|
514 |
-
{
|
515 |
-
"name": "neg_conditioning",
|
516 |
-
"type": "CONDITIONING",
|
517 |
-
"link": 26
|
518 |
-
},
|
519 |
-
{
|
520 |
-
"name": "latent_image",
|
521 |
-
"type": "LATENT",
|
522 |
-
"link": 66
|
523 |
-
},
|
524 |
-
{
|
525 |
-
"name": "controlnet_condition",
|
526 |
-
"type": "ControlNetCondition",
|
527 |
-
"link": 28
|
528 |
-
}
|
529 |
-
],
|
530 |
-
"outputs": [
|
531 |
-
{
|
532 |
-
"name": "latent",
|
533 |
-
"type": "LATENT",
|
534 |
-
"links": [
|
535 |
-
6
|
536 |
-
],
|
537 |
-
"shape": 3
|
538 |
-
}
|
539 |
-
],
|
540 |
-
"properties": {
|
541 |
-
"Node name for S&R": "XlabsSampler"
|
542 |
-
},
|
543 |
-
"widgets_values": [
|
544 |
-
324242532548,
|
545 |
-
"fixed",
|
546 |
-
25,
|
547 |
-
1,
|
548 |
-
3.5
|
549 |
-
]
|
550 |
-
},
|
551 |
-
{
|
552 |
-
"id": 5,
|
553 |
-
"type": "CLIPTextEncodeFlux",
|
554 |
-
"pos": [
|
555 |
-
728,
|
556 |
-
-71
|
557 |
-
],
|
558 |
-
"size": {
|
559 |
-
"0": 400,
|
560 |
-
"1": 200
|
561 |
-
},
|
562 |
-
"flags": {},
|
563 |
-
"order": 6,
|
564 |
-
"mode": 0,
|
565 |
-
"inputs": [
|
566 |
-
{
|
567 |
-
"name": "clip",
|
568 |
-
"type": "CLIP",
|
569 |
-
"link": 2,
|
570 |
-
"slot_index": 0
|
571 |
-
}
|
572 |
-
],
|
573 |
-
"outputs": [
|
574 |
-
{
|
575 |
-
"name": "CONDITIONING",
|
576 |
-
"type": "CONDITIONING",
|
577 |
-
"links": [
|
578 |
-
18
|
579 |
-
],
|
580 |
-
"shape": 3,
|
581 |
-
"slot_index": 0
|
582 |
-
}
|
583 |
-
],
|
584 |
-
"properties": {
|
585 |
-
"Node name for S&R": "CLIPTextEncodeFlux"
|
586 |
-
},
|
587 |
-
"widgets_values": [
|
588 |
-
"A beautiful woman with white hair and light freckles, her neck area bare and visible, capturing attention with her attitude, has modeled for an editorial magazine, captured in full body, fashion photography, within the scope of high future fashion, photographed by Alessio Albi.",
|
589 |
-
"A beautiful woman with white hair and light freckles, her neck area bare and visible, capturing attention with her attitude, has modeled for an editorial magazine, captured in full body, fashion photography, within the scope of high future fashion, photographed by Alessio Albi.",
|
590 |
-
4
|
591 |
-
]
|
592 |
-
}
|
593 |
-
],
|
594 |
-
"links": [
|
595 |
-
[
|
596 |
-
2,
|
597 |
-
4,
|
598 |
-
0,
|
599 |
-
5,
|
600 |
-
0,
|
601 |
-
"CLIP"
|
602 |
-
],
|
603 |
-
[
|
604 |
-
6,
|
605 |
-
3,
|
606 |
-
0,
|
607 |
-
7,
|
608 |
-
0,
|
609 |
-
"LATENT"
|
610 |
-
],
|
611 |
-
[
|
612 |
-
7,
|
613 |
-
8,
|
614 |
-
0,
|
615 |
-
7,
|
616 |
-
1,
|
617 |
-
"VAE"
|
618 |
-
],
|
619 |
-
[
|
620 |
-
18,
|
621 |
-
5,
|
622 |
-
0,
|
623 |
-
3,
|
624 |
-
1,
|
625 |
-
"CONDITIONING"
|
626 |
-
],
|
627 |
-
[
|
628 |
-
26,
|
629 |
-
19,
|
630 |
-
0,
|
631 |
-
3,
|
632 |
-
2,
|
633 |
-
"CONDITIONING"
|
634 |
-
],
|
635 |
-
[
|
636 |
-
27,
|
637 |
-
4,
|
638 |
-
0,
|
639 |
-
19,
|
640 |
-
0,
|
641 |
-
"CLIP"
|
642 |
-
],
|
643 |
-
[
|
644 |
-
28,
|
645 |
-
14,
|
646 |
-
0,
|
647 |
-
3,
|
648 |
-
4,
|
649 |
-
"ControlNetCondition"
|
650 |
-
],
|
651 |
-
[
|
652 |
-
44,
|
653 |
-
13,
|
654 |
-
0,
|
655 |
-
14,
|
656 |
-
0,
|
657 |
-
"FluxControlNet"
|
658 |
-
],
|
659 |
-
[
|
660 |
-
58,
|
661 |
-
32,
|
662 |
-
0,
|
663 |
-
3,
|
664 |
-
0,
|
665 |
-
"MODEL"
|
666 |
-
],
|
667 |
-
[
|
668 |
-
66,
|
669 |
-
6,
|
670 |
-
0,
|
671 |
-
3,
|
672 |
-
3,
|
673 |
-
"LATENT"
|
674 |
-
],
|
675 |
-
[
|
676 |
-
79,
|
677 |
-
7,
|
678 |
-
0,
|
679 |
-
21,
|
680 |
-
0,
|
681 |
-
"IMAGE"
|
682 |
-
],
|
683 |
-
[
|
684 |
-
101,
|
685 |
-
7,
|
686 |
-
0,
|
687 |
-
23,
|
688 |
-
0,
|
689 |
-
"IMAGE"
|
690 |
-
],
|
691 |
-
[
|
692 |
-
108,
|
693 |
-
16,
|
694 |
-
0,
|
695 |
-
47,
|
696 |
-
0,
|
697 |
-
"IMAGE"
|
698 |
-
],
|
699 |
-
[
|
700 |
-
109,
|
701 |
-
47,
|
702 |
-
0,
|
703 |
-
39,
|
704 |
-
0,
|
705 |
-
"IMAGE"
|
706 |
-
],
|
707 |
-
[
|
708 |
-
110,
|
709 |
-
47,
|
710 |
-
0,
|
711 |
-
14,
|
712 |
-
1,
|
713 |
-
"IMAGE"
|
714 |
-
],
|
715 |
-
[
|
716 |
-
111,
|
717 |
-
47,
|
718 |
-
0,
|
719 |
-
46,
|
720 |
-
0,
|
721 |
-
"IMAGE"
|
722 |
-
]
|
723 |
-
],
|
724 |
-
"groups": [],
|
725 |
-
"config": {},
|
726 |
-
"extra": {
|
727 |
-
"ds": {
|
728 |
-
"scale": 1.3513057093104006,
|
729 |
-
"offset": [
|
730 |
-
754.2493198687694,
|
731 |
-
510.825824608885
|
732 |
-
]
|
733 |
-
}
|
734 |
-
},
|
735 |
-
"version": 0.4
|
736 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|