Skip to content

Instantly share code, notes, and snippets.

@ibodrov
Created September 23, 2015 20:29
Show Gist options
  • Save ibodrov/42f6cd7eb9d41dd887d6 to your computer and use it in GitHub Desktop.
Save ibodrov/42f6cd7eb9d41dd887d6 to your computer and use it in GitHub Desktop.
101
103
105
106
107
108
109
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
141
142
143
144
145
146
147
149
150
151
152
154
159
160
169
173
174
179
181
182
184
187
195
198
199
213
214
215
216
225
229
235
236
249
256
259
263
264
267
268
269
270
271
277
279
280
281
282
284
287
289
292
293
297
298
301
302
304
308
312
313
315
334
335
355
356
358
359
361
362
364
365
366
367
369
370
371
372
373
374
376
378
381
387
389
391
392
393
394
395
396
400
402
405
406
428
433
436
439
455
456
459
463
464
465
467
468
469
471
472
475
476
478
479
481
484
485
486
487
492
494
495
497
500
501
502
503
504
520
521
522
524
527
531
532
534
535
538
539
540
541
547
551
555
563
565
569
575
576
592
608
658
659
697
702
707
743
744
745
762
763
764
765
766
768
769
771
772
773
774
776
778
779
780
782
783
784
785
787
788
789
791
795
796
799
800
801
802
804
805
806
807
808
809
810
811
823
825
826
827
828
830
831
833
847
865
873
875
876
877
878
879
880
881
882
884
887
890
900
901
902
903
905
910
911
912
913
914
915
917
919
920
921
922
924
951
966
967
974
977
996
1017
1044
1046
1052
1054
1059
1066
1086
1089
1090
1093
1106
1150
1157
1159
1162
1166
1168
1186
1229
1254
1266
1267
1286
1308
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1331
1333
1351
1371
1372
1374
1375
1391
1393
1394
1395
1396
1416
1417
1436
1437
1456
1457
1459
1476
1496
1497
1498
1499
1500
1501
1505
1506
1507
1509
1511
1512
1516
1517
1518
1536
1537
1557
1558
1559
1577
1578
1579
1581
1582
1583
1585
1586
1588
1589
1591
1599
1600
1601
1604
1619
1620
1642
1647
1650
1662
1664
1673
1675
1698
1700
1709
1717
1719
1740
1742
1744
1756
1758
1764
1765
1785
1786
1788
1795
1798
1799
1813
1817
1821
1835
1839
1843
1904
1910
1949
1959
1967
1968
1974
1979
1982
2000
2002
2006
2023
2024
2035
2037
2049
2057
2067
2070
2082
2092
2106
2117
2130
2133
2142
2145
2151
2159
2167
2168
2202
2205
2216
2218
2226
2227
2229
2242
2243
2245
2257
2262
2268
2275
2276
2277
2279
2281
2291
2293
2304
2305
2306
2313
2320
2342
2346
2375
2380
2381
2393
2397
2409
2417
2418
2421
2429
2430
2436
2440
2463
2464
2468
2472
2484
2491
2492
2494
2515
2519
2521
2556
2557
2570
2584
2592
2595
2602
2611
2612
2616
2617
2634
2637
2638
2640
2664
2665
2667
2671
2676
2691
2696
2703
2707
2709
2714
2715
2717
2726
2729
2730
2753
2762
2768
2779
2808
2810
2811
2821
2826
2890
2909
2913
2921
2922
2943
2967
2971
2976
2980
2983
2984
2985
2986
2987
2988
2993
2994
2995
2996
2997
3000
3001
3002
3003
3004
3007
3008
3009
3010
3011
3013
3014
3015
3016
3017
3040
3041
3048
3055
3077
3085
3086
3091
3099
3106
3110
3115
3119
3124
3127
3129
3133
3140
3150
3151
3152
3153
3154
3166
3176
3178
3204
3217
3248
3250
3254
3256
3269
3270
3291
3293
3300
3302
3314
3328
3333
3335
3338
3353
3354
3355
3361
3363
3380
3382
3391
3401
3402
3427
3438
3439
3451
3454
3455
3460
3464
3469
3471
3472
3474
3496
3497
3499
3516
3530
3556
3566
3578
3586
3590
3595
3606
3611
3614
3625
3632
3633
3653
3670
3672
3675
3677
3679
3691
3713
3718
3723
3728
3732
3737
3743
3752
3756
3759
3768
3772
3774
3776
3779
3783
3787
3794
3797
3831
3835
3851
3871
3876
3893
3904
3924
3929
3935
3971
4006
4009
4012
4014
4036
4043
4049
4056
4057
4060
4080
4095
4101
4105
4107
4118
4129
4142
4162
4164
4171
4176
4177
4180
4192
4194
4196
4202
4216
4235
4254
4255
4261
4269
4275
4277
4282
4284
4309
4312
4316
4319
4328
4330
4336
4342
4345
4379
4387
4389
4401
4403
4411
4425
4427
4428
4431
4439
4441
4452
4454
4455
4463
4474
4479
4480
4483
4485
4487
4488
4502
4504
4515
4529
4535
4536
4542
4543
4558
4562
4574
4580
4581
4584
4588
4593
4594
4631
4648
4653
4668
4671
4692
4694
4696
4699
4703
4709
4711
4720
4724
4739
4741
4742
4743
4745
4747
4752
4779
4807
4808
4810
4815
4838
4845
4854
4862
4867
4868
4879
4884
4891
4895
4900
4918
4927
4928
4943
4949
4961
4965
4972
4975
4985
4989
4996
5012
5017
5023
5025
5036
5037
5051
5052
5070
5077
5092
5095
5099
5100
5112
5115
5116
5123
5127
5132
5139
5140
5146
5158
5169
5179
5188
5196
5220
5236
5251
5268
5280
5292
5296
5310
5314
5318
5325
5332
5335
5338
5346
5349
5350
5361
5368
5369
5374
5379
5414
5415
5428
5446
5456
5490
5492
5493
5512
5513
5514
5519
5528
5546
5554
5559
5568
5571
5583
5592
5597
5607
5608
5611
5622
5623
5624
5647
5653
5674
5677
5679
5692
5700
5704
5716
5724
5725
5726
5730
5731
5741
5744
5746
5787
5790
5793
5797
5807
5838
5839
5842
5843
5845
5859
5861
5913
5916
5920
5923
5938
5939
5945
5966
5972
6037
6040
6043
6048
6052
6053
6054
6055
6056
6073
6078
6079
6084
6119
6135
6152
6155
6159
6161
6162
6165
6177
6178
6179
6187
6205
6210
6215
6230
6255
6261
6263
6268
6272
6277
6278
6282
6284
6290
6293
6299
6306
6314
6316
6317
6321
6322
6323
6327
6330
6332
6337
6350
6351
6354
6361
6372
6373
6377
6389
6396
6397
6403
6404
6411
6415
6427
6428
6431
6433
6434
6440
6450
6457
6458
6464
6470
6474
6481
6483
6484
6496
6504
6506
6507
6515
6522
6525
6526
6527
6531
6534
6536
6538
6543
6545
6557
6566
6570
6572
6581
6582
6584
6587
6588
6589
6590
6592
6597
6603
6604
6607
6612
6616
6624
6625
6636
6658
6659
6662
6674
6679
6681
6684
6686
6690
6698
6705
6706
6708
6715
6717
6718
6741
6753
6754
6755
6758
6760
6766
6769
6770
6776
6781
6784
6786
6788
6791
6795
6805
6812
6817
6818
6819
6830
6835
6838
6839
6846
6855
6861
6866
6870
6873
6876
6880
6916
6919
6922
6927
6931
6932
6941
6945
6947
6948
6966
6967
6970
6972
6976
6981
6989
6993
7016
7021
7022
7024
7028
7037
7044
7045
7050
7052
7055
7056
7061
7062
7072
7079
7080
7092
7107
7109
7122
7127
7128
7139
7143
7145
7149
7152
7153
7162
7167
7171
7190
7219
7222
7223
7224
7225
7231
7239
7240
7241
7249
7253
7255
7259
7260
7268
7271
7288
7289
7290
7297
7301
7307
7308
7318
7332
7333
7342
7347
7348
7350
7358
7360
7362
7383
7386
7387
7388
7390
7391
7392
7396
7404
7423
7429
7433
7436
7437
7440
7448
7459
7466
7473
7474
7477
7479
7482
7492
7495
7502
7521
7523
7529
7534
7536
7537
7539
7540
7552
7565
7585
7588
7596
7614
7616
7639
7641
7659
7660
7661
7662
7680
7683
7686
7688
7695
7707
7709
7728
7736
7745
7747
7754
7755
7760
7764
7777
7788
7796
7806
7812
7848
7850
7854
7865
7867
7889
7894
7895
7947
7949
7954
7969
7975
7979
7982
7989
8012
8028
8036
8046
8057
8063
8068
8073
8093
8094
8095
8096
8097
8111
8112
8124
8140
8151
8160
8162
8166
8169
8176
8177
8180
8186
8196
8206
8209
8211
8214
8218
8219
8221
8222
8231
8234
8250
8252
8254
8262
8268
8274
8282
8284
8290
8299
8300
8306
8309
8310
8320
8327
8328
8330
8338
8343
8348
8354
8356
8357
8360
8362
8396
8397
8398
8413
8414
8417
8418
8428
8430
8462
8475
8478
8479
8484
8488
8489
8490
8492
8494
8496
8522
8533
8542
8545
8550
8551
8553
8555
8560
8585
8599
8600
8602
8606
8609
8612
8615
8616
8626
8627
8629
8633
8642
8645
8651
8653
8659
8663
8665
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment