forked from guyzmo/notossh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathirssi-notify-listener.py
executable file
·919 lines (890 loc) · 58 KB
/
irssi-notify-listener.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
#!/usr/bin/env python
# Here is an base64-encoded icon data (irssi.icns) for use within Growl
_ICON_DATA_="""aWNucwAAmgVpY3MjAAAASAAAB+Af+D/8f/7//////////3/+f/wf+B/gfABwAAAAAAAH4B/4
P/x//v//////////f/5//B/4H+B8AHAAAABpczMyAAAB/ZEAB9Stko6NkcDUgwAD167E9IH/
A/O/qcyAAAHKuof/BKnSANa3if8DpLav/oj/A/zxtaeI/wb++fuqpP/+hv8H/ffympz5/f2E
/wf9+fLRn9WP/4H+F/39/Pr28ul02ACvhvH9+/r49vb599FruYAAC86N//j46urgvHhmyIEA
Cs/H/8tnYF9jgLqqgQAIvrfDc2rRv9CqgwAEf4RlgMKJAAGqtooAkQAH1K2Sjo2RwNSDAAPX
rsT0gf8D87+pzIAAAcq6h/8EqdIA1reJ/wOktq/+iP8D/PG1p4j/Bv75+6qk//6G/wf99/Ka
nPn9/YT/B/358tGf1Y//gf4X/f38+vby6XTYAK+G8f37+vj29vn30Wu5gAALzo3/+Pjq6uC8
eGbIgQAKz8f/y2dgX2OAuqqBAAi+t8NzatG/0KqDAAR/hGWAwokAAaq2igCRAAfUrZKOjZHA
1IMAA9euxPSB/wPzv6nMgAAByrqH/wSp0gDWt4n/A6S2r/6I/wP88bWniP8G/vn7qqT//ob/
B/338pqc+f39hP8H/fny0Z/Vj/+B/hf9/fz69vLpdNgAr4bx/fv6+Pb2+ffRa7mAAAvOjf/4
+Orq4Lx4ZsiBAArPx//LZ2BfY4C6qoEACL63w3Nq0b/QqoMABH+EZYDCiQABqraKAHM4bWsA
AAEIAAAAAAAAAAAAAAAAAAAAAAAAAAASWKTDwp9ODAAAAAAAABqS6////////+KACgAAADXc
/////////////8siABPe////////////////xQd0//////////////////9epv//////////
////////iqb//////////////////45y//////////////////9lH9z////////////////V
FABK4//////////////fPgAAACrI//////////CqLwAAAAAr5///1rS4pn0/BgAAAAFP7P/r
nCcICwMAAAAAAAAEjrV9NwIAAAAAAAAAAAAAAAMHAAAAAAAAAAAAAAAAAElDTiMAAAEIAAAA
AAAAAAAAB+AAAD/8AAH//wAD///AD///8B////g////4P////H////5////+f////v////7/
///+f////n////5////+P////D////wf///4D///8Af//+AD//+AA//+AAf/4AAP+AAAH+AA
AD+AAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAP/wAAf//AAP//8AP///wH///+D////g/
///8f////n////5////+/////v////5////+f////n////4////8P////B////gP///wB///
4AP//4AD//4AB//gAA/4AAAf4AAAP4AAAAwAAAAAAAAAAAAAAGlsMzIAAAVyygAFGiQlIiIW
lAALJ1eApbSwr7CadUgVjgAIEW+/6/n8+vv8gfsD9eCpUYoABwR34P35+Pv+hP8F/vz++cVQ
hwAEKsb99vqL/wT9/vmaB4QAAz7j+fiO/wT8+v+9EoIAAybh9fuP/wT++/f/toIAArr2/JH/
BP358/94gAACUvT4kv8J/vv28+AaAACq+JP/Cf779/DzZQAI0vuT/wn9+/fx7ZUADtr9kv8L
/v379vDnogAN2vz8kP8O/v78+fTu4Z0AAMP9+fz+jf8R/v79+/fx6Nt+AAB9//T5/P3+iv8T
/v79+/jz7trVPgAAGer19fn8/f6F/4H+CP38+/j07+PTp4EABW3/8PX6/IX+gf0J/Pv69/Pv
5tDQNIIABZb/8/f7/YD+Af39gPwL+/v6+ff08e3j0NVUhAAXi//8+fz8/fz7+vr5+Pf29fPw
7erd1MtShgAVWd79+fr6+ff29PPy8O/t6+nk3dalLogAEw/C/vf18/Du6+no5+fo6ufWplAB
igAPwffx7+vv8vHw8OvgyKNuMowADVzj6erc48RJPD4+NyQLjgAHLNHc5NzUihCUAAYtzN3l
0ZU3lQAFXN7HpG0nlgADH208FPcAygAFGiQlIiIWlAALJ1eApbSwr7CadUgVjgAIEW+/6/n8
+vv8gfsD9eCpUYoABwR34P35+Pv+hP8F/vz++cVQhwAEKsb99vqL/wT9/vmaB4QAAz7j+fiO
/wT8+v+9EoIAAybh9fuP/wT++/f/toIAArr2/JH/BP358/94gAACUvT4kv8J/vv28+AaAACq
+JP/Cf779/DzZQAI0vuT/wn9+/fx7ZUADtr9kv8L/v379vDnogAN2vz8kP8O/v78+fTu4Z0A
AMP9+fz+jf8R/v79+/fx6Nt+AAB9//T5/P3+iv8T/v79+/jz7trVPgAAGer19fn8/f6F/4H+
CP38+/j07+PTp4EABW3/8PX6/IX+gf0J/Pv69/Pv5tDQNIIABZb/8/f7/YD+Af39gPwL+/v6
+ff08e3j0NVUhAAXi//8+fz8/fz7+vr5+Pf29fPw7erd1MtShgAVWd79+fr6+ff29PPy8O/t
6+nk3dalLogAEw/C/vf18/Du6+no5+fo6ufWplABigAPwffx7+vv8vHw8OvgyKNuMowADVzj
6erc48RJPD4+NyQLjgAHLNHc5NzUihCUAAYtzN3l0ZU3lQAFXN7HpG0nlgADH208FPcAygAF
GiQlIiIWlAALJ1eApbSwr7CadUgVjgAIEW+/6/n8+vv8gfsD9eCpUYoABwR34P35+Pv+hP8F
/vz++cVQhwAEKsb99vqL/wT9/vmaB4QAAz7j+fiO/wT8+v+9EoIAAybh9fuP/wT++/f/toIA
Arr2/JH/BP358/94gAACUvT4kv8J/vv28+AaAACq+JP/Cf779/DzZQAI0vuT/wn9+/fx7ZUA
Dtr9kv8L/v379vDnogAN2vz8kP8O/v78+fTu4Z0AAMP9+fz+jf8R/v79+/fx6Nt+AAB9//T5
/P3+iv8T/v79+/jz7trVPgAAGer19fn8/f6F/4H+CP38+/j07+PTp4EABW3/8PX6/IX+gf0J
/Pv69/Pv5tDQNIIABZb/8/f7/YD+Af39gPwL+/v6+ff08e3j0NVUhAAXi//8+fz8/fz7+vr5
+Pf29fPw7erd1MtShgAVWd79+fr6+ff29PPy8O/t6+nk3dalLogAEw/C/vf18/Du6+no5+fo
6ufWplABigAPwffx7+vv8vHw8OvgyKNuMowADVzj6erc48RJPD4+NyQLjgAHLNHc5NzUihCU
AAYtzN3l0ZU3lQAFXN7HpG0nlgADH208FPcAbDhtawAABAgAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAASLUxaYF9YRScLAAAAAAAAAAAAAAAAAAAAAAAAAAAeVYyz1N3f3tzNrH9HEgAAAAAAAAAA
AAAAAAAAAAJHo+X////////////////XjTAAAAAAAAAAAAAAAAA0r/v/////////////////
////75EbAAAAAAAAAAAAZ+v//////////////////////////9NCAAAAAAAAAX7+////////
/////////////////////+5SAAAAAABk/v///////////////////////////////+s1AAAA
KOj//////////////////////////////////8ALAACP////////////////////////////
/////////1gAFNr/////////////////////////////////////rQE7+v//////////////
///////////////////////fFUj8/////////////////////////////////////+gkSvv/
////////////////////////////////////6Sc47f//////////////////////////////
///////ZHx3B/////////////////////////////////////6gPEXf/////////////////
///////////////////2ZAgKNMT//////////////////////////////////7ApBAIZWuD/
///////////////////////////////NUw8BAAgkbdv////////////////////////////+
ymkbBAAAAAwqZsH4////////////////////////7bVlIAYAAAAAAAwlU5Dp////////////
////////7seRUB0HAAAAAAAAAAcVSuv///////////////jr1reQYjMSBQAAAAAAAAAAAACb
///////zvLa4uLewn4txUjIXCAEAAAAAAAAAAAAAbPz/////4J9iU1hYUko9LR0QBwEAAAAA
AAAAAAAAAGv6///+47mBQhsSEhIQDQkFAgAAAAAAAAAAAAAAABiS//7r0rCGVikNAgAAAAAA
AAAAAAAAAAAAAAAAAAAAcdS2ooxwTSsSBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAEaP0ZBLxwO
BgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQULDwsGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAgQDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaWNoIwAAAkgAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAB/4AAAAAf//gAAAD///8AAAP////AAA/////gAB/////4AD/////8AH
/////+AP//////Af//////g///////g///////x///////x///////x///////5///////5/
//////5///////5///////5///////5///////4///////w///////w///////wf//////gP
//////AP//////AH/////+AD/////8AB/////wAAf////gAAP///+AAAf///4AAAf///AAAA
///AAAAB/+AAAAAD/8AAAAAP/wAAAAAf/AAAAAAP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAf//gAAAD///8AAAP////AAA
/////gAB/////4AD/////8AH/////+AP//////Af//////g///////g///////x///////x/
//////x///////5///////5///////5///////5///////5///////5///////4///////w/
//////w///////wf//////gP//////AP//////AH/////+AD/////8AB/////wAAf////gAA
P///+AAAf///4AAAf///AAAA///AAAAB/+AAAAAD/8AAAAAP/wAAAAAf/AAAAAAP4AAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpaDMyAAAKu/8AzgAIBhsiJCUlIh4VoAARIVOPsM/j
6ezr6+rl2b6mdUQOmAAXHHG86fn18u3q6+rr6unq6uzu8O3UnE0DkwALLZnk+vLs7fH2+v3+
g/8J/fv18O3w7cJqC48ACBKK7fjt7fT6/o3/Bfry7/DFU40ABkjS++zu9/6Q/wf+/vz28u6a
FooABWr08Ov2/pT/Bv37+vT1wiiIAAR++Orv/Jb/B/79+/n299MwhgAEZ/fn8v6Y/wf+/Pr3
9PnNGIQAAz3v5/Kb/wf+/Pn18fysA4IAAwPD7eyc/wf+/fr38/D4YoIAA1z05f2d/wf9+/j0
7/HKEYEAAr3p9Z7/B/38+fXx7OtegAACKefnnv8I/v38+fbx7eefgAACYu7xnv8P/v38+vbx
7eHEEAAAdPD3/pz/Ef7+/fv59fDs3M8eAAB49Pn8/pv/Ev7+/fv49fDr2NIiAABz9fj7/f6Z
/xP+/v38+vf07unSzyAAAGb09vj7/Zj/F/7+/fz7+fby7eXNxhUAADLp9fb5/P3+/pT/gP4J
/fz69/Tv69rPpoAACAXD+PP2+fv8/YD+j/+A/gv9/fv6+PXx7OXM1m6BAAdq/u/09/n7/IH+
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
9vLt6tfHyiGBAAkL1fbv9Pf5+/z9gP6E/4X+gP0L/Pv6+Pby7urex9Z7gwAJVf3t8PT3+fv8
/Yr+gf0O/Pz7+vn39fLu6+HKzboThAAIjf/t8fX4+vz9hf6C/YD8Dvv7+vn39vTw7erhy8nN
N4UACwGn/+7y9vn7/P39/oH9gPyB+w/6+vn49/bz8u/s6d7JydJQhwAQB5r/8/P3+vv8/f38
/Pv7+vqA+RD4+Pf39vTz8e7s6ufZx87ISooAIXfz//b4+/z8+/v6+vn49/b29fX08/Lx7+7s
6ejj0cfVrzGMAAQ4vv/5+YD6F/n49vX08/Lx8fDv7u3r6ejm5NrN0sx5DI8AG2Hx+ff39vX0
8vDv7ezr6urp5+fl5OLc1dTHiiiRABkR7/f09PLw7+zq6efl5OPi4uPk5OPd0a5xIpMACmDr
7PHv7ezq5+7ygPQJ8/Ds48+6k2cwBpQAFAW/2ejs6uXa2u6zS1VZXFtTSTgXBpgACofg1Onn
38zN2H0HoQAJXN/M3+PVzde5SaIACVbezdXb1Na3YQyiAAhq4M3R3c+kVwmiAAcTm+/MtZ1r
KqQABQ1+lFI1D/8A/wCQAGg4bWsAAAkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAQYL0xlcHd7enVtXUAnDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAA01bJ7J4fP//////////evduI1XIwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn
a7Ll///////////////////////61ppPEgAAAAAAAAAAAAAAAAAAAAAAAAAAJXzR/f//////
///////////////////////ytFkRAAAAAAAAAAAAAAAAAAAAAA1iy///////////////////
//////////////////OnOwAAAAAAAAAAAAAAAAAAIprz////////////////////////////
////////////3GcKAAAAAAAAAAAAAAA3u///////////////////////////////////////
//////KLEwAAAAAAAAAAADbH///////////////////////////////////////////////8
khIAAAAAAAAAIbn/////////////////////////////////////////////////+n0EAAAA
AAAHkv///////////////////////////////////////////////////+xQAAAAAABQ7v//
///////////////////////////////////////////////////AGwAAAA+u////////////
///////////////////////////////////////////8aQAAAEDr////////////////////
////////////////////////////////////uBAAAnr/////////////////////////////
////////////////////////////6jkAEK7/////////////////////////////////////
/////////////////////2sAG7z/////////////////////////////////////////////
/////////////4QDI7z/////////////////////////////////////////////////////
/////40JJLz//////////////////////////////////////////////////////////4wM
IbX//////////////////////////////////////////////////////////4QNG43/////
////////////////////////////////////////////////////92kMF2Lz////////////
////////////////////////////////////////////20gMFD3F////////////////////
////////////////////////////////////qiwMECuA+///////////////////////////
///////////////////////////jcRwJCB9IwP//////////////////////////////////
//////////////////inQBMEAxQva+D/////////////////////////////////////////
/////////8BqIQsBAQkePobq////////////////////////////////////////////////
zIQ1FAUAAAMPJ0iQ5P////////////////////////////////////////////zJjUQaCQEA
AAAFEyxNitP+////////////////////////////////////////8rqLTCANAgAAAAABBhUt
S3+56//////////////////////////////////////YqYVIIQ4DAAAAAAAAAQYUKkNsmcf9
///////////////////////////////937aXcj0eDgMAAAAAAAAAAAEFESI4VJD9////////
////////////////////8tWym4JWLhkMAwAAAAAAAAAAAAAAAwwYMqr/////////////////
//////v249G4pZWAXDgiEwgCAAAAAAAAAAAAAAAAAAEBXO7//////////+m9w8HBwcHDvq6m
npKEbVA1IxYLBAEAAAAAAAAAAAAAAAAAAAAvzP//////////2KSNiYyPj42Jg3xtXUo4Kh8V
CwUBAAAAAAAAAAAAAAAAAAAAACCx//////////LBmXZKQkNEREE+OTIrJB4WDggEAQAAAAAA
AAAAAAAAAAAAAAAAJqv////////yy6eNXTIjHBscGxoYFhIPCwYDAQAAAAAAAAAAAAAAAAAA
AAAAAAA2u///////68amk3VFJRUKBQQEBAQEAwEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAClrV
///55c60oZJ1TC0cDwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNbmx7qnnZOE
aEctHhIIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKXl5enhyYUw3JxwRCAMA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCSEwNjUvJh4VDQcDAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBwwUGBYRCwcDAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQGBQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
+Pn6+/v8/ID9kf6M/Yb8gfuA+h35+fj49/f29fTz8vHw7u3s6ujn5eHRycjGxsXDwoWUABQE
q+fp6uvt7vDx8/T19vf4+fr7/PyB/Yz+iv2H/IP7gfof+fn4+Pf39vX19PPy8O/u7evq6Ofl
39HJyMbGxcPClQSVABQruOjp6uzt7/Dy8/T29/j5+vv7/PyB/Yf+iP2I/IT7gvqA+R74+Pf3
9vX19PPy8fDv7ezr6ejm5d/OycjGxsXEw50plwAUQb7o6evs7u/x8vT19vf4+fr7+/z8gv2B
/of9hvyG+4P6gfkg+Pj39/b29fX08/Lx8O/u7evq6efm5N7NycfGxsXEw6M8mQARSL3o6uvt
7vDx8/T19/j5+vr7gPyL/YX8hfuE+oL5gPiA9x329vX09PPy8fDv7u3s6+no5+Xk2svIx8bG
xMPDo0ObABFFuenq7O3v8PLz9fb3+Pn6+/uA/If9g/yE+4T6g/mB+ID3gPYd9fX08/Py8fDv
7u3s6+rp5+bl4tbJyMfGxcTDwp8+nQARM7Dq6+3u8PHz9PX3+Pn6+vv7gPyD/YP8gvuC+oT5
gviB94D2gPUd9PTz8vLx8O/u7ezr6uno5+Xk4NLJyMbGxcTDwpcunwAOEKLi7O3v8PLz9fb3
+Pn6gPuI/IH7gvqB+YP4gveB9oD1IPT08/Py8vHw8O/u7ezr6uno5+bk493OyMfGxsXEw7uK
DqIADYnT7e7w8fP09vf4+fn6gPuE/IH7gfqA+YL4gfeC9oH1gPQg8/Py8vHx8PDv7u7t7Ovq
6ejn5uXk4djKyMfGxcTEw7B2pQANYb/u7/Hy9PX29/j5+vqH+4H6gPmA+ID3gfaB9YH0gPOA
8h/x8fDw7+/u7u3s6+vq6ejn5uXk497SyMfGxsXEw8KgVKcACxug3/Dy8/T29/j4+YD6gvuB
+oD5Afj4gPeA9oD1gPSB84HyAfHxgPAe7+/u7u3t7Ovr6uno5+fm5eTj4dnOx8bGxcXEw7aI
GaoAC2nB8fP09fb3+Pj5+YT6gPkB+PiA9wP29vX1gPSA84DygPGA8IDvgO4c7e3s7Ovq6uno
6Ofm5eTj4uHd08nHxsbFxMPCn1qtAAkEkdTz9Pb29/j4hfkB+PiA9wv29vX19PTz8/Ly8fGA
8IHvgO6A7R7s7Ovr6urp6ejn5+bl5eTj4uHg183HxsbFxMPDrXkEsAAGNqPd9fb394X4gPcO
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
xsbEw7ptkwAUlOfo6uvs7u/x8vT19vf4+fr7+/z8gP2R/oz9hvyB+4D6Hfn5+Pj39/b19PPy
8fDu7ezq6Ofl4dHJyMbGxcPChZQAFASr5+nq6+3u8PHz9PX29/j5+vv8/IH9jP6K/Yf8g/uB
+h/5+fj49/f29fX08/Lw7+7t6+ro5+Xf0cnIxsbFw8KVBJUAFCu46Onq7O3v8PLz9Pb3+Pn6
+/v8/IH9h/6I/Yj8hPuC+oD5Hvj49/f29fX08/Lx8O/t7Ovp6Obl387JyMbGxcTDnSmXABRB
vujp6+zu7/Hy9PX29/j5+vv7/PyC/YH+h/2G/Ib7g/qB+SD4+Pf39vb19fTz8vHw7+7t6+rp
5+bk3s3Jx8bGxcTDozyZABFIvejq6+3u8PHz9PX3+Pn6+vuA/Iv9hfyF+4T6gvmA+ID3Hfb2
9fT08/Lx8O/u7ezr6ejn5eTay8jHxsbEw8OjQ5sAEUW56ers7e/w8vP19vf4+fr7+4D8h/2D
/IT7hPqD+YH4gPeA9h319fTz8/Lx8O/u7ezr6unn5uXi1snIx8bFxMPCnz6dABEzsOrr7e7w
8fP09ff4+fr6+/uA/IP9g/yC+4L6hPmC+IH3gPaA9R309PPy8vHw7+7t7Ovq6ejn5eTg0snI
xsbFxMPCly6fAA4QouLs7e/w8vP19vf4+fqA+4j8gfuC+oH5g/iC94H2gPUg9PTz8/Ly8fDw
7+7t7Ovq6ejn5uTj3c7Ix8bGxcTDu4oOogANidPt7vDx8/T29/j5+fqA+4T8gfuB+oD5gviB
94L2gfWA9CDz8/Ly8fHw8O/u7u3s6+rp6Ofm5eTh2MrIx8bFxMTDsHalAA1hv+7v8fL09fb3
+Pn6+of7gfqA+YD4gPeB9oH1gfSA84DyH/Hx8PDv7+7u7ezr6+rp6Ofm5eTj3tLIx8bGxcTD
wqBUpwALG6Df8PLz9Pb3+Pj5gPqC+4H6gPkB+PiA94D2gPWA9IHzgfIB8fGA8B7v7+7u7e3s
6+vq6ejn5+bl5OPh2c7HxsbFxcTDtogZqgALacHx8/T19vf4+Pn5hPqA+QH4+ID3A/b29fWA
9IDzgPKA8YDwgO+A7hzt7ezs6+rq6ejo5+bl5OPi4d3TycfGxsXEw8KfWq0ACQSR1PP09vb3
+PiF+QH4+ID3C/b29fX09PPz8vLx8YDwge+A7oDtHuzs6+vq6unp6Ofn5uXl5OPi4eDXzcfG
xsXEw8OteQSwAAY2o9319vf3hfiA9w729vX19PPz8vLx8fDw7++A7oDtgOyA6wHq6oDpDujo
5+bm5eTk4+Lh4eDZ0IDGBsXExMOwhi60AARGyPX29oX3E/b29fX08/Py8vHw8O/v7u7t7ezs
gOuA6oDpAejogOcX5ubl5eTj4+Lh4eDf29LJxsbFxMTDsIo7twADnPT19YT2E/X19PTz8vLx
8O/v7u7t7Ozr6+rqgOmA6IDnAebmgOUW5OTj4+Li4eDg39/a0crGxcXEw8OsgjS5AAO+8/T0
gvWA9A/z8vLx8PDv7u3t7Ovr6urpgOgB5+eA5oDlAeTkgOMV4uLh4eDg39/e3tfQyMbFxMTD
up5wFbsAANeA84H0F/Pz8vLx8PDv7u3t7Ovq6uno6Ofn5ubl5YDkgOMB4uKA4YDgEN/f3t7d
29PNxsXExMO+qoRIvQADQdnk7YPyF/Hw8O/u7u3s6+rq6ejn5+bl5eTk4+Pi4oDhgOCB3wHe
3oDdC9vV0MnFxMTDuqSFT8AABqPW1tro8fGA8BTv7+7t7Ozr6uno5+fm5eTk4+Li4eGA4IDf
gN6B3QXc3NrUz8mAxAS9rZRwNcIAAQPNgNUA4IDvGO7u7e3s6+rp6Ojn5uXk4+Pi4eHg4N/f
3t6B3YHcDNvZ1dDLxsS7rp+GZjLGAACVgdQs5O7t7ezs6+rq6ejn5uXk5OPi4eDgyZ+vusPL
0NTX2NvY1M3GvrSqnZF/aEkZygATGcrS09LS5+zr6+rq6ejn5+Xa29yA3YDeAasC4QAAq4HR
ANSA6hDp6Ojn5uXfzczLysnIx8fEiOIAAHyB0BTP3Ono6Ofm5uXk2MvKycnIx8bGvGHiAAFD
yoLPEuTn5ubl5OPh0crJyMfHxsbFqiPiAAEKvoDPDc7O2Obl5OTj4tvLycjHgMYCxcCF5AAD
rM/OzoDNCeHk4+Li4NPIx8eAxgPFxK8+5AAOos7NzczMy9jj4uHg28zHgMYExcXEunvlAA2c
zs3MzMvK0eLh4N3Rx4DGBcXExLyOFeUADJTNzczLysnN3+Dd08iAxgXFxMS7gxXmAAuazczL
y8rJydvc0ciAxgXFxMS2egnmAAsKr83My8rJyMfS0ciAxgTFxMSwcOgACjS8zs3LysnIw8XH
gMYExcS9mVXpABFWxs7NzMrHv7e9x8bGxb6lbgnqAA9+y8/Ny8W7tLO8x8a8oWoO7AAMntDN
xr+3tbSzs6h9N+4ACju2xL26uLSlj3I58QAGdq6pnYhoP/8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wDQAP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AlQAaImGGna+9xs3T19vc3eDd
29rW0czFuq2chGEi3QAFRISnv8/bh+KE4YHggd8F2My7pIJB1AAGS4+0zdzi4onjhOKC4YDg
g98E2cixi0jNAANrpcTcgOOB5IflgeSB44LigOGA4ILfBd7e1sChZscACF+lyd7j5OTl5YHm
ieeB5gPl5eTkgOOB4oDhgOCB3wbe3t3Yw6BdwQAKHI+/2+Tk5ebm5+eB6IPpC+vt8PP09vj5
+/39/oD/Dv79/Pr49vTw7urm4+Hg4IHfB97d3dzUuYocvAAMSaPM5OTl5ufn6Ojp6YDqB+vr
7fH09/v+lP8H/v789/Lu6OOA3wje3t3d3NvFnUa4ABRQq9Lk5ebn5+jp6erq6+vs7/L2+v6c
/xL+/v39+/Xv6OLf3t3d3NvbyqVOtAASQKfS5OXm5+jp6err6+zs8fX5/aL/Af7+gP0N/Pjy
6+Te3dzb29rJoT2wABEGmMzk5ebn6Onq6+vs7fD1+v6n/xL+/v39/Pz7+fLp4tzc29rZw5EG
rQAPd8Hk5ebn6Onq6+zt7vP4/az/Ef7+/f38+/v69u3m3dva2di3caoADiWq1+Tl5+jp6uvs
7fD1+7D/Ev7+/f38/Pv6+fnx6N/a2djMoCKnAA1wwuPl5ufp6uvs7fD2/LT/Ef7+/fz8+/r5
+fjy6N7Z2Ne3aqUADJnS4+Xm6Onq7O3v9vy3/xH+/v39/Pv6+vn49/Hn3NjXx46iAAwTrN3k
5efo6uvs7fX7uv8S/v79/fz7+vr5+Pf27ePX19CiE58AC0C54+Tl5+jq6+zy+b3/Ev7+/f38
+/r5+ff29fTp3tbVrTydAAtVw+Lk5efp6uvu9v2//xL+/v39/Pv6+fj39vX07+PY1bNMmwAK
WsPi4+Xn6Ors8fnC/xL+/v39/Pv6+fj39vXz8uja1LRRmQAKU8Pi4+Xn6Orr8/zE/xL+/v38
/Pv6+fj39fTz8uve07BJlwAKOb7i4+Tm6Ors9v7G/xL+/v38+/v6+ff29fTy8e3h1Ko1lQAJ
Brfi4uPl5+nt98n/Ev79/fz7+vn49/b08/Lw7+LUngaUAAim4eLj5efp7fjK/xL+/v39/Pv6
+fj29fTy8e/u486OkwAIitjh4uPm6O75zP8S/v79/Pv7+fj39vTz8vDu7eO/eJEACFTL4eLj
5Ofs+M3/E/7+/f38+/r5+Pb19PLw7+3s26pLkAAHteDh4uPl6vfP/xL+/v38+/v5+Pf29PPx
7+7s69GWjwAHidrh4eLk5vXQ/xP+/v39/Pv6+fj29fPy8O7t6+HBc40ABx/F4OHi4+Xy0f8U
/v79/fz7+vn49/X08vDv7evp1qccjAAHmt/g4eLj7fzR/4D+Ef38/Pv6+ff29PPx7+3s6tvM
g4sAByLI3+Dh4uf50/8U/v79/fz7+vn49vXz8fDu7Orhz7EeigAGk9/f4OHi8tT/FP7+/f38
+/r5+Pf19PLw7uzq5tLOfYoABsDf3+Dh6/3U/xT+/v39/Pv6+fj39fTy8O7s6unXzquJAAZo
2d/f4OL11P+A/hP9/fz8+/r49/b08vDv7evp287FWYgABqTe39/g7P7U/4D+E/39/Pz7+vn3
9vTz8e/t6+nfzsyRiAAGxN7f3+L1/tT/gP4T/f38/Pv6+ff29PPx7+3r6eLOzK6HAAdK1t7f
3+r9/tT/gP4U/f38/Pv6+fj29fPx7+3r6ePOzMQ/hgAHh9zd3t/y/f7T/4H+FP39/Pz7+vn4
9vXz8e/t6+nkzczKcYYACKfc3d7k+f3+/tL/gf4U/f38/Pv6+fj29fPx7+3r6ObNy8mQhgAI
u9zd3uv7/P3+0f+C/hT9/fz7+/r59/b08/Hv7ero5s3LyaSGAAjG29zd8vv8/f7R/4H+gP0S
/Pv7+vn39vTy8O7s6ujkzcrJtIYACc/b3OH3+vv9/f7P/4L+Ff39/Pz7+vn49/b08vDu7Oro
4czKyLmGAAnT2tvl+fr7/P3+z/+C/hX9/fz8+/r5+Pf19PLw7uzp5+DMysjBhgAK1drb6fj5
+/z9/f7N/4L+gP0T/Pv7+vn49vXz8u/t6+nn3MvJx8OGAAvV2drs+Pn6+/z9/v7L/4P+Fv39
/Pz7+vr59/b18/Hv7evo5tjLycfChgAM0tjZ7/f4+fr7/P3+/sr/gv6A/RT8/Pv6+fj39vTy
8O7s6ujm08rIxsCGAA3M2Nnx9vf5+vv8/f3+/sj/gv6A/RX8/Pv7+vn49/X08vDu7Onn48/J
x8a5hgAOw9fY8vX3+Pn6+/z9/f7+xv+D/oD9Ffz8+/r5+Pf29fPx7+3r6ebdy8nHxq+GAA+3
19fz9fb3+Pn6+/z9/f7+xP+D/oD9Fvz8+/v6+fj39fTy8O7s6ujm18rIxsaghgAOotbX8vT1
9vf5+vv7/P39gP7B/4P+gP0X/Pz7+/r5+Pf29fPx7+3r6efk0cnHxsWMhgAPg9XW7/P09fb4
+fr7/Pz9/YH+vv+E/oD9F/z8+/r6+fj39fTy8O7s6ujm3MrIx8bEbYYAEEXM1ezy8/T29/j5
+vv8/P39g/65/4X+gP0Y/Pz7+/r5+Pf29PPx7+3r6efl1MrIxsW9N4cADrTU6PHy8/T29/j5
+vv8/ID9hP61/4X+gP0Y/Pz7+/r5+Pf29fTy8O7s6ujm3szJx8bFqogAD5PT5e/x8vP19vf4
+fr7+/yA/Yb+sP+F/oH9Gfz8+/v6+fn49/X08/Hv7evp5+XVysjGxcSIiAARXMvg7vDx8vT1
9vf4+fr7+/z8gP2F/q3/hv6B/Rr8/Pv7+vr5+Pf29PPx8O7s6ujm3cvJx8bFvFCJABGr2u3u
8PHy9PX29/j5+vv7/PyA/Yb+qP+I/oH9Gvz8+/v6+vn49/b18/Lw7uzr6efj0snIxsXEo4oA
EnjV6u3u8PHy9PX29/j5+vv7/PyA/Yb+pP+J/oH9gPwZ+/v6+vn49/b19PLw7+3r6efl2crI
xsbEw3SKABMatOTs7e7w8fP09fb3+Pn6+/v8/IH9hf6f/4v+gv2A/Br7+/r6+fj39vX08vHv
7ezq6Obgz8nHxsXEqxmLABN93Ovs7e/w8fP09fb3+Pn6+/v8/IH9hP6Z/4/+gv2A/ID7GPr5
+fj39vX08vHv7uzq6Obj0snIxsXEw3yMABQZsujr7O3v8PHz9PX29/j5+vv7/PyA/YX+kP+U
/oP9gfwc+/v6+vn5+Pf29fTy8e/u7Oro5+XYysjGxsXDphSNABRt2err7O3v8PHz9PX29/j5
+vv7/PyA/Yb+iP+X/oT9gfyA+xr6+vn4+Pf29fTy8e/u7Orp5+XcysjHxsXEvG2PABSg6Orr
7O3v8PLz9PX29/j5+vv7/PyA/Yf+gP+Z/oX9gvyA+xv6+vn5+Pf29vXz8vHv7uzr6efl383J
x8bFxMOUkAASP8Lo6uvs7e/w8vP09ff4+fn6+4D8gP2f/oj9g/yA+x36+vn5+Pj39vX08/Lw
7+7s6unn5eDPycfGxcTDrECRABRy3ejq6+zu7/Dy8/T29/j5+vr7/PyA/Zj+jP2D/IH7Hvr6
+fn4+Pf29vX08/Lw7+3s6unn5eHQycjGxsTDum2TABSU5+jq6+zu7/Hy9PX29/j5+vv7/PyA
/ZH+jP2G/IH7gPod+fn4+Pf39vX08/Lx8O7t7Oro5+Xh0cnIxsbFw8KFlAAUBKvn6err7e7w
8fP09fb3+Pn6+/z8gf2M/or9h/yD+4H6H/n5+Pj39/b19fTz8vDv7u3r6ujn5d/RycjGxsXD
wpUElQAUK7jo6ers7e/w8vP09vf4+fr7+/z8gf2H/oj9iPyE+4L6gPke+Pj39/b19fTz8vHw
7+3s6+no5uXfzsnIxsbFxMOdKZcAFEG+6Onr7O7v8fL09fb3+Pn6+/v8/IL9gf6H/Yb8hvuD
+oH5IPj49/f29vX19PPy8fDv7u3r6unn5uTezcnHxsbFxMOjPJkAEUi96Orr7e7w8fP09ff4
+fr6+4D8i/2F/IX7hPqC+YD4gPcd9vb19PTz8vHw7+7t7Ovp6Ofl5NrLyMfGxsTDw6NDmwAR
Rbnp6uzt7/Dy8/X29/j5+vv7gPyH/YP8hPuE+oP5gfiA94D2HfX19PPz8vHw7+7t7Ovq6efm
5eLWycjHxsXEw8KfPp0AETOw6uvt7vDx8/T19/j5+vr7+4D8g/2D/IL7gvqE+YL4gfeA9oD1
HfT08/Ly8fDv7u3s6+rp6Ofl5ODSycjGxsXEw8KXLp8ADhCi4uzt7/Dy8/X29/j5+oD7iPyB
+4L6gfmD+IL3gfaA9SD09PPz8vLx8PDv7u3s6+rp6Ofm5OPdzsjHxsbFxMO7ig6iAA2J0+3u
8PHz9Pb3+Pn5+oD7hPyB+4H6gPmC+IH3gvaB9YD0IPPz8vLx8fDw7+7u7ezr6uno5+bl5OHY
ysjHxsXExMOwdqUADWG/7u/x8vT19vf4+fr6h/uB+oD5gPiA94H2gfWB9IDzgPIf8fHw8O/v
7u7t7Ovr6uno5+bl5OPe0sjHxsbFxMPCoFSnAAsboN/w8vP09vf4+PmA+oL7gfqA+QH4+ID3
gPaA9YD0gfOB8gHx8YDwHu/v7u7t7ezr6+rp6Ofn5uXk4+HZzsfGxsXFxMO2iBmqAAtpwfHz
9PX29/j4+fmE+oD5Afj4gPcD9vb19YD0gPOA8oDxgPCA74DuHO3t7Ozr6urp6Ojn5uXk4+Lh
3dPJx8bGxcTDwp9arQAJBJHU8/T29vf4+IX5Afj4gPcL9vb19fT08/Py8vHxgPCB74DugO0e
7Ozr6+rq6eno5+fm5eXk4+Lh4NfNx8bGxcTDw615BLAABjaj3fX29/eF+ID3Dvb29fX08/Py
8vHx8PDv74DugO2A7IDrAerqgOkO6Ojn5ubl5OTj4uHh4NnQgMYGxcTEw7CGLrQABEbI9fb2
hfcT9vb19fTz8/Ly8fDw7+/u7u3t7OyA64DqgOkB6OiA5xfm5uXl5OPj4uHh4N/b0snGxsXE
xMOwiju3AAOc9PX1hPYT9fX09PPy8vHw7+/u7u3s7Ovr6uqA6YDogOcB5uaA5Rbk5OPj4uLh
4ODf39rRysbFxcTDw6yCNLkAA77z9PSC9YD0D/Py8vHw8O/u7e3s6+vq6umA6AHn54DmgOUB
5OSA4xXi4uHh4ODf397e19DIxsXExMO6nnAVuwAA14DzgfQX8/Py8vHw8O/u7e3s6+rq6ejo
5+fm5uXlgOSA4wHi4oDhgOAQ39/e3t3b083GxcTEw76qhEi9AANB2eTtg/IX8fDw7+7u7ezr
6urp6Ofn5uXl5OTj4+LigOGA4IHfAd7egN0L29XQycXExMO6pIVPwAAGo9bW2ujx8YDwFO/v
7u3s7Ovq6ejn5+bl5OTj4uLh4YDggN+A3oHdBdzc2tTPyYDEBL2tlHA1wgABA82A1QDggO8Y
7u7t7ezr6uno6Ofm5eTj4+Lh4eDg39/e3oHdgdwM29nV0MvGxLuun4ZmMsYAAJWB1Czk7u3t
7Ozr6urp6Ofm5eTk4+Lh4ODJn6+6w8vQ1NfY29jUzca+tKqdkX9oSRnKABMZytLT0tLn7Ovr
6urp6Ofn5drb3IDdgN4BqwLhAACrgdEA1IDqEOno6Ofm5d/NzMvKycjHx8SI4gAAfIHQFM/c
6ejo5+bm5eTYy8rJycjHxsa8YeIAAUPKgs8S5Ofm5uXk4+HRysnIx8fGxsWqI+IAAQq+gM8N
zs7Y5uXk5OPi28vJyMeAxgLFwIXkAAOsz87OgM0J4eTj4uLg08jHx4DGA8XErz7kAA6izs3N
zMzL2OPi4eDbzMeAxgTFxcS6e+UADZzOzczMy8rR4uHg3dHHgMYFxcTEvI4V5QAMlM3NzMvK
yc3f4N3TyIDGBcXExLuDFeYAC5rNzMvLysnJ29zRyIDGBcXExLZ6CeYACwqvzczLysnIx9LR
yIDGBMXExLBw6AAKNLzOzcvKycjDxceAxgTFxL2ZVekAEVbGzs3Myse/t73HxsbFvqVuCeoA
D37Lz83Lxbu0s7zHxryhag7sAAye0M3Gv7e1tLOzqH037gAKO7bEvbq4tKWPcjnxAAZ2rqmd
iGg//wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ANAAdDhtawAAQAgAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDRYeJSsxNzs/QkRG
R0ZEQj87NzErJR4WDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAIFiIsN0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRzcsIhYIAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAChknNUdHR0dHUWl/k6a3xtTg6vL5/f/9+fLq4NTGt6aTf2lR
R0dHR0c1JxkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQITNHR0dHXX2budXx////////
//////////////////////////HVuZt9XUdHR0czIRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAi
OUdHR1+Fq8/z///////////////////////////////////////////////zz6uFX0dHRzki
EAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABCB03R0dHbZnF7v//////////////////////////////////////
///////////////////uxZltR0dHNx0IAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDy5HR0domcn4////////////////
//////////////////////////////////////////////////jJmWhHR0cuDwEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEjRH
R1CFuu7/////////////////////////////////////////////////////////////////
////////7rqFUEdHNBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABETVHR16X0P//////////////////////////////////////////
///////////////////////////////////////Ql15HRzURAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDDNHR2Kf2///////////////////
////////////////////////////////////////////////////////////////////259i
R0czDAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAixH
R1ub3P//////////////////////////////////////////////////////////////////
/////////////////////////9ybW0dHLAIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABARI8R0qO0f//////////////////////////////////////////
///////////////////////////////////////////////////////RjkpHPBIBAQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEvR0d1vP//////////////////
////////////////////////////////////////////////////////////////////////
////////////vHVHRy8BAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEM
O0dSnOb/////////////////////////////////////////////////////////////////
////////////////////////////////////////5pxSRzsMAQEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAEBE0RHcb7/////////////////////////////////////////
/////////////////////////////////////////////////////////////////////75x
R0QTAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAi1HR4zb////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////9uMR0ctAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB
AQIzR02g8///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////OgTUczAgEBAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQECNkdbsP//////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////+wXEc2AgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAjZHY7v/////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////+8ZEc2AgEBAAAAAAAAAAAAAAAAAAAAAAAA
AAABAQI1R2XB////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////CZ0c1
AgEBAAAAAAAAAAAAAAAAAAAAAAAAAQECMkdiwP//////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////DZEcyAgEBAAAAAAAAAAAAAAAAAAAAAAEBAi1HWbr/////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////++W0ctAgEBAAAAAAAAAAAA
AAAAAAABAQITR0qu////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////+zSkcTAgEBAAAAAAAAAAAAAAAAAAECCkJHm///////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////+hR0IKAgEAAAAAAAAAAAAAAAABAgM3R4Pt////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////CIRzcDAgEA
AAAAAAAAAAAAAQIDGkdk0P//////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////9dmRxoDAgEAAAAAAAAAAAEBAgtCR63/////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////7VHQgsCAQEAAAAAAAAAAQIEMEeC
9f//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
94lHMAQCAQAAAAAAAAECAxBHUMb/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////0FFHEAMCAQAAAAAAAQIFMUeQ////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////mUcxBQIBAAAAAAEC
BA9HUc3/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////WU0cPBAIBAAAAAQMFI0eJ////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////+WRyMFAwEAAAECBAc7R8D/////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////81IOwcE
AgEAAQMFF0du9f//////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////+HpHFwUDAQACAwcnR53/////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////rUcnBwMCAQIFCTdHyf//////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///VTTcJBQIBAwYTR2Dy////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////VwRxMGAwEECCBHgv//////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////5dHIAgEAgUJK0eg
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////tEsrCQUCBgszR7z/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////LUzMLBgMHDDpH0///////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////91cOgwH
AwgOQUfm////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////7GFBDggECQ9ER/P/////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////2Y0QPCQUKEEZH/P//////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//1lRhAKBgsRRkf8////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////WVGEQsGDBJFR/P/////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////2ZUUSDAcME0JH5v//
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////////+xlQhMMBw0TPEfT////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////3WU8Ew0HDRQ3R7z/////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////LZTcUDQgN
FDFHoP//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////7RlMRQNCA0TKUeC////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////mmUpEw0HDBMhR2D0////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////V8
YyETDAcMEho9R9H/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////1WVYGhIMBwsRGTNHqP//////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////+xZUoZEQsGChAYKUd39///
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////+IllNxgQCgYJDxYfQUvK////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////OZWAjFg8JBQgOFB00R5r/////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////6BlUR0UDggEBwwS
GihHYdX/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////YbmU9GhIMBwMGCxEYID1Nov//////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////6ZlXCgYEQsGAwUJDxUeLEdmz///////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////SbmVGHhUP
CQUCBAgNExsjPVOX9///////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////+JplXjEbEw0IBAIDBgoQFyArR2C6////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////++ZWNIIhcQCgYDAQIFCQ4UHCU2VH3Y
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////239l
VzQcFA4JBQIBAgMHCxEYICpEXpfw////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////GaZWBFIhgRCwcDAgEBAwUJDhQcJTBPZKz/////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////sGVjUTAcFA4JBQMBAAECBAcL
ERggKDZaZ7v/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/79nZVc+IBgRCwcEAgEAAAEDBQkOFBsjLERgdMb/////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////KdmVfSCgbFA4JBQMBAAAAAQIEBwoQFh4mLktjfMr/////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////zn5lYE4xHhYQCgcEAgEA
AAAAAQIFCAwSGCAoMVJlfsv/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/////86AZWFSOCAYEgwIBQIBAAAAAAABAgMGCQ4UGyIqNFZlfcb/////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////Kf2ViVD8jGxQOCQYDAgEAAAAAAAABAgQHCg8VHCQs
N1hldr3/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////wXhlY1VDJxwVDwoH
BAIBAAAAAAAAAAEBAgUIDBEXHiUtOVllarD1////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////9rRrZWJVRSoeFxEMCAUCAQEAAAAAAAAAAAECAwUIDRIYHyYtO1hlZZ7h////////
////////////////////////////////////////////////////////////////////////
/////////////////////////////////+OiZWVhVUUsHxgSDQgFAwIBAAAAAAAAAAAAAAEC
AwYJDRIYHyYtOlNlZYjJ////////////////////////////////////////////////////
///////////////////////////////////////////////////////////Ni2VlXVVDKx8Y
Eg0JBgMCAQAAAAAAAAAAAAAAAAECBAYJDhMYHyYtOE5kZW6s6v//////////////////////
////////////////////////////////////////////////////////////////////////
///////////ssG9lZF1VQSofGBMOCQYEAgEAAAAAAAAAAAAAAAAAAQECBAYKDhMYHyUsNElh
ZWWMx///////////////////////////////////////////////////////////////////
////////////////////////////////////y49lZWNaUj0mHxgTDgoGBAIBAQAAAAAAAAAA
AAAAAAAAAQECBAcKDhIYHiQrMkRaZWVnoNj/////////////////////////////////////
////////////////////////////////////////////////////////////26RnZWVfWE43
JB4YEg4KBwQCAQEAAAAAAAAAAAAAAAAAAAAAAQECBAYJDRIXHSMqMD1RY2Vldqzh////////
////////////////////////////////////////////////////////////////////////
////////////47B4ZWVjXFZGMiMdFxINCQYEAgEBAAAAAAAAAAAAAAAAAAAAAAAAAQECBAYJ
DREWHCInLTVIXGRlZXvK////////////////////////////////////////////////////
////////////////////////////////////47N9ZWVkXllRPSkiHBYRDQkGBAIBAQAAAAAA
AAAAAAAAAAAAAAAAAAAAAQECBAYJDBAVGh8lKzE/UGJlZab/////////////////////////
////////////////////////////////////////////////////////////26x6ZWVkYVtW
RjMlHxoVEAwJBgQCAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAwYICw8TGB0jKC42R1xl
wf//////////////////////////////////////////////////////////////////////
///////////yyZ1tZWVkYlxYTTopIh0YEw8LCAYDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAQECAwUHCg0RFhsgJi0zSVXj////////////////////////////////////////////
//////////////////////////////////rVrYNlZWVkYVxZTz4uJR8aFhENCgcFAwIBAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwQGCQwPFBkfJTNHXf//////////////////
////////////////////////////////////////////////////////8tGuh2VlZWVjYFxZ
T0AwJiEcGBMPDAkGBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgQFCAoO
ExgfPUei////////////////////////////////////////////////////////////////
//////bavZ17ZWVlZWRiX1tYTT8vJyIdGRURDQoIBQQCAQEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEBAgMFBwoOFCJHSe7/////////////////////////////////////
//////////////////////////TfyLCVeWVlZWVlZGFgXVpVSDotJiIeGRYSDgsJBgUDAgEB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIEBwsQN0eT////////////
/////////////////////+C1w8/b5e30+v3//fr07ubd0se4qJeDbmVlZWVlZWVjYWBdW1dM
QDMqJSIeGRYSDwwJBwUDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAABAQMFCSFHUO7////////////////////////////////AZ2VlZWVlZWVlZWVlZWVlZWVl
ZWVlZWVlZWVlZGJgX1xbVktANSsnJCAdGRYSDwwKCAYEAwIBAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgUQQEex///////////////////////////////9
rmVlZ2ZmZmVlZWVlZWVlZWVlZmVlZWVkY2FgX15cW1dORjwyKyglIh4bGBURDwwKCAYEAwIB
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDBjZHf///////
////////////////////////8pJlZWVkY2JhYWFhYWFhYWFhYWBgYF9fXVxbW1dQSUM7Mywq
JyQhHhwZFhMQDgwJBwYEAwIBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAABAgQuR1/0/////////////////////////////9dzZWViYFdNT1FTVFdYWltb
W1pXVlNQTUpGQj03MS0rKSclIiAdGxgWFBEPDQsJBwYEAwIBAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEDHUdL2P//////////////////////////
//qsZWVkYFtLNTMyMTExMTExMTExMTAvLy4tLCsqKCYlIyEfHRsZFxUTEQ8NCwkIBgUEAwIB
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAhhHR7P/
///////////////////////////ef2VlY1tXQS4rKScmJiYmJiYmJiYmJSUkIyMiIB8eHRsa
GBcVFBIQDg0LCQgHBQQDAgIBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAABAQIVR0em///////////////////////////ypWVlZF5ZUTcqJSIfHh0c
HBwcHR0dHBwcGxsaGRkYFxYVExIRDw4NDAoJCAYFBAMCAgEBAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECFEdHoP//////////////////////
///1tW1lZWJbVkgtJiEdGRcWFRQUFBQUFBQUFBQTExISERAQDw4NDAsKCQgHBgUEAwICAQEB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAh5H
R5f////////////////////////wrG1lZWReWVQ9KCIdGRUSEA8ODQ0NDQ4ODg0NDQ0MDAwL
CgoJCAgHBgUFBAMCAgEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABAQItR0ee///////////////////////ppWplZWRgW1ZKMCUgGxYS
DgwKCQgICAgICAgICAgIBwcHBwYGBQUEBAMDAgIBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEGMUdLuv//////////////////
///jnmVlZWVhXFhROygjHRgTDwwJBwYFBAQEBAQEBAQEBAQDAwMDAwICAgEBAQEBAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB
CzdHWNT///////////////////XEimVlZWRgXFlSPywlHxsWEQ0KBwUEAgIBAQEBAQEBAQEB
AQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAABAhNAR2fp////////////////+dGZamVlZWRhXFlSPy0mIRwY
Ew8MCQYEAwIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIkR0d/9v/////////////w
yZdrZWVlZWNfXFlQPS0nIh4ZFRENCggFAwIBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AQEHMkdHnv//////////8M6le2VlZWVlZGBeW1hOOisnIh4aFhIODAkGBQMCAQEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABBz9HWsz//////ePFpX1lZWVlZWVjYF9cWlRFNSomIh4a
FhIPDAkHBQMCAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEXSIXUzrylnIBlZWVl
ZWRjYmBfXVtaVko7LiklIR0ZFhIPDAoIBgQDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABAghEVVVVYGVlZWVhXltaWltbWlhTSTwuKiYjHxwYFRIPDAoIBgQDAgEBAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAxNCVVVTUE5MS09RU1VVUUk/My0qJyQgHRoX
FBEODAkIBgQDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIECiI0NDk/
Q0ZKTEdCOjIsKiglIyAdGxgVEhANCwkHBgQDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAEBAgQIEigwMDAtLCklJSYlJCMhHhwaFxUTEA4MCggHBQQDAgEBAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECBAYJDQ8SFhkbHR4eHh0cGhgWFBIQ
DgwKCQcGBQMCAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQID
BQgKDQ8SFBYXFxcWFRQSEQ8ODAoJBwYFBAMCAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAABAgMFBggKDA4PEBEREBAPDgwLCQgHBgUEAwICAQEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgMFBggJCgsMDAwLCgkI
BwYFBAMDAgEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAQECAwMFBgYHBwcHBwYGBQQDAwICAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAgMDBAQEBAQDAwICAgEBAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAgIC
AQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA"""
# Echo server program
import socket
import shlex, subprocess
import sys
import os
import os.path
import base64
import signal
__author__ = 'Bernard `Guyzmo` Pratz'
__credits__ = ["Bernard `Guyzmo` Pratz", "Charles `doublerebel` Philips", "Rui Abreu Ferreira"]
__email__ = 'guyzmo AT m0g DOT net'
__status__ = "Production"
__NAME__ = 'irssi-notify-listener.py'
__version__ = "0.9"
__maintainer__ = "Bernard `Guyzmo` Pratz"
__description__ = 'Use libnotify over SSH to alert user for hilighted messages'
__license__ = 'WTF Public License <http://sam.zoy.org/wtfpl/>'
__url__ = 'http://github.com/guyzmo/irssi-over-ssh-notifications'
__updated__ = '''Last update: Sun Feb 26 20:08:42 CEST 2012
'''
NOTIFIER_GROWL = '/usr/local/bin/growlnotify'
NOTIFIER_DBUS = '/usr/bin/notify-send'
HOST = 'localhost'
PORT = 4222
# Daemonization
PID_FILE = "/tmp/irssi-notify-listener.pid"
UMASK = 766
WORKDIR='/tmp/'
MAXFD=1024
if (hasattr(os, "devnull")):
REDIRECT_TO = os.devnull
else:
REDIRECT_TO = "/dev/null"
def createDaemon():
"""Detach a process from the controlling terminal and run it in the
background as a daemon.
"""
try:
pid = os.fork()
except OSError, e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): # The first child.
os.setsid()
try:
pid = os.fork() # Fork a second child.
except OSError, e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): # The second child.
os.chdir(WORKDIR)
os.umask(UMASK)
else:
os._exit(0) # Exit parent (the first child) of the second child.
else:
os._exit(0) # Exit parent of the first child.
import resource # Resource usage information.
maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
if (maxfd == resource.RLIM_INFINITY):
maxfd = MAXFD
# Iterate through and close all file descriptors.
for fd in range(0, maxfd):
try:
os.close(fd)
except OSError: # ERROR, fd wasn't open to begin with (ignored)
pass
# This call to open is guaranteed to return the lowest file descriptor,
# which will be 0 (stdin), since it was closed above.
os.open(REDIRECT_TO, os.O_RDWR) # standard input (0)
# Duplicate standard input to standard output and standard error.
os.dup2(0, 1) # standard output (1)
os.dup2(0, 2) # standard error (2)
return(0)
def shutdownDaemon(signum, stack):
"""Remove the PID file and exit with return code 1"""
os.unlink(PID_FILE)
sys.exit(1)
# decode the icon put at begining of the script
def write_icon(file, data):
f = open(file, "w")
f.write(base64.b64decode(data))
f.close()
# define the command used with darwin systems
def notify_growl(args):
args = args.split(':')
return [NOTIFIER_GROWL, '-s', '-n', 'Terminal', '--image', 'irssi.icns', '-m', ':'.join(args[1:]), args[0]]
# define the command used with linux systems
def notify_dbus(args):
args = args.split(':')
return [NOTIFIER_DBUS, '-i', 'dialog-information', '-t', '5000', ':'.join(args[1:]), args[0]]
# define 'notify' function depending on running platform (whether it is darwin or linux)
if sys.platform == 'darwin':
if not os.path.isfile(NOTIFIER_GROWL):
print 'Please install Growl and check if growlnotify exists and is correctly set in source'
sys.exit(1)
notify = notify_growl
write_icon("/tmp/irssi.icns", _ICON_DATA_)
elif sys.platform == 'linux2':
if not os.path.isfile(NOTIFIER_DBUS):
print 'Please install libnotify and check if the notify command exists and is correctly set in source'
sys.exit(1)
notify = notify_dbus
if __name__ == '__main__':
fg = False
### check arguments
# check for help
if len(sys.argv) == 2 and sys.argv[1] in ('-h', '--help') or len(sys.argv) > 2 :
print '''Usage: %s [-s|-f|-h]
Usage: %s [--stop|--foreground|--help]
Running with no argument or one wrong argument, will still launch the daemon.
Only one argument is expected. More will give you that help message.
-s|--stop stop the running daemon
-f|--foreground executes in foreground (and outputs all notifications to stdout)
-h|--help this help message
''' % (sys.argv[0], sys.argv[0])
sys.exit(0)
# check for -stop
if len(sys.argv) == 2 and sys.argv[1] in ('--stop', '-s'):
if not os.path.isfile(PID_FILE):
print 'nothing to stop. exiting...'
sys.exit(1)
try:
os.kill(int(open(PID_FILE, 'r').read()), 9)
except ValueError, ve:
print 'Invalid PID file. exiting...'
sys.exit(1)
except OSError, oe:
print 'Invalid PID: %s. Process has already exited. exiting...' % int(open(PID_FILE, 'r').read())
sys.exit(1)
os.unlink(PID_FILE)
print 'notify daemon killed'
sys.exit(0)
if os.path.isfile(PID_FILE):
print 'Daemon is already running... Exiting.'
sys.exit(1)
# Shutdown if the process is killed
signal.signal(signal.SIGTERM, shutdownDaemon)
if not (len(sys.argv) == 2 and sys.argv[1] in ('-f', '--foreground')):
print 'Starting server as daemon...'
retCode = createDaemon()
# create PID file
f = open(PID_FILE, 'w').write(str(os.getpid()))
else:
fg = True
print 'Starting server in foreground mode...'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
if fg is True: print 'Listening on '+str(HOST)+':'+str(PORT)+'...'
# daemon main loop
while True:
conn, addr = s.accept()
while 1:
data = conn.recv(1024)
if not data: break
if fg is True: print 'RCPT: '+str(data)
p = subprocess.Popen(notify(data))
conn.close()
sys.exit(retCode)