File size: 125,785 Bytes
5e4028d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9e2c6174",
   "metadata": {},
   "source": [
    "# Phase 11 — Residual Error Analysis\n",
    "\n",
    "Phases 6 and 7 built and calibrated the flagger. This notebook digs into the residual errors themselves: **where do they come from after Claude vision post-correction, and what patterns are visible across the dataset?**\n",
    "\n",
    "**Three things we look at:**\n",
    "1. **Char-level confusion** — when the corrected text differs from ground truth, *what kinds of characters* are getting substituted, dropped, or inserted? Are there systematic patterns?\n",
    "2. **Cherry-picked failure cases** — three lines that exemplify different failure modes, with the actual handwriting image alongside the texts.\n",
    "3. **What a v2 would do** — concrete directions to improve based on what we see.\n",
    "\n",
    "**Inputs**: same parquet as Phase 6/7 (`data/parquet_cache/iam_gw_pipeline.parquet`, 656 lines, 20 docs)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "eb49649e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.100924Z",
     "iopub.status.busy": "2026-05-04T22:12:07.100655Z",
     "iopub.status.idle": "2026-05-04T22:12:07.540272Z",
     "shell.execute_reply": "2026-05-04T22:12:07.539719Z"
    }
   },
   "outputs": [],
   "source": [
    "import difflib\n",
    "from collections import Counter\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from PIL import Image\n",
    "\n",
    "PROJECT_ROOT = Path.cwd().parent if Path.cwd().name == \"notebooks\" else Path.cwd()\n",
    "PARQUET = PROJECT_ROOT / \"data\" / \"parquet_cache\" / \"iam_gw_pipeline.parquet\"\n",
    "LINE_IMAGES = (\n",
    "    PROJECT_ROOT / \"data\" / \"raw\" / \"iam_gw\" / \"washingtondb-v1.0\"\n",
    "    / \"data\" / \"line_images_normalized\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5f8dbc2",
   "metadata": {},
   "source": [
    "## 1. Load the data and filter to residual errors\n",
    "\n",
    "A \"residual error\" line is one where the post-corrected text still differs from ground truth on at least one character (`gt_cer > 0`). These are the lines the flagger is meant to catch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2715b534",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.541869Z",
     "iopub.status.busy": "2026-05-04T22:12:07.541728Z",
     "iopub.status.idle": "2026-05-04T22:12:07.585336Z",
     "shell.execute_reply": "2026-05-04T22:12:07.584944Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total lines: 656\n",
      "residual error lines: 498 (75.9%)\n",
      "mean residual CER (on those lines): 0.281\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_parquet(PARQUET)\n",
    "errors = df[df[\"gt_cer\"] > 0].copy()\n",
    "print(f\"total lines: {len(df)}\")\n",
    "print(f\"residual error lines: {len(errors)} ({len(errors)/len(df):.1%})\")\n",
    "print(f\"mean residual CER (on those lines): {errors['gt_cer'].mean():.3f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e2f1264",
   "metadata": {},
   "source": [
    "## 2. Char-level confusion analysis\n",
    "\n",
    "For each error line, align `corrected_text` and `gt` with `difflib.SequenceMatcher` and count three operation types:\n",
    "\n",
    "- **Substitutions**: model wrote X, ground truth says Y\n",
    "- **Deletions**: model wrote chars that aren't in ground truth (over-generation)\n",
    "- **Insertions**: model missed chars that are in ground truth (under-generation)\n",
    "\n",
    "The top-k of each tells us *what kinds* of edits the model is consistently getting wrong."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bce25c13",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.586619Z",
     "iopub.status.busy": "2026-05-04T22:12:07.586532Z",
     "iopub.status.idle": "2026-05-04T22:12:07.619850Z",
     "shell.execute_reply": "2026-05-04T22:12:07.619430Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "unique substitution pairs: 557\n",
      "unique deletion patterns:  139\n",
      "unique insertion patterns: 200\n"
     ]
    }
   ],
   "source": [
    "substitutions: Counter = Counter()  # (model_chars, gt_chars) -> count\n",
    "deletions: Counter = Counter()      # model_chars -> count (model added these)\n",
    "insertions: Counter = Counter()     # gt_chars -> count (model dropped these)\n",
    "\n",
    "for _, row in errors.iterrows():\n",
    "    pred = row[\"corrected_text\"]\n",
    "    truth = row[\"gt\"]\n",
    "    sm = difflib.SequenceMatcher(None, pred, truth, autojunk=False)\n",
    "    for tag, i1, i2, j1, j2 in sm.get_opcodes():\n",
    "        if tag == \"equal\":\n",
    "            continue\n",
    "        if tag == \"replace\":\n",
    "            substitutions[(pred[i1:i2], truth[j1:j2])] += 1\n",
    "        elif tag == \"delete\":\n",
    "            # chars in pred not in truth -> model over-generated\n",
    "            deletions[pred[i1:i2]] += 1\n",
    "        elif tag == \"insert\":\n",
    "            # chars in truth not in pred -> model under-generated\n",
    "            insertions[truth[j1:j2]] += 1\n",
    "\n",
    "print(f\"unique substitution pairs: {len(substitutions):,}\")\n",
    "print(f\"unique deletion patterns:  {len(deletions):,}\")\n",
    "print(f\"unique insertion patterns: {len(insertions):,}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f6a5108",
   "metadata": {},
   "source": [
    "### Top substitution pairs\n",
    "\n",
    "> *\"The model wrote left, ground truth says right.\"*\n",
    "\n",
    "Note the substitution \"text\" can be multi-char — this is what `difflib` calls a single `replace` op. A pair like `('ie', 'ye')` means \"model wrote `ie`, gt was `ye`\" as one substitution edit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4dd5d4ab",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.621172Z",
     "iopub.status.busy": "2026-05-04T22:12:07.621086Z",
     "iopub.status.idle": "2026-05-04T22:12:07.627530Z",
     "shell.execute_reply": "2026-05-04T22:12:07.627167Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>model_wrote</th>\n",
       "      <th>ground_truth</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>,</td>\n",
       "      <td>;</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>c</td>\n",
       "      <td>C</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>o</td>\n",
       "      <td>O</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>l</td>\n",
       "      <td>L</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>.</td>\n",
       "      <td>'</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>:</td>\n",
       "      <td>'</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>O</td>\n",
       "      <td>o</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>;</td>\n",
       "      <td>'</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>W</td>\n",
       "      <td>w</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>C</td>\n",
       "      <td>c</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>n</td>\n",
       "      <td>r</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>;</td>\n",
       "      <td>,</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>m</td>\n",
       "      <td>M</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>a</td>\n",
       "      <td>e</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>b</td>\n",
       "      <td>C</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>.</td>\n",
       "      <td>-</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>e</td>\n",
       "      <td>a</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>'</td>\n",
       "      <td>\"</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>.</td>\n",
       "      <td>,</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   model_wrote ground_truth  count\n",
       "0            ,            ;     24\n",
       "1            c            C     17\n",
       "2            o            O      9\n",
       "3            l            L      7\n",
       "4            .            '      7\n",
       "5            :            '      6\n",
       "6            O            o      6\n",
       "7            ;            '      6\n",
       "8            W            w      6\n",
       "9            C            c      5\n",
       "10           n            r      4\n",
       "11           ;            ,      4\n",
       "12           m            M      4\n",
       "13           .            -      4\n",
       "14           a            e      4\n",
       "15           b            C      3\n",
       "16           .            -      3\n",
       "17           e            a      3\n",
       "18           '            \"      3\n",
       "19           .            ,      3"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_subs = pd.DataFrame(\n",
    "    [\n",
    "        {\"model_wrote\": repr(p)[1:-1], \"ground_truth\": repr(t)[1:-1], \"count\": c}\n",
    "        for (p, t), c in substitutions.most_common(20)\n",
    "    ]\n",
    ")\n",
    "top_subs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d8e617f",
   "metadata": {},
   "source": [
    "### Top deletions (model over-generated these chars)\n",
    "\n",
    "Strings the model wrote that don't exist in the ground truth."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "de5463f6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.628849Z",
     "iopub.status.busy": "2026-05-04T22:12:07.628769Z",
     "iopub.status.idle": "2026-05-04T22:12:07.632154Z",
     "shell.execute_reply": "2026-05-04T22:12:07.631659Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chars_added_by_model</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td></td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>,</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>a</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>r</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>.</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>e</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>n</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>'</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>i</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>,</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>t</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>h</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>c</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>s</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>at</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   chars_added_by_model  count\n",
       "0                           27\n",
       "1                     ,     11\n",
       "2                     a      8\n",
       "3                     r      7\n",
       "4                     .      6\n",
       "5                     e      5\n",
       "6                     n      5\n",
       "7                     '      3\n",
       "8                     i      3\n",
       "9                    ,       3\n",
       "10                    t      2\n",
       "11                    h      2\n",
       "12                    c      2\n",
       "13                    s      2\n",
       "14                   at      2"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_dels = pd.DataFrame(\n",
    "    [{\"chars_added_by_model\": repr(s)[1:-1], \"count\": c}\n",
    "     for s, c in deletions.most_common(15)]\n",
    ")\n",
    "top_dels"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a2e4683",
   "metadata": {},
   "source": [
    "### Top insertions (model under-generated — chars it dropped)\n",
    "\n",
    "Strings present in the ground truth that the model didn't transcribe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ceeb6f7c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.633280Z",
     "iopub.status.busy": "2026-05-04T22:12:07.633194Z",
     "iopub.status.idle": "2026-05-04T22:12:07.636422Z",
     "shell.execute_reply": "2026-05-04T22:12:07.636049Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>chars_missed_by_model</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>s_</td>\n",
       "      <td>212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>,</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>.</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>th</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>r</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td></td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>s</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>'</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>e</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>l</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>c</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>t</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   chars_missed_by_model  count\n",
       "0                     s_    212\n",
       "1                      ,     86\n",
       "2                      .     21\n",
       "3                     th     17\n",
       "4                      r     16\n",
       "5                            15\n",
       "6                      s     13\n",
       "7                      -     10\n",
       "8                     -       9\n",
       "9                      -      8\n",
       "10                     '      7\n",
       "11                     e      6\n",
       "12                     l      6\n",
       "13                     c      5\n",
       "14                     t      5"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_ins = pd.DataFrame(\n",
    "    [{\"chars_missed_by_model\": repr(s)[1:-1], \"count\": c}\n",
    "     for s, c in insertions.most_common(15)]\n",
    ")\n",
    "top_ins"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8765647",
   "metadata": {},
   "source": [
    "**What patterns are worth calling out:**\n",
    "\n",
    "The top substitutions and del/ins lists tell a domain-specific story. Common findings on 18th-century cursive material:\n",
    "- **Long-s confusions** — pre-1800 English used `ſ` (long s) interchangeably with `s`; even after our `s_s -> s` decoder, similar shapes (\"f\" vs \"ſ\") still cause OCR errors\n",
    "- **Punctuation drops** — periods, commas, semicolons get missed (high insertion counts for punctuation chars)\n",
    "- **Whitespace differences** — extra/missing spaces around punctuation (a common Claude over-correction)\n",
    "\n",
    "These observations point directly at what a v2 should fix — either prompt-level (instruct Claude to preserve original spacing) or feature-level (add a `frac_punct_changed` feature to the flagger so it weights these errors more strongly).\n",
    "\n",
    "## 3. Cherry-picked failure cases\n",
    "\n",
    "Three different failure modes, picked from the parquet by feature-space heuristics. For each one we'll show the ground truth, the corrected text, the TrOCR text, and the actual handwriting image so we can see what the model was looking at."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4980b38e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.637702Z",
     "iopub.status.busy": "2026-05-04T22:12:07.637619Z",
     "iopub.status.idle": "2026-05-04T22:12:07.640411Z",
     "shell.execute_reply": "2026-05-04T22:12:07.640052Z"
    }
   },
   "outputs": [],
   "source": [
    "def show_case(row, title: str, why_picked: str):\n",
    "    line_id = row[\"line_id\"]\n",
    "    img_path = LINE_IMAGES / f\"{line_id}.png\"\n",
    "\n",
    "    print(f\"=== {title} ({line_id}) ===\")\n",
    "    print(f\"why picked: {why_picked}\")\n",
    "    print()\n",
    "    print(f\"  GT       : {row['gt']!r}\")\n",
    "    print(f\"  TrOCR    : {row['trocr_text']!r}\")\n",
    "    print(f\"  Corrected: {row['corrected_text']!r}\")\n",
    "    print()\n",
    "    print(f\"  features:\")\n",
    "    print(f\"    gt_cer              = {row['gt_cer']:.3f}\")\n",
    "    print(f\"    mean_logprob        = {row['mean_logprob']:.3f}\")\n",
    "    print(f\"    frac_chars_changed  = {row['frac_chars_changed']:.3f}\")\n",
    "    print(f\"    llm_confidence      = {row['llm_confidence']:.2f}\")\n",
    "    print()\n",
    "    if img_path.exists():\n",
    "        img = Image.open(img_path)\n",
    "        plt.figure(figsize=(12, 1.5))\n",
    "        plt.imshow(img, cmap=\"gray\")\n",
    "        plt.axis(\"off\")\n",
    "        plt.tight_layout()\n",
    "        plt.show()\n",
    "    else:\n",
    "        print(f\"  (image not found at {img_path})\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a478349",
   "metadata": {},
   "source": [
    "### Case 1 — Confidently wrong\n",
    "\n",
    "TrOCR was *certain* (high mean_logprob, low magnitude) but produced text far from ground truth, and Claude didn't fix it. These are the dangerous failures: high model confidence is normally a \"trust this\" signal, and the rule-based flagger would not have caught them. The LEARNED flagger uses the agreement signal (frac_chars_changed) precisely because of cases like this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5cd03190",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.641630Z",
     "iopub.status.busy": "2026-05-04T22:12:07.641548Z",
     "iopub.status.idle": "2026-05-04T22:12:07.675853Z",
     "shell.execute_reply": "2026-05-04T22:12:07.675355Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== Confidently wrong (300-19) ===\n",
      "why picked: high mean_logprob (TrOCR certain) but high gt_cer (still wrong after Claude)\n",
      "\n",
      "  GT       : 'rer for the balance of that ten thousand'\n",
      "  TrOCR    : 'ser for the balance of that ten thousand'\n",
      "  Corrected: 'pounds, and to acquaint your Honour'\n",
      "\n",
      "  features:\n",
      "    gt_cer              = 0.825\n",
      "    mean_logprob        = -0.032\n",
      "    frac_chars_changed  = 0.825\n",
      "    llm_confidence      = 0.75\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAB3CAYAAADSBPN8AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYoBJREFUeJztnQn8VlP++G+2yjB2GjUZe0naLC1CWZI1EiMxhYisWcLITJKtrCVrBimhXwtRY6coE1FJtiG7xBjUGMzM83+9z3/OM+d7v+fe59z73Huf7fN+ve6r7/fb89x77lk/53M+S4NcLpfzBEEQBEEQBEEQBEEQBCFD1sjyYYIgCIIgCIIgCIIgCIIAopQSBEEQBEEQBEEQBEEQMkeUUoIgCIIgCIIgCIIgCELmiFJKEARBEARBEARBEARByBxRSgmCIAiCIAiCIAiCIAiZI0opQRAEQRAEQRAEQRAEIXNEKSUIgiAIgiAIgiAIgiBkjiilBEEQBEEQBEEQBEEQhMwRpZQgCIIgCIIgCIIgCIKQOaKUEoQq5/vvv/emT5+urpUrV5a6OIIgCIIgCIJQEl544QXvp59+ktoXhDKiQS6Xy5W6EIIgpMebb77ptWrVSv18/PHHe7/5zW+8Jk2aeKeffrpUuyAIgiAIglC1oIAaOXKkp7e899xzj3fMMcd4jRs3Vr8feuih3m677VbiUgpCbSNKKUGoYn7++WfvgAMO8J577rk6f99ll128RYsWlaxc1cqQIUO8Tz/91Js8ebLXoEGDUhdHEASh6rnlllu8WbNmqZ9btGjhjR49utRFEgShTLjkkku81157zZs9e3bgZ3beeWdvypQp3o477php2QRB+B+ilKpROC14//33vX333Vf9fvfdd3tdu3ZVG+m11lqr1MUTEmL16tXe+uuvnz8d0qy99trelltu6Q0bNswbMGCAt8Ya4slbDP/5z3+8f//7316XLl28V1991fv1r3/tHXfccd4f//hHNZ5EQSUIgpAcrGn/+te/vIceesgbNGiQt2rVKvX3hg0bKktgmDFjhjqAkflXEGpXLrMdzK655pp15gU+t8UWW3ibbbaZt3DhQtkHCUIJEKVUjfLXv/7Va9mypbKkAZQSTNCcMr7xxhulLp6QAJ999pkyR+Zf2GSTTbwNN9xQ/fzjjz96n3zyiVqAOWHu0KGD1HlM/vnPf3o33HCDUvAh2GgYT4yrBQsWeO3atZP6FQRBSAjklLZt26qNZ1AUCubfxYsX593XBUGoHR588EGvb9++ao7QcEi7+eabe5MmTfLat2+f/zsHiFhYIht37tzZe/HFF0tUakGoXcQkpkbZf//98wop0JP2t99+qwJiA1YfKC2Eyowj1a9fv7xCqmnTpt7YsWO9Xr16qd+XL1/u9e7dWylLPv74Y69169beOuusU+JSVyZLlixR5uF+2CihpHr22WdV/YoFoiAIQjLsvffedQ4B4OCDD643z2IBjiX4tttuq+ZhQRBqI8EPB4KmQgqOOOII79577633+SuuuELFneKA8auvvlL7IOTjrbbaKsNSC0JtI0qpGgMT1meeecb75ptvrP+P9QyTNuaubdq0EaVUhTJx4kTlQ3/eeed5v/zlL9VJsVZIAcHOzzrrLK9///7qd9pblFLR4VTt9ttvD/3Mu+++W08wEgRBEOJx1113eT/88EP+90MOOURZBV944YVeo0aN6hwMYBlxzjnnqHlalFKCUP3g1nvRRRd548aNU7//7ne/87bZZhv1M+68QVxzzTXeHXfc4b3zzjvelVdeqeYMUUoJQnaIUqrGwGLmiSee8P7+97+r3zt16lTHygOrGbKy8e93331XwpIKSbk4PP7449aYUcQTI+MIVlUs2sTmkNgb0SAugd81BJPxddddV/188803qzZA+Ye5uCAIghAfNooXX3xxHaUUFlLElbIxfvx4JdOMGTNGHbx069ZNql8QqhjipN5///3538k6rePnFoL54qijjvK+/PJLFZLhpptuUlaWgiCkjyilaoztt99eBfNjM/3222/n/as1y5YtUwoM/sWEVahs8JMPUjQ1a9ZMWUw9+uij3uuvv5552aolntSoUaPy5t8EN2/evHleCdixY0clDD355JPq9K4WXfgwo+d0Eku9a6+9Vs09ElhfEOIH7sUC9tRTT/V22GEH9XfGE+OqFt4fd2nT0puYMcy7Nlj7mH8JS/DYY495Rx99tLKeksMXQag+iAlFmAo8PuDwww/3brzxRrXncYF5ATll6tSpSjGFMhs5WRCEbJCUWzUKJqlcpkIKCHQ+YcKEkpVLSI5f/epXSunkIoCz8IqgHp0PPvjA+/zzz5Vyd+utt1b1bSpcNt10U5XJBeUVsU1qUdGLaygxzDhxbNy4sffw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8SqE5Jg7d64SpPHtDQKBp3fv3vX+jvKJALH++F8u2RT233//esIqwUEfeeSRSOUX6kKsFgRYMlrBK6+8otrYbCfivaB85KpFUESROWn16tXq96CMW61bty5ZRjBBqDTIVInShfXazPjJHMSGj6xW2uWJOEPlkMyCsrG2oVSAp59+2lu0aJHXpUuXWPc74YQT1OGKyeTJk5XQXevym58kMx1myeLFi5WiUa8N9HsO0/ThD22NIukvf/lL0XEauQ/rtO0wViu+unXrVpQitdZBKU1Ig4svvth766238n9v06ZNouOWsYCsbSoQGQO46SH31oIrryCEwQEwawUuq+PHjy/7mNGilKpBWPCJd3P55ZerFJJ9+vQpWVkQpL/66itlDdSvXz+vGiBovF+ItjFw4MB68Tb4W9zAsOecc45KeauzmlGfxJnIOrMIQgG+zEyEKNm6d+/uVTKff/65N2TIkHzAQARWv+Kw1vniiy/UxiIo7g1WHJxC9+jRw2vZsmXm5ROESgTLIE45b7311jrrAvHZsEKCbbbZRllTlUs8oY8//tg78cQT1cYfS64jjzwytkIKeDdiRdWqwt8PG+4vv/zSqyawkNpwww3zSimUrSNHjswnDiHQOYlEilVIMW6Qkci4JqQHFhnIA/ogT4PikbZMCq18MimV3CsI5caECROUUlgrbcnIy3qMzFC2pO0fOGDAgNT9ez/77LPcwQcfrK5XXnkl1WdVC/hhN2vWLLdgwYLUnvH3v/893y7PPPNMvf+/6qqrcr/4xS+UHzixBCZMmJCrBubNm5ebMmVKnXgI5nXAAQfkHn30UeXzmzTvvvtu/jmzZs3KlQJ8l4lvQRm222471f6ff/55rpLp3r17vl6bNm2a79fESxL+B3Xj7+/EU3vuuecyq6bLL7883z5ckydPliYSKhZkqD333LNOn9Yx2v7v//5PrTflGEemUaNGqoxDhw51+s69996r3q1Xr17q+/41ZcyYMfk5pVOnTjU79x522GGBskXLli0TeQYyO/0uK2677bZ6sRhPPfXUOu92+umnF70uNG7cONekSRMlf9muI444Qj1rjTXWyA0ePLjItxJefPHF3Prrr1+nHZOKKTVp0qTcFltsUefexx9/fG7FihVS8WUAc0jv3r1D94BCuvqQzTbbrN4asccee6Sy90yK1C2lXCxGigWXkcce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",
      "text/plain": [
       "<Figure size 1200x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "candidates = errors[\n",
    "    (errors[\"mean_logprob\"] > -0.3) & (errors[\"gt_cer\"] > 0.3)\n",
    "].sort_values(\"mean_logprob\", ascending=False)\n",
    "\n",
    "if len(candidates):\n",
    "    show_case(\n",
    "        candidates.iloc[0],\n",
    "        \"Confidently wrong\",\n",
    "        \"high mean_logprob (TrOCR certain) but high gt_cer (still wrong after Claude)\",\n",
    "    )\n",
    "else:\n",
    "    print(\"(no candidates matched the heuristic)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "790169d8",
   "metadata": {},
   "source": [
    "### Case 2 — Over-correction by Claude\n",
    "\n",
    "Claude rewrote a large fraction of the line (high `frac_chars_changed`) but the result is *still* far from ground truth. These are cases where Claude saw the image, made an aggressive edit, and the edit was wrong. Useful as evidence that more aggressive post-correction isn't always better."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "abef6df6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.677207Z",
     "iopub.status.busy": "2026-05-04T22:12:07.677102Z",
     "iopub.status.idle": "2026-05-04T22:12:07.697032Z",
     "shell.execute_reply": "2026-05-04T22:12:07.696662Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== Over-correction (278-27) ===\n",
      "why picked: Claude changed >40% of chars (frac_chars_changed) but result still wrong (gt_cer)\n",
      "\n",
      "  GT       : 'from hence. The Recruits at Fort'\n",
      "  TrOCR    : 'from-henca . \" The Recruit at Fort'\n",
      "  Corrected: 'Cumberland are all paid off to the 1st of October as private men, there being no distinction made between them and Sergeants;'\n",
      "\n",
      "  features:\n",
      "    gt_cer              = 3.281\n",
      "    mean_logprob        = -0.582\n",
      "    frac_chars_changed  = 3.059\n",
      "    llm_confidence      = 0.70\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAACCCAYAAACXW3vWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVeFJREFUeJztnQn8DdX//w9lyxLSYklk12JJJEsRRchaFKJkSZLse1SKspYl+x6lEinZkp1saUElS9kjkSyp7v/xOt//ub+5c2fmzsydu7+ej8dwP/fOcmbmzJxz3uf9fr3T+Hw+nyCEEEIIIYQQQgghJIqkjebBCCGEEEIIIYQQQggBNEoRQgghhBBCCCGEkKhDoxQhhBBCCCGEEEIIiTo0ShFCCCGEEEIIIYSQqEOjFCGEEEIIIYQQQgiJOjRKEUIIIYQQQgghhJCoQ6MUIYQQQgghhBBCCIk6NEoRQgghhBBCCCGEkKhDoxRJCf79919x6dIl8c8//8S6KIQQQgghhBBCCKFRiiQz//33nzh58qRc5s+fLzJlyiT69OkjLl68GOuiEUIIIYQQQgghKc/VKX8FSFLi8/nEjh07xN133x3w/fDhw0XWrFlF06ZNxS233CIyZswYszISQgghhBBCCCGpTBofRu+EJBGo0l9++aWoXr265XoTJ04UTz75JA1ThBBCCCGEEEJIDKBRiiSlUerqq6+W4Xuh2L9/vyhYsGBUykUIIYQQkkgcPHhQbN261fC3NGnSiMaNG8v/CSGEELcwfI+kNNOmTRP9+/cXGTJkiHVRCCGEEEJizp9//immTp0qP3/11Vdi3rx5puuOGjVK/p8zZ07pfU4IIYQkhKfUggUL/LMuEJ7OkSNHtItAkpRXX31VnDt3TmpHpU+fXrz88stB63z00Udiy5Yt/r/PnDkjsmfPHuWSEkIIIYTED71795Ze5jBKLVq0SHTp0sVy/b59+8rsxsooNWTIENGhQ4colZYQQkiyEFWj1KpVq8T06dPF5s2bxc8//yy/a9CggZg7d6645pprolUMkqTAwDlmzBiZXS9t2rRyZu+xxx4LWq9du3Zi8uTJ/r9plCKEEEJIKtKvXz9x6NAh+fndd9+VEgigVKlS4uuvv7bcFpN/V65c8f99ww03iAEDBohOnTpFuNSEEEKSiaiG7xUvXlwaC5RBCnz88ceidu3asmFbvnw549KJaz799FNpkALLli0TNWrUsLVd/fr1pcEUOlSEEEIIIakymTd27Fhx/vz5gO9z5colk8FYgUnlf/75J+C7kydPSo919PU7duwYkTITQghJPqLiKfXdd9+Jxx9/XH4+ceKE+O2334LWQQOGxo1iicRNp2rJkiXip59+EpcvX5aheXfffXdQXULY3ksvvSSOHDkivaMUGzZsEBUrVmTdI4QQQlKExYsXSy8hI7Zv3y4nS5ON1atXi86dOweImOsNUohcwPljItmMhx9+WE4kq9A9Pdddd50YMWKEaNWqlYelJ4QQkqxExSj1999/y1Cq1q1bW65XqFAhsW/fvkgXhyQZf/zxh/SQql69unQ9h8s5jJx6Lly4IM6ePSt69uwp5syZ4/+e4XuEEEJIajFr1ixTo8lNN90kjh49mnSTVZcuXRKjR4+Wk3lm4JzLlCkjDVNmwCOqWLFisv9lRtasWeU1hkcVIYQQYkXwyD0CYLbJjpg5vKgIsQvsqVi6d+8uChcuLH788UepZ2BkkMJ6mTJlkppm8+fP50UmhBBCbLazVksigfLCez9z5syibdu2pusdP35cZMmSRRQoUCCq5YvkeSPBEDyY4DGu9SCHp5RaMHGHdXfu3Ck9yM32hUlAK4MUgFh6s2bNxLp16zw/H0IIIclFVIxSdoAhAY0hIXaZMGGCNHgibTE6VvDIy5Mnj+G6n332mdSM6t+/f4AGAjzzrr32Wl50QgghRAMErNE+ou00W9555x25HjK2xTswuqDMd955p/ScRp8BfU+j8wIITdu/f79IBg4cOCAqVKjgP+/BgwfLvhC8mGCg0y44f/Sl1qxZY7iv+++/X3z//ffyM7zUsR8s+O6qq64KWHfatGmicuXKUTlHQkhsgcEa7YFea46QhDJKgWRzkyaRBSKa3bp1k5/RsURnyKwOoZOVIUOGoFldbMd6RwghhPwf586dE/nz55feLjA4mS1ohzE5BAOGmb5QPIEyq35AunTpxMCBA+UgSr/A6xrg/JMB9HVgcFKg32PUZ8J3p0+fltqb5cuXN9wX7vWtt97q3y+2wVKyZEn5mzabNoxWiVAvCCHugEMJvCaxHD58WLYHZcuWlX/DCE5IXBmlID6tQvOyZ88u3aHVomZVksVFmkSHv/76S8784WWILDEZM2a0rH9FixaVnU8tmAlkxj1CCCHkfyARDdpWGCQQwmYXhHMhaQi2jceQPpQJot7KGIU+5/PPPx8QyqYF546+Q5EiRUQykDdvXqnvpLSe0Bc3u06HDh2y3Be0tuAJAaOlnkqVKokpU6b4/4Z2lZU2FSEkcdsJLEiIAIkeLOqd8O2338q/odmnTSxFiBX/81GOIGjUIXIOcWlkREMMv4rjh6vvAw88IBtLZEyjxwqxA2YuEbrXq1cvkS9fPjFz5kxRpUoV0/r33nvvBYiZ3nLLLXIWdMaMGeLmm2/mRSeEEJLSYOIQxohBgwaJpUuXBvxWrlw5W/2zmjVrytAwLDD8xBMwtjz99NOyHwoNSiRFsWLbtm0iWYAB6dNPPxWNGjWSxqjevXtLg5wR8GpCeKMZyHKM/fzyyy/i1KlTITMUjhkzRoYNEkKSp5145ZVXZNbzUHzwwQciW7Zs4vXXX/d7nxISM6MU3Pc+/PBD0bx5c9GuXbuAxm7y5Mmyg4CsfJ9//rmoW7dupItDkgC4hy5YsMA/O2vVgYInlXbWDqCeDRgwQNx4440RLyshhBAS77z//vuic+fOhr9t3rw5SCvIiGeeeUYOWmDAgiEExi145UCDyC179uyR2o/33HOPuP76613vB2WCwe3hhx+2tb6a6MLE1urVq0W1atVEooIQOmhvQtsJBsPatWtbXqdatWrJPjlCOHHvce0VmORDaB9YtmyZFDLXJ5fBRDP6Wbt37xY7duwQDz74oBRYJ4kL7rXSYKtTp06si0NiBIxMnTp1crQNdOUgn6LeOxi3aUOJCYmaUQoDfzSGEFUcP368FMXUNvqIQW/RooV82aETQ28pYgWMTMjkgplbzGTu3btXGqngMaXXjVDGKNQzbfaXb775RnacaZQihBCS6iAEA6F3ejCZCH0gu/0y7QQQRMUfeeQRGSY/ceJER5OOx44dE5988on8jCQmGBB36dJFJipxatyARxTKAi8pGFrsGKXgfQ2PIRjimjZtmvBGKXgz1atXT95nRC4gtMZsMg/3GoNHXCv0txDFoDVKYSIZYTkIycF9eeyxx4KMUlWrVpUeWdD8HD58uLz39913X8TPk3jP4sWLZSgr7iWeIxgXLl26xEudYmDMtGjRIsN2QjspYdZWYHyPdzr2gckPZE1HXSIkqkYpANFINGBw4dMyZMgQmXYW6Bs1Qow4efKkaN++vShRooSc9UT4p7bDpECHEuvpQcdoxIgRlt5VhBBCSCqAMCyEc8FTStGyZUtRqFAh8eKLLwb125wYQtBGYzCDQcjWrVvl9zB4GLXZCoSE9e3bV4bXaxk9erQcDL/xxhvS+8qJ9glC/TF5hVAyO2AAjkEUjFII9YP8RKJrcKr+EPQ1Q2UcVlpikDd44YUXAn6DdILKSIiJPbNB6KpVq8TKlSvl5+nTp8sJ6HA83UhsgOg9jMQquyaeC6XDBikMGHtJcvP777+Lfv36SQcTLXAowftRgQiUUGN5aBXC01IlnEAbkSVLFtGjRw/L7fDex3sMYKIE73SShPiixMGDB33r1q0L+G7hwoW+nDlzQhHTN2nSpGgVhSQwf/zxh693796+hg0bmq7z33//+Z5++mlZr7RL5cqVfdu3b49qeQkhhJB45Pjx4766dev628hGjRr5Jk+e7Dt8+LBnxzh9+rTcJ5bGjRv7Ro8ebbn+Dz/8ENR2a5cjR444On7Pnj196dKl86VNm1b2Dexw3XXX+Y93/fXX+xId3AN1PqVKlfKtX7/ecv2zZ8/6cuTI4fvoo4+Cfqtfv37A/bh8+bLhPkaOHOlfp0ePHr4zZ854dj4k+syePVs+w/o+NUl+fv7556D3cOvWrX2//vprWPvF+3jcuHG+G264IeS6WEcdO0OGDL4+ffqEdWwSn0TFU0pZ1LFoadCggZxBQ0hf48aNo1UUksDAfRjeUrDam9GkSRPp8q8FLufjxo2jhxQhhJCUB3pBCE1bs2aNuPfee2WbWqxYMekhpQWz2Qj9wv/wdNF7MIUiZ86cMqwDIAQOIX7r16+X+kZ6EC4G7VEjXn31VVG6dGm5PydAAwne+ghDsgMS8eDaAIi1hxJETyTgJYXrD/kDM3CvIacBzZeGDRta7m/+/PkhMxjDywyLWbY/khjAKwbvAITj4jlF+BW8V0jyJ5Zq06aN/AwPV4RQg1KlSgXJpjgFXpbw4IQAOnTKVNZWI+9L6FMroPMHz97XXnstrOOT+CNqRikjoFcAN2GIIDJ8j4QCLyV0GEeOHClTkOqB4CYyw3z99dcB32NddCy1bqaEEEJIKgKjA7QWoa+owrDMtJagDwQjkgrJQ/jOnDlzXB0XBq+OHTvKcA2ALG7I5KTAvlWZVJuOwS8oUqSI41BCDKQRegRNKITuh9LGwuBr7ty50ogFIPJdtmxZkQxAfPzjjz+W0gdWQJweWi+bNm0K+m3o0KHiyy+/lJ+xLwwkjfru0JpCPw3AkEiR8+QAzw/eE3g+7rjjDnH77bfHukgkCu3Erl275L2ePXu25+MohEjXr19fGqSgT0dSnGi4Y3399de+/PnzB7nblSlTRrri3Xzzzb4rV65Eoygkgfnnn3+k2znqUrt27YJ+v+OOOwzd/dOnT+976qmnYlJmQgghJJ5A2MSOHTv8bWSmTJl8AwcONFz30KFDMvRN256iDUZYXLggTBBhYmahep07dw5r/2XLlnXUx6xUqVLA8YsUKeJLlr7Txo0b5X1r06aN5bpXXXWVL02aNL4KFSoE/Xbq1ClfzZo15bXJkyePaUje+fPnff3795fr5cqVy7dp0ybPzoUQEh0uXboU9N7Hc22H7777zteyZUvbx0IYMGR+xowZYxm+rZarr75alqdt27ZhnCGJNyLuKXXw4EFRqVIlOdsGETTFo48+Kq2vAGr+dtINk9QGnlLPPfecnEmFW70+FPT777/3/w2Xcgimav8mhBBCUhnMSCN7mhIuhvDs8uXLpReUEfnz55dCtwhpw2fMnqtEI1547xj1/RAmguxvZmVyAvoLKLdVHxPhZcgQqIR0AQTaM2bMKJIBnDu84RB+aSX2jnAcJImBJ9uKFSuCfke4DLzO8BskEcwE5+Fthax7YNiwYZbhgoSQ+AfJoZC4wO47Ge0EpFbsgv1C4idXrly21kcSBiRK048FSWIT8ZR3qGRowODOi5hyuAWj8n344YeyU/Tzzz/LhtBuymGSmly4cEF2qtBpRIcJ9QidJyytWrWSehGqk606YcgwoxboIxBCCCGpDNpMGJigFaJtKzNlymS6DX5HP23fvn3ybxixoAeqbXPdgqx42tTgCNNbt25dyDLZYcuWLX69UrM+Js4B/QtcE1wbgJA0GLKcZPmLdwoWLCjDEc2uqaoX6lrpz/31118Xo0aNkiGWtWrVkpN+RqF7MHpC8wWZEgGOx0lB4gbUJYwfYXjA8vbbb/t1h0jkwVgdxnm77YQetBPIzuiknYDOIcKEjcD7Ri2oDygPMvGR5CHiRik0bqjYEJ9GI4UFukCoVKjcqFg0SBEr0AjBEIVOEzrF6OBol1mzZgU0VDBAaWc8CSGEECLETTfdFCAoa7dTj3WVcQHbQzB78ODBYV9SGLtgxNDilRED+/nhhx/k4MUMiDUjCYoC1wMz/BcvXkyqvinOBXqbjz/+uKnRCoZK9J+MJvFUCneAPr3ZtVm7dq3U8kLfHvuhQYq4AfUNRmVoDsMQigWGcDg0kOiAZ9xtFBPG+JhsgA7VkCFDbG+H+ztw4MCg7/FeRqIrVRf27t3rqlwkxY1SAIJ4ED08evSoXPr27StFJyGeCRc8QkKRO3duWxcJ3lSw7DMclBBCCAnkt99+8xsUIDyOkAy3wIgR7gQQjGSRxKlhCYYbCHMnk0FKG4KDvviRI0eCFuUlBpkEiMPrgeeUMmCuWrVK3HrrrZbHgtQCBpGQ6iDEKaiDFStWDPr+zJkzQUZsEn8gO99nn30mPaVeeOEF29vVrVtX9O7dO+j7/fv3S0cWvJfVQpKPiBulEFf6wQcfyNkw7aIqGCF2WLRokeXvmOVDhwv6EQzVI4QQQoL59ttvXYfAwPsF4XUKZLWFflA4zJ8/3+95gzbcKLOuE5DRGXqlKhTNyqCG9TD4RZp7HBuLFzpW8Qq8xpA9rUKFCkF9cniT4fyNgKYYJpIxYCxQoICpdx0iISDJQYhb8G7Cc7lnzx7D3+F1s3v3bl7gKHmrKa1ehDgfOHDA9rgf9zBnzpxSN/DNN9+0tR2M2G+99ZZ4+eWX/d9h4gTvJXpcpgiRVlLfv39/kGp+yZIlfZs3b470oUmSsGLFCtMMDIULF/bVqFHDt23btlgXkxBCCIlbVq9eLbMooe1Mly6dr1WrVo62v3Dhgm/s2LH+7GszZ84MqzzIppstWza5vwwZMvjC5ddff/W1aNHCV6JECdM+5sWLF33Lly/3DR06VB63QIECvoULF/pSicWLF/sKFizo70ch096JEycM10XGve7du8v1ihcv7tuwYYNppq4pU6bI9W688UbfhAkTInwWJBlBpkirrGsLFiyIdRFTMvvetddea5qhVQuynM6ZM0duc91118nx2fTp0223T/r7vWbNGg/OJPG5cuWK78svv/QlOzFJSYbMKrCeEmKHevXqmf7Wpk0bQ1dPQgghhPwf8FpXYVrZsmUTM2bMcHR5oLXUqVMn+bl27driySefDOvyPvXUUyE9mpyAcJE5c+bI/Zr1MU+fPi11arTCusjem2p9KngzKA/0V155Rdxwww2G60JyY+PGjfIz7v29994btA40XiZNmiQ1f0C1atVEhw4dInoOJDmZO3durItA/j+QQWnZsqX0YEIUyv333x/Ss2rq1Kn+Zx9ZN5FF1S1VqlSRkiypjs/nE9OnT5dZYmfOnCkeeeQRkazExCgFd2lUckLcUrRoUdGwYUNp4CSEEEKINWPHjpWDBuBE5wNAx2X8+PERu8Tdu3cPa3skQVEDIKM+JgZMEDXXGsFuv/32kAOtZAVZCVVmQiuQZAbhjVYDJmTmgzgxtLieeeYZqSdDiFOQ3dHqPVCjRg1RrFgxXtgooRJJQW4HYXRjxoyRBmez98CwYcOkZrRToEuIzIo4Drj77rtF9erVZVIG3m8h2y3lfNGvXz8apbymUaNGYesGkNTmtttuM00bSgghhBDzGfABAwY4ujzQC0LnWLFp0ybpmQSNIjeMHj1aiq4r4K0TDtCgWbhwod+ABu8dLS+++KLUK1GJU/r06SP7oTVr1gzruMnOjz/+KD3swIIFC6T3gl57CjqeEELHPUXmPULcgGyeMB6bGaSGDx8uE2eR6AJjM96dMPQ///zzUlvuoYceClgHmoBu9XyxLTT+Jk+eLP++cuWK3D+N2/+jf//+AZ6rMODhPiQjMfGUIsQucMOHmzkhhBBCvGlPW7du7Th8TwvEhpGy3a1RCqm/kektEqxevVq0a9cuILPfxx9/LP/PkSOHnP3HIJdYA2FjrbFwzZo1on379kHZkGHknDdvnqhTpw4vKfEciOzDiwqejST6IAkCjCB4h8IT6osvvjD0YHKbQAOJE5544gnx2muv+TOgwpMXnrmVK1cWqUzLli39Ifcq6QTeyTDeOvV2TgSibpRCekgrjSBCQMeOHWUMMzq92pkTZIlB5weWe0IIIYTY49NPP/W3p0uWLLF92eB1pJ8Zx2w5NB29AIMctyBU79FHH5WddS3w5NLPxq9bt05kyJBBhoeQ0PphiGrAAFHL5s2bgwyAyFhopDVFiF2aNGliKOty1113Sb0ySHZ4DbxOHnvsMcPfEObM0LFA4CXZtWtXMXLkSMsMiNCnw6QDJgDcgrDqVL/+jz76qPT+1Rv78ufPLzUdk5E0UDuP5AHghrd48WL5wgGDBg0SL730UiQPSRIcWH/RCCFcQE/hwoXFTz/9FJNyEUIIIYkKNDtKliwpw9swsXPq1Cnb/TgYHrTAIDVlyhTXZfn111/9bTz0StKmTetqPyjbJ598ElIfCYOoEiVKuDpGKoLrunTpUlG/fn3L9VCX9HWDEKcUKFBAHDp0KOj7TJkySYF9beiwXaBxpN5RMMgrwxbqNt6DMLYfPHjQcNubb75ZGrBVaDD0lRIZTEYgXBlDfrxv3QqQw7tVhV2jDYCh3+ja/fLLL472i/cIwoPhGQRg+ELIdap7qpYqVUqGNmqB3taqVatEMhJxoxReMrioZ8+eFa1atZLueHDVI8QIiLghbtwoZC9nzpxSzDQc6zshhBCSqmCQB2NQOEYp6DB99NFHUgQ71mDwA40j9DGN2L59u5xZxvnCW4qEBoOgggULykG72XVVelOYKOR1JeHwwAMPiC+//NJUTwrGIYwNQungYXygTX504cIFcfHiRfk5e/bsMsxUm4XTriEfBrNEr+MIuT1+/Lj8jOuAsGs4jIQD3g2VKlUS33//vfwb+8e+McGA8ZoTfvjhB1G+fHmZiOLZZ58VI0aMkG1VKlO2bFnpqao108CwCG9VhFQmI+6mpmwAo0LGjBlFkSJF/I0a/k40gxQqA16UWCJsv0t5YBnHzIaRQQodYrja0iBFCCGEOAcz2Mqz5fDhw7a2Qd8nW7ZsAR1leB2Ea5DCQBRGjXD6VuhbwihiZDiB0QzGtzJlyohcuXIl/KAymuB+YNCuriuunVq0oD/m5t6pfjUG/DA4YOncubO/rx3p/ra2X68WEhuQRRshoGb3AHUOY4KXX35ZjiGxbNy4MWAdPOf4HgmQEMaLuotFGaSUhw9+U4u2TpstiMpIBoMUsmcqgxSARhGe7XCfMRhGduzYIa8/FoTt4V3r1CB14sQJObEAgxTCKZHlz8ogpX9+k21s7vP5ZDj0zp07A84NGokwUiWrQSqiRql06dJJIwJm2BJ9xgiWXyy1atWKdXGSGrhqwk3XDOVKSwghhBDnXkXwfkG/DAYqO6ADrMLs4HG0bds22b8Ll5UrV0p9UfStYChzAzrsZn1MlBF9hkQfUMYaeMVhEKuWRx55xP/b9ddfL6+z00EhjAy47wgjwmcsyCil+tpYdu3aJSIFUs1rj4XQLBqmYgOMxzAcG4FMe6reoY7AyISlYsWKAevhOcf3eE9h3ffffz9oX9Co1dZjOwvqZzK8P44cORL0zl67dq0UFw8XTHAow7LbawVjFoxbAPeud+/eluvDqKh9fpMtE129evWCNBEBDIvlypUTyUzEgmSNZlUICVVnCCGEEBLZNtauIUG/nlftNPaTbDPcyYi+L6+//8lwD5PhHBKVUO8TO+8bu++kVB1jxPt5x3v5SIIbpfCCh1s2XPEUmTNnFjfeeKNIFOC2iZkTo2wQocBM5M8//xzwHWaUnLo0pgqI+4boKThz5ozhOpHIvEEIIYSkEuib2R2Eox/j9YAdoRoIpQHwcnLjjaD6mHoBWADtKCzxoHeViEDbRfV74f2AjMfae6fvEzvtm+G+ufWMCweMR5CpUX02Khf0WpyCOowwRC0Y60DDiFgDzw+EkenrA94HkH5B6JwbsmbNGlQvUzXSAnUTdVT/Hkd4HHSmYg3G2RhvmwnOG733VfuRrM/EeQO7Q7jPRMLgiwD//fefL02aNHgC/Eu9evV8iUTWrFkDyo/lwQcftLXt8ePHg7YdPnx4xMucqKxatSroeumXf//9N9bFJIQQQhKajBkzyjb1uuuuC7lunjx5Atrh/Pnzh338zp07B+zz5MmTrvqYadOmNewrDBo0KOwypjJXXXWV/1qWKlUq4LeOHTsGXe/Lly872n+mTJlC9vew7Ny509Pzmjt3ruXx0qdP72q/hw4dCtrXhAkTPC17svLMM88Y3ovMmTPHumhJw6233mp4jatWreqLB/7666+gsnXt2tW2bQHLc88950sW2rZtm9LPRMQ0pZo0aRIQe44ZCmRBSRQaNGgQlGIYFsytW7e62h/imZHuUqXSJIHxxKgv2gUzndHgs88+k/dFLUuWLOGtIYQQkrTCwo0aNZIaLUuXLrW9HXR36tSpE/bxS5cuHdU2PtVAFjPVn4HXvlNQN8yA9g/undbrH5pATrzpUP/ssGLFCulFH02PjUWLFjneDh4nEO3XAn0cXH9o3xBz7rrrLine7LaOkNDUrl07SE8KnmT3339/XFw+aELVrVs34Dt4Q+H5URE0dt9Pycw///yTGuPTSFq8fv/99wBLX/v27X2JxJUrV4Ksla1atXLlKaWWL7/8MiplT3QqV64cFU+pAgUKBBwnd+7cETkOIYQQEg9cunRJtneFCxe27SmVLVu2iLTx9JTylvvuu89/z+CFEE6/V+8ppbjnnnv868BzAR4MdjHzdjBafvnlF1+0PKWw5MyZ09W+t2/fbri/LVu2eFb+ZKVOnToB1wwekE7qEwkN6rX2GpcoUSKuLpvZmHnevHmmbVeqeUqJFBmfRkzoXM0gQEV/6NChIhogVeK7777rz65hltHBDgMGDAhIJ6pA5pnPP/88KBPfSy+95F//r7/+Mt3vO++8I+PW7ehrIQtBqVKlRLFixUQqMWfOHHHgwIGIH+ett94K0rCC1sCIESNEt27dIn58QgghJFacOnVK9OzZU35GCmp4iIPJkydLnQ8j7R0vmD17dlhtPPpnRtnSKlSoIGrUqCG8BPoeSEev5eGHH44bTwMFZtGRUUurb9SvXz8xcuRIT4WEZ8yYIbM4uqV///5+zyp4XPXq1Svgd3hIoJ8NXnvtNTF69Oiw9YCgjabGBlbAM2vYsGFBZTID2d4GDhwotbaMQEZBpLd3qycL74i+ffvKz7fccot47rnnRDLxwQcfiD179sS6GClHPAn7w2NX/35V4JlVWfkUyIqoZ+PGjeKLL74Q1atXF4nMihUrxJYtW0RKE2mr1/79+6PmKQWrqjoWZkW81pRSS9++fUNaoq2W3bt32ypD69atfUuXLvWlGo8++mjQNYuEp1S5cuUM78/tt9/u+bEIIYSQeMBotrlTp07+32vUqBH0u5eeUk2aNPHv142nFPQ1jNpuzDJ7zYkTJ4KOM2zYMF+80a1bN8Nr4rTvFMpTqn79+gH7d+oppdWUKliwoGG/V7v/c+fO+cJl9erVtvvnhQoVsr3fs2fPhtwfxkBePKcVK1b0pYKmFD2lvEc/Pi1evLgvXjDSlHKzDBkyxJfoDBo0yPIc6SnlIRUrVhRdunRx7dGiYr1nzZol8ubN6/8Nni6IcQfa2QrMsJQsWVLqFzihffv2Yt++fZax7HPnzhWbN28O+A4zivCggu6Cng8//FBMmDBBfsasVf78+S3LgHPFOWMGoWnTpiKVwUwKsph4OdOHe/Dpp5/KLDN6MKM1ZcoUz45FhKXXIGZFwdSpU5M/qwQhhMQpH3/8sdi9e7f8vHPnTv/3n3zyifR6N+rbuGHs2LFizZo1fq+ba6+91tH2jz32mKEX+z333CO6du0qvJ7F12uLQtMk3vpl6GOqtlQL+jlO+07QoMH9xn3XZzCE18+GDRsCvnOiS4a+OjKtwSMA5cJxzJg4caLMzGi1jh2Q1ctuvYDWDsYYdoDHRr169Ux/f+WVV+S4x0gzya43C+4FwJgHY4JY0apVK3H48GH5eeXKlWH3x+HVN2rUKLF3796g35zUJxKali1b+j1e06dPL3V0M2fOHBeXDt6u8Dp1S4kSJaQ3IsC7wq3nZosWLVxl3vQS3JeZM2ea/p4xY0YZPZXsRDR8T0uuXLlc33SInsE1D+g7I+g0qN+0fP/9967SRn711VcyDNCKQ4cOyUVPtWrV5ENvJHKuKFu2bMgXAl7+RueUilSpUkUKoXsJGkKz6ws3cYQAkMgD46+6D0YpUAkhhEQH9DvUwFMLwtT0xolwQFigSviCQbtRn8mK9evXG4buhdPHNAPHwfG03HzzzTKUKp6AILBRSB3unVMDwurVq8U111wTJN6t+uII+dT3e+0eY926dfKaIswmbVrrPEvly5d3PKlsBOQ0tEZWKyAIjTBWu0YjhEuaAekNo2voVLQewDBXrlw5ESs2bdokn1uvOHr0qGkf3El9IqFBaJtKeIBnLtw66TVqgsINmNAI93x27doVkJQtVuCZOGAR0g5B+MqVK4tkJ2LZ97QNOCyAy5cv92sXOAGzA9OnT/f/jQYjd+7c/uXOO+803RYzXFjn5MmTto7VvHlz8d1339ku27Rp02RFUos+w4GiXbt20gNLzbKhYTcD3lYqhhw88cQT8hyw/1QA8fmYoVPccccdMm4/WsDbDo0iiSzQLIGnlALXHPU8mtl2CCEkFYEhCH0KvdeLHuh5wEARL8CYYabfA++bHj16eHYsGB0KFixo2HaNHz9exBNt27YVHTp0CPr+1ltvNTTghQKTRMiMpgcRCA899FDAd/Bw9lKjBh40MKbVrFkz7H4vjJ967a9BgwYF9NvVAkMIIi9gKLUDBolG3vZa7yK7xrBQYLBq5ZUVCuikQsfNC4yeCULcgGcOem+xABEzGHOg3YC3Fj6fPXs2JmVBGbp37265DsZGXhjpU85TCo2T1soNl2+k/oXLrhvRTDSO2oGqmmGzg0rHikZZ32jqLfH4Hes7SaGbI0cOWZFDAc8o5R2ljqG/Tqp8MMBor5MS4oarsH6bZATnrjVCwaAYTVE+1BXMBKbCtTbD6Hp7fS0we6lNCKBmX3HsVL72hBASafB+Rd8llIcqvJRDebREC7QLaCfMjCzoY2JQ4WX7cfz48aDv0B+1SmYTC7R9TC1mBrxQbT/+N5rMhWcCwkhCXSMz7NwXHAMe67jXRqLGbvpzWrJlyxbUb9eet90xBs7FKjQPffcrV654Uh9xHU6fPu14O3VeeM4RmuhFWXC/2UcjXhDqGYoUqL94JtS7C20HcGPA9wLVdllh9k7WrwMSefzkeW8jX758cddg58mTRxrH1FKkSBHDmSZ4KdkFcaz169e3vf6bb77p1yG4/fbbZTm0xjbMhOA7eFIZAXdx/O7EaJaIwHr96KOPBnyH0IFovizgLYdZulRl0qRJAc+LV7N9dkCHMVwNCUIIIaEpXLiw7FPo9YjQF8L36DvFC/DQ+fbbby3XgRcTtHy8pmjRovJ6qCXUrHY84cTTDROt4RqCrIBHEtp3KwmLNm3aiGXLlologkEcDEh2oyoA6gH0Tq2Azhk0rWIFolTQhxs8eLD0pMPfXgygwzUkYLyFDJqE4H2g94h88cUXA9632sULgwuir+AxqQcONJAESlRKlCghn/doRhfFracUrI6oMGhstJUGDRx+w4VyMthEAwHjlt2LC1dave4Bjqs8jLTeHyinXm/KyU3ELA5mi5w8HJhtVOur8sAyqh4ANZNhxJ9//un39sI2OFejMiXDYB4NHu69Fpw7zhsdpnDBfVbXHPVFfy1xjeGtFU8pU6MBnhPUMwBjqdYIiO/xvGAGM9wGAc8e6rqRUC3AcWM1W0EIIakE3udoA9F/0AqOI7zPqJ/hpaEEcgd2vbDQF7QzWEC5cS7hgv4G2iFcH0yUYInk9YgkdttTnLPWIIVztoMToXr0JdC3Murrou+HfgH+xzgCYwavvfRQN8zqB+4vFrvnjT4RzkV//ii/Gk/gPNyegxehRCif9v6rcZqTpAVq/KHFbKxiFzzLyjtFi91rbwbqL/qv4ZYvWTC6d/GIGnsAtAtoH4zet9pxO54rp/dZjT9QR4zGeGqMbSbFowXH9qJNQJnsOvL8999/llrZ2JdaR+/RinOKF4F7S7xKZVitWjWZsvDo0aMB3yMdKr6vV6+eo/0tX77cUTrIKlWqBO3jvvvu8yTVpH7p27evq2vUrFkz030apcZVIC1vqDL179/flwy88MILhueXPn16z1NufvXVV0G/HzlyRP5WvXp1XyqhnlOr5Y8//gj7OGvWrAl5nHTp0nlyToQQQuKLzp07+95//31H27Ro0cJW36xt27aelPG6666T+8uQIYMvUejWrVtY7enNN9/s3yZr1qym69WvXz9g/5cvX7ZdxhtuuEFu8++//wb9NnbsWP8+ly5d6vOC48ePB5S1a9eunuz3v//+81111VWG12nw4MH+423ZssX1MTJmzBhQ9ooVKzrexyeffBJUH4z6vVZUrlw5YHsvnomJEyca1tUzZ86Etd+9e/cajgVTlXvuuSfg+qJOxRt//fVXQBkff/xxW89EoUKFHB9r+/btntkBUNe8YNu2bRGxUwjd0rhxY18i4ImnFITK4F1y2223BVgYYbWDsr1TYMW0EhDUA4ugUdYVfId9IfzIKOwNrrfaUD4IkIeanYB7H0IUnYLMKGYx4bC2Wgm22wHuj3A99iJTHSytyECITIHhcOTIEVkf7JQJcf/79+831UCABRuiq+GUCVoBKBPAfddbjTHLEirzot1MOMeOHQv4DqKh8TjTinu9bds2W4KiuP5usvkQQgghaBed6BxhXWQ6tqOnA48ViG6HC7IlJ6pMAoTN0UfVYqcPDskC5bmCLG9mM+oIRVM6p6BMmTK2+wMIvVTXdevWrUHbqYzWENJ24n1lBvpzWumBnDlzysRLXoC+EPp0+tBIbR/TDXv27PF7jWg9XODdVbJkSUf7gveFPmOeUb83VIZkrRdLOKB+qboYiZBGRFhoM52nOrj3es3AWGZwNALvAW3UBLyPChUqFHI7N2Nm1L/vv/9eeAXqGt63dryqolUmK6Bn/dVXX8l3oB0t7JjhhWWrefPm0hL3zTffBHz/+++/+610Tjyldu7c6cgCWKxYMcv93XjjjYbb6ctUq1atkMdq1aqVzw2YoTHbZ86cOS23teMphWX8+PE+L7h06VLIMtkBM0YTJkywte7s2bNDnh9mL8Nh8uTJ/n1hBknPn3/+6f89HE+pnj17BpUd+45HMMvp5Fn7+++/wzoePaUIISQ1GTp0qGxH7HpKjR492nbbVLduXU/KWLhwYf8+E81Tau7cuUEePXbOoXTp0v5zvnLliul6HTt2DLjmp06dsl2+4sWL27qP06ZN80XbA8MpWbJkMbxOU6dODTimU08pvVeSWlAnvfDAMOr3WtGkSZOgfbh9Jg4cOBDy3ofjKXXixAm5D3pKGXs0pkmTRr4P4gl4cWrLiOgmK5SnlJvx6aFDhxyNdewsqHPhcPDgQc/LJEIsaIPjGU8CtpHOHYKYH3zwQYB4N6z7ELRr0KCBnAWBgPL27dtD7g8zPUjR6BUtW7aU5dAuqkzr1q3zr1e7dm35m9VMArypYN11CgQP7ViAjWjcuLGt2Y3169fLa+w044qWqVOnyiVc9u7dKz1wVJlCCUhiBgfXHiLwZiBOH/tatGiRqzLBc84ozbERmO1avXq18AoI66HsM2bMsLU+1sP6asGzFQ9MmTJFnotbYKF/4IEHLNfBDOHMmTNdH4MQQkj8snLlyiBvYiPQH9D33YyEu3PlyiWF0EO1XXa0Ips1a+bXHYK3zaxZs0QigD4mPPL1Xs8QDseM/Lx582ztB2LxZm18pUqVZNIdBa6NXWH0xx57LKTuKTw5ihUrJrwAukmoLypxDrx+Nm3aJCLZF0LZtX3Mjz/+2FHW8UceecTQSwz7cNrvNXomkMDASQbzGjVqeJYdDRquDRs2tFwH/b5wNZDwXkGfeePGjSIe2bx5c0DfHkskPDMffPDBgCgVvPtwrNmzZ4t4Ae8m/b1btWqV5frqfTZ//nxPyoBnRN/GPPXUU7a2xbXENXWjQQxdtXfffTfg3dFWV45IaKNt2bLFX+/cZPSMOJHWlAKYLVBWOmj6eK0pFcpTyojNmzfLbTt06GAZWx8NTSk7Vt98+fLZvh6bNm3yuSUcS7QXM0ZmmlLhxtbrNaVCeUphgY6FV55Sarn22mtt7QPrabe74447fPHgKYUFs4ThMG/evJDHyJEjh2fnSAghJH48pbCsXbvW1T5y584d1F6UK1cu5HbQpbTrKaA0pbBcf/31vkQB3kCrV68O+v706dOWuqVaT6loaEqZLa+++qrPa7777jvPNaXQBzK7TlpNKSzQ63RC0aJFPev3xpumFI4dKW985SmlFowlEkX7DV590dCUwoJnMF6Atpy+fKE8GhHJ40ZTysxTavHixUHrnj9/3tGYyEgjLxTQ6NXuo02bNkHrFChQwPH4zMmya9cuX7zhbWoLQgghhBBCCCGEEEJsELbQ+bRp08SHH34oBezGjRsncuTIEfD78ePHxYsvvuj/e+7cudLN2MjVGoJn7du3ly7BEFBcsmSJ/B6CiEOGDAlyx4TAGNxj3aQ5hKsc9q91RQbPP/+8pXsrQo+efPJJR8dauHChdPXVii7aZcCAATLkEULgkQTXHQLddtIum4EQPbg9wpXx8OHD8rvnnntOhkUWLVrUdDvUnb59+8rPu3fvFpEAAm+DBw8OEn5UbuUQhdS60JYqVUp069bN0TE2bNgg66kTkX7FW2+9JZYtW+b/W58iFMKQ/fr1k/v3ikaNGgWIDGp54okn5KLESFu3bu1/LrANngGnYQ2oXx06dAgpqv7JJ58EpG2GuzOeAdQlQgghiQUSiKD9QlIc0KdPH5kYxyx0fvTo0eLNN98M+g1tAARbtSBEBeubgT4J+iZ2w8wQNqFCrtDH1IZYxDOQXVizZo1o166d/zv0xerVq+cXMTdi4MCBMsmMNtX6ggULDNcdP368qxC4Xr16STF1o3Tm6IuPHDlSltWr0D0l94A+jl7s2Q0jRowQX3zxhRg7dqwUYoecAvqLCBFUQNZj0KBBAX3MUaNGiRtvvNH2cXr06GEolA55lOHDh9vaB/qO6NMCvWzGSy+9FJDcyQzcf4Qmov+nF2LGeMYuqv6p8CardPbg/fffd5wQCPuuW7euZR2PJarfq8oKaRM9qKfo87qVJjF6TjG+NToW7kGdOnX8f0PKBu88r4CED0JmIQL+9ttvm67XtGlT1yL6CGvDmDoUuN4IicW7H+8DLY8//rho3rx51MXfIceDMZQabxYuXFi2X/okDC+88IJfigfPIcZF2jEz2lM3YCzXpEkTuU8vEoN4TriuVj169PC7gumFzs1SzUNw2ohz58758ubNa/hbw4YNg/YTifSWejdmL4TOR44cablPq1C5hx56yLFLnpvwPYRA2i2TE/dIO0Lnq1atcnR+Xrgxa8P39KFyboXOFyxYELLsZuF7zzzzTMhtH3jgAZ+XXHPNNabH0ofZ6kNazZ5TK/bs2ePKFXbRokWGYbaEEELin5UrVwa8462Ezn/44QcZMmQEwtj17cUtt9xieWz8jvXSpk1rK3wvkYXOUWZt+B7OFwLH+N4sfE+f4Oeqq64yvU56oXO74XtVq1Y1be8rVKjgiwR6ofNwwvdatmwpt//6669N11myZEnQ8WIhdK4PCzLr99oNs9UvTsSysS6eO7t9ezdC5ziG0b7iJXzPbr8Xot9eYfScmi1dunTxecnZs2flfjGWtgISHUblsRO+Z3d8irqB95nRcQYMGGC6XSTD9zJnzhywbdmyZQ3XK1eunH8dfdulb0+dLEktdA4vqYkTJ1quA+uf3vqLWRPMOuiBxxO8Iox45513RNmyZUWygRkqzCI6AdcJnjPaxalXjxZYtdUMppoddFomWLzvvffegO86d+4sLdFugeCdOj8IzHvJ008/Lb3ksOiFKOHV5XR2FLNkzz77rOvyDB06VFSvXl3EEqRYVdcbVnot8FLE95jFgtCs2XPqBgiwauuyPlU0xDZfffVVz45HCCEkeqBvAG8YK+DpgPYYbbOZp47RjDmSqXjJl19+GeTxnwhg5hztJyIRtFj1neCZg/NVfPvtt7IvqG+DFS+//LKoWbOmZ2XG+MCJ540TMmbM6CopkRGou7i2JUqUsL0NPDngce8E1Ht4mISD2TPx2muvRb2PWbJkSSlcjjLpxyz6PibKnC1bNsfH8NK7zkvgmYP3WajEPoorV644ri9eeViinIsXLw5KDIXvo1UmeAyhXowZM8ZyvfTp09sen+I9ZvT+w5i3a9eutvZRsWLFoLrrlXdV3rx5/RFhehYvXizy5ctn2p7qy2R3UV57SRm+h8F8qMwScG/VZ2+A+7VR2BDchs1uAly0tSE9yQIeepy3E7C+PuzQKGOHXeAiqA1dw4OsdyW04yapdztGmcLJHoAHVp2n1665ViGaeOk5cblWDVA4IZbIOBkqM02kwfOlr1cK9Vyiblg9p27A+8HsuABGMKOMS4QQQuIftG3IBhaqD4HscWiH7Gb88rotUv0Op32yeACGNL0xDe11/vz5TbdB9iVtWAvWtTIMoJ/iZVuM8QEy8kYC3EOn/VgzUHdD1V8vxiyo99qQQDeYPRNe3zu7oWt2xyxunzu8M+IR9T5zc72iCRwKsOglQ1B2jNO9CH+1A8ZdVuMAt+NTo/cfMkFmz57dtnFbXy585wWY5Dd7/+XOndv0XYD21M61SkTCannhCaM8dJYvXy7T99oFcZ5uNJYiDWZWrDo50NGBzpMTMCPQpUsXzyqxXlNBzZIpLYHKlStLbyej9SIBDFo5c+b0dJ+rV68O0KHCCwt6V9CcgqYBzs+ra6p/ETitl7DEV6tWTX7u1KmTLKd+UZ2Bs2fPyhkBPbBef/bZZ/IzNAm028K6DeBdaDdVqVMQW2wnhS7ixc+cORP28aDdps6vatWqYe+PEEJIfIK2C1oWyusEuhrxDLRQYVDAZBj6GvrFrr5PrIB3gyqr0lw9cOBA0HnMmDHD8b6hIVuhQgX/39i/2eQjPLFwnHXr1gmvmTlzpv88tHoresMQ+hgrVqzwazxZ6Y8Z0b9/f5n6PRTQTkWada1Wj1NPrfvvvz/sqAD0MQsVKiTiHWiZwSsyUkCnNVbPKbzDrIy7GEdq+/hqQhp9a9RnfdRJNGjRokXAu0E5jmAcib8rVarkaH/wZtJqV2nB2M6LcUSs0I9P7QJDkt74RwK5OlxjBBY03jAaGLn84uFUlRtWP+3MgZmLsBHYB/alxY3AeShQRqtywfqtL0coYP03mgFwW34jIUDsHy82/GZH0FO9DIF+fSflghUddUC/D1xH1Ak3GNUnfMaLUVmOjY4ZDuqc8b/dmSrUBbxgYKhBWXDtYUFHOfVozwVuukazD8pwpRoFhSoPjuflOWuxe95G52YHPDO4Ttr66nZfClx7XBOU3cm7hBBCiD1UW4XZZTegzcK7X/WbjPpDqi0FZt4c4fYBnayrbQu1XuRA2w8JBbZVnkjo14Tb5tkF/SccTz8A0p+LFrteNCqEH20u7psaBxj1aWDUszomtsd22KcdT3FtPwL1AWXAuZp52Kh+o7oeKA/uB46p+stWoK+GY9oR30YZtOtZlUtfN7CuWlQ9dTN4xXlhO30/0U6dxTZqrBZOwiOgnnclcG707OFaheORqPp/6hhejNW8QF1/bb1X4zOF1bsg3LEN7h3qrVNwrcyul9syGW2DuqEvH57TaEWKqHGa1TOk3jEol9G6br0Z9e9CqzbpwoULpnU7qQlHkGrUqFFSOGv27Nmm62iFztu3b+/6WHqhc4g3OhHcc4Je1Fm/9O3b1/E+IbCo3w+EGEOhFzq3EqEE9erV8697+vRp0/WGDx/uiWhblixZDPfx1FNP2d6HXuj8vffeM133xx9/9K/XqVMn10Ln+uXvv//2OeXixYsB+2jcuLFtcTv9MmnSJNNtDx8+7F8PgpteC51nz57dF2mOHz/uuQilek6vXLniSRkJIYQEt11XX32168uCBDjad//o0aNNxYpz5cpluh8k+tDux26ZlNC50zYeIudGbbWTtgtJOkIl+IkkmTJlsi2Ai0Q1Trj11ltdi+3ql/r167tKptO/f3/b5Z07d27AtmvWrAm5zdtvv+0bMmSI7WNMnTrVv//Fixfb7vdiLKUHiZycCJ1biYoPHDjQ8XNqttgZd2kTElg9p9oEPwcOHPA5QZuQwGwZNmyYL9pAhFtfjipVqjh6TsuXL+/6+K+++qpnz6WbhARK6BwLxq96sB/9vm+44QZfpMD4QHushx9+2HJ9CM6rdW+77TbT9YoWLep4zJwnTx7/NtmyZbNct5yF0Hky49pTCmklVWp3xMHCumg0kwbLP8KV9u3bF3Z4EWZntN4WkQJihtBHioWVXQ/Sz8JSq09nabW+uk5I5QoXUghY2/UkueOOOxyVDyGbWtFrWLuRctZuzC/OS5uOGBw6dEjONhhZkVGf4JoMMU5oOCHlLVy0Q4HrgLDMw4cPB/1mlpraS3CdtmzZYvgb9Kuswh8xowJXUbh1w+X12LFjnugw4F6jTJjN2LNnjyMRz3jim2++kdfIad0lhBBiDsLllccD0lCj/Y1UO4H3N9o2r0F50UeFiLeTZDkoz7Zt24K+t9vvQB8MIXMK9D2gwepGzNktOAd4v+DcrUCfzalnO4SQ0efHvsOd0UfIGeqXnbBKvR4q7ocdvSdoyKDfpOoY+pB6XSN4QGj7g9ivE/0YaHqhP4dy4d6jDoTyQLv++usNy497h/4xri+8XzCGMpJ+UM8pvE/M7gPKA/0w6EoZgW21YYMok7aPuXfvXr/3FMqDMYUR0CFCH9XueAV9coR+QtMIfVCMG+x4peFa2PHmwr1GeRItcYF6d2A85yUYBzrpJ6Nv7RTcP7xzcT9xX/XPtdEYHh5EP/zwQ8RE6/FMYzwMUtL7KJFwa81CSl+t9RFWfzOQFjVcTylQsWLFqHhKgaxZs8aFpxQoVaqUbU8pvSXa7DqZeUpduHDB0XnpU26WKVPG0fbffvutYTnWrl1rus2GDRv8673++uu2j4WZSq/S0Dr1lLKaxRo0aFDIY+3atcu/fq9evVyV16hMKl10gQIFfInqKYUFzyshhBDv0M7sYsmfP39EPKVUexoJTylw7bXXOp5tNks1b9cDQ/V7tcuSJUt80eby5cshvSB27Njhev9az4JYLOPHj7ddVqsIASx2U81bMXjwYP/+UAdCeUr16NHDdJ1Lly7594Xxj93n1GiZOHGi6fZHjhwJWLdnz54BvxcpUsT/GzwIzWjRokXQcUM9p3Xq1HHcF69UqZLt+mEVyROvnlJYEPXitacUvO/cjA+ceEoZeTTaWUqWLOmLFFrvLXpKJaGnFKzua9assbUuLKUQcIZFXJ+q1glIW6vNmNa8eXMRC5CutUyZMo62wSwGFn1KSqdxqY8//rgrnSYjkUajGUCUyc4shZZ58+b5Pcrg2VS3bl3b22IGT5+GFKk2YWW3moXELM59990n6+COHTukp1WoNLqYpYRAup6GDRu60nmYO3eufzYIMz0Qtbz77rstr5PeQo9nAgLpZrNO2pkFMyHPVAVpVLWaC5jp++CDD0STJk1iWi5CCCH/eyej3dN6J2PG2szTCn2Pxx57LOEvHXSL3nvvvQAPcAiPo533OlOgW+B5rRUrDydRDfriRoLpuM92U6fDkw19fKfA68OJ4HDJkiX9XhxannjiCVn/3OqmOQH93gULFsgywBPGrvcexj8QyDbCTgQJ+r9mXl+IfFEYlQn9WwiHo27Ds96sHPqoByWgbVUmo+gFK1BP4KmopWXLlv7P+G3ZsmUiXoBn5EMPPWT6+/vvvx+kvQSPNpU8yQnw/rNK1OR03IzrqsYtkRLPx3OH5w/ZF2PJRx99JCO+1HgWzwoSsnkBEi3Aa089p3gmrDwoV61aFVY294TGjSULsdh6K6eZp5TSlHJr9TXTlMIMQiQx85Rq1aqV432NHDkyaD/wHLGL8pQ6d+6crfWNYnbtLE7KZKQpBc8VJxw7diyoDEax9UZ8+OGH/m1mzZrlWlMK9dMNWr0JzCKFwkhTqm7duraOpdWUwkJPKZ+vdOnSQdczX758ru4lIYQQbz2l/vzzz6B3tN4DwwmJ4in1+++/u/KGjqanVIcOHTzbP/RUjK5Rly5dbO9j4cKFrvqsTjSlFChXuBEC4XhKafu9zZs3t9yX1lMqWgu8nYyAF6Ob/f3zzz+2NKXsekohIkF/DO1zrR+fxtpTqlixYpbr33jjjUHn41ZTavr06ab3IdLRRW49peAlFmnseEohWkRbLtwXK5xoStWoUcP2M6H3Hkw1TSlXqQ9gMdWmpn/yySdNZyswA9OtWzfx3Xffifnz57s2nj3zzDMB8bVdu3aNaGzom2++GVZmCH2aV8wyONEz0NKrVy8ZD28XXBscz242g86dO8v1zdL62gHZJF5++WURLTDzqNJKwxPs+eef92ucaUE6U/w2ceJEw/0MGjTIsU5Znz59LDPK2MXuMwHdg969e/v/XrlypS1PRcTd49yRwtkM3PehQ4fK6xTJ9LmoW/369QuY7cJsgFt69uwZ9Exgtm/YsGFhlZMQQsj/eOWVVwK8s6HP8sYbb7i6PPCa8Wrm2SloF6Cn0qNHD0/2t2jRItm2Gi3or+lBtICRp3Y0gCcC2vhIgeuKfgSWvn37yu/Q123UqJHtfcCLTO1D68Gl72OqddRilnLeCpRLvx8vsyLWqlVLVKpUSX4eMWJEUP3Q9oO2bt0qPv74Y9N9IZritddesz1m0Z6TV3VdgXKMGTPG03EUoj+0Gl54dsyyvMHbBNfv66+/Dvh+5MiRQeNTnL+qf/Dq0uplRRo8a04jTvRAV3fSpEmOtoHnHSI4zNBfp0gCDS/00eMFeD0NHjxYfoa2lNF7G2MgJ/Tv39//7oCNwwhEAmHf0MvCGE49m6E0ntu3b29blznp8EJTKpQlOhE1pYBWKykcTylFs2bNXHslwQvErqeUIkeOHLYs1XaykITylHKj6ROOpxR46623AraF7pKegwcPhjx/p5pS+hkjt55SWNq2bWvrmFpNKSw491CoGaNQ+k1qZvfuu+/2RZI9e/YEnMObb77peZZMeBUSQgjxBn3bVbZsWVeeUmYeGNHwlAJYH+fihaeUmyUW2fcUyMQcKU8pLbt375b7R1/XLa1btza8fomkG4mxjt16YaUpBX777Tdb+8HzpmXbtm2u6qnVc+r0mdCXyY5XiFmWTOjHGh0DWnRW2eFDaR5HgvTp04flKeUmuujzzz+3vBfwmIwm0KmLF08pNzpXoTylFNDpwv02AlEtVuNTK8ox+x5JRWA9htdROMBrx43WldGsiRNNCXhKQd8Ls7nLly8XrVq1CsrYZycLCGa2YO1eu3atqQUbVnGleaDi77HNF198EdIjrX79+lJHQM+9997rejZh1KhRUrciVEabWNChQwfpBfbpp58GZLfJnz+/GDt2rOjUqZP8e9y4cbLu1axZ0/Ex4KkJbTtCCCHxBXQ53LzXzUAbr9fBXL16taN9YH1oUVauXFlqUJrp4iQj8FRGfwGe4fDA8CJ7rxG33HKLWLdundT9dAu8rdq0aRP0fbjeJ9Gke/fuMkvdxo0bLdfDM9KxY0fLddCHwjVFn+rZZ581XGfhwoVB/VBkMsN20N+040GOSBQ8E6GySqLPW716ddN+slY/yU60Bjwv4dUPbxIVWWLUDzfSnsK5eTH2iBTw5n/33XctNZuceugY8dNPP8kIGTPgqelUwzhckNETnoJmXkQA9zmciAknICvm1KlTDd8tXugnol3Rc/DgQf8zESlNrmQjurWUxB0Iu9SnxXUKjCtevPAgAponTx7b62NdLKoR1bv12mXLli0hQzXRYG7YsCHgO2xj9CLSAxdtJZ6nD201S/EbCqSL1aabjieQRhahCvoQRwj7adPR4oWtTV7gBNxrOymBCSGERBdIK2zevNmz/SH8Rj/JUrFiRUf7wPpoh9GOnzt3TqQSmEBD+CSMU3b6LG5BGx/u/jGYxZLIoF9nRzwefdcCBQqEvHe4plZ9VCTZ0RvtINqO7fbu3WurzJjQDXXvYESweu4wnnB6/yE+r51MDmXI04JQT69kViIBDGZWsi0QJYdBI1yQ9EefTEtL+fLlo36dUP9wb0MRTgI0JyD8t3Tp0hFr7/Tjw3CeiVQm7Fr60ksvyaxt0cZpxgY3HDlyJOBvWPDffvtt1/vDDBVe6Ki8TmeSdu3a5TgzCKznZsYizLjAIIDsc4QQQgghRvom2gEN+iLIlmRFrDMpGYFzQJ8HHiwYwOXKlStgMcpwi/XNFmR6hYeK9jszT2t4RFtlIYsG8GKKp6xkyQ70fVAn4CGu9RzS1pcJEybY3h8MT9OnTzeMVLjppptMt0O9w7Gg/WvlRYJIAbuDe+zPS6MzvGUiqaGDcY4+42I0xqe4TmZGPERQWBkMP//885C6YMhuj3cXxqZWwDASi0lceNThGmg1cWMJtOtQnlDaaHhOrYx8+syhVhpR8IR0k1l0xYoV/ncHJlPw/k4FrnZrFVQi45gZMXOfVOupdfE/Li5uYCihL6N9acEsBL5zuh8nIC2ndv94GYcjBo5tca0gAufUau0mZS/Kj+PgHPTXD8Jv+vNzg5vt9fVC+73b+uEFRmUKBcprdi/t7C/SddjJcdxef7PzVPtT18fqnmvRXs9Q11BbTrWedn+xqkuEEJLo4F2K/ooWCBHDa8moTVHv69OnTwftS/3mpm0xa1+cgn4UQvpxDvoyIt29tnz4X/W7jNok9OXQp0M/KlRZMMhB/zGWwJPGScIcEh6oG6gX2rqj6pTT/j/2g/tnNP5ApIPV/lDvUFet6h+2d1I3cA5ePuPZsmVz5cljdDyjdwY8I+GRFI3+Nt6Z6r2B4yE5hPa4qmx4h5qJugOU9/z586ZlxnGwGN0HPQgRjGRiMDNQ72A008uqKKLdN4eTBsoTysEDddHumDvUeriHMAg6rXvX6p5rL8I8EwKfC/QpN+fMmWM7NS6WKVOmOD5mo0aNoi6QBlE//eLVPqMFjnX+/HnD+zBy5MiYnI9ZCmG1vPfee472B2FGN4KOXizXX3+97TSgRku7du1cCZ07Xd544w3TfeufU6cJCWbOnGl6XG0qU73QudmiTa+6efNmy3X/+OMPuX9tylftMm7cOEfnQggh5H/kzZvX9N3bpk2boMtUsGBBy/d1z549HV3aMWPGmO4rXbp0jvaFNNyh2p7169f710e7goQ6+jZeK6CM5ZtvvvHlzp075L7d9HtJ4gKhaqN6cNNNNzne148//mhZtw4fPmy6LeqdnX7X7bffbqssEBa32s+KFSscnZte6Nzpohc6149PtcvRo0d9kea6664LOm7VqlX9v3fv3t3R+b3yyiumiRuc7EfbF482OC6SK+jLdOnSpZiUZ+rUqabXyWkSNdgh7Fz/cITOhRCOknQkMq48pRDjrA0/M7PAwyqI9WDxhTg0vHNg6cf/ToElHfuCVVh5GkV65ikSVtxoW4aVp4hRuKAdEUI7+3cDrNWnTp0KKg8s2E7vK+qU9vyUTpGTEEk32kbYv5WVHJZuVWe13juou5hdBXZDMmHhV+dz4cIFGUNuB1xLPDtW91r/nDoBMwBm+hw4R63OAT7bOQdtGARmmRTwytTPuChPQG0dR5mU/gjcmzEDHutZakIISTTQvuF9qm8flZeQ0frQCtTOyuO9r9pJsxlzM9Bu4b2ONgbvcW3/Af1Qp+j7BPCaQhsB0E7q5Q5wHNVW68ukwDY4P72Goh43/V6SuKgxixdRD9q+kxFWXkaod9pt0afS1lX1m94j0gxtX0vbZ8SzjT6a0+dS9ZOd9MXh1aWOox+D4Htce32/1E2EihtUhIo6D9w7rW4vrhP6o+p9ptYHes8n3DtcUyPwbkKyH/yvxaxvrV8vmuAeqXGaqn/a84426pnAu1+fDMuptA7OA/vQj2e14P471V3Onj27LAv2i/Y0lvcvqkTD8gULIWbcnHpgGFGzZk3fmTNnPCkXiR0XLlzwFSpUKCDdr5U3jxNKly7tK1mypKNtbrvtNl/RokUDFsxoGVm8UW6kebVrTdfPouJZOHjwoMuz8/kmTpwoy5clSxZLyzws+J07d3b0nGK/2Gbv3r1ysUrpixkqsxkHzJhbPaczZszwX2e7Mw0oFzyjQrFu3bqAewdvKZxLtFPiEkJIooN2rnjx4gHv4vvuu8/fRugXtOVuPDCceEMj3bgXs/4LFy70t0NIqU5IstO4cWN/ncdzHc5ztHXrVv++Jk2a5En50HcP1RdEH8+KpUuXSg9H7TaLFy/2XblyxRcN4O2Pa6L6wvp3ZN26df3lOnbsmH879G/V9cQ4oVmzZgHbab3C4PmJsc6+ffsCjj1hwgRf9uzZg65ZvPR/H330UXl+dvrykWbgwIFB476///7b8X5wbbXjWf2yfPly12UsV65c2M9pIpEG/0Ta8AVrJFLBQzDznXfeifThSIKAGNkGDRr4U+MOGDBAxBMQBR0yZEjQ94sXL7Ydf799+3aZDlQ7+4FZEohOQvg+HHC9IHKJ7H7K2l+lShX/76VKlXIlzL9o0SLRuXNn8csvv8hUwmbZMZDGV59etUSJEtKijzS4yKZohxdeeEFmIVEgjbF+ZvG2226Tn3v16iXq1KkTcp9Lly6VYv545yjmzZsnGjdu7GqGnRBCUhV4RLhJvY5tHn/8cTFjxgzXx0aW2Q4dOojly5cHZPxFOxHPmbcIIc6BtxCEu+GhiczYCvQnCxYsKD+PGzcuIJOzEaNHjxYvvvhiwHdHjx4VuXPnjsptuXjxoqmXk+Kuu+6S7zUj77n169eLvn37Ss9TiGmDKVOmBGSmhLcVxtQffvhhwLbPPfecGD9+vP9viK1jrMC+b+RAdEaNGjXEtm3bAr4vVqyYmD17tkxUQEITFaMUBq+tWrWSbot4UdhJE0lIMoBsD8j2owVZFNDQeAUMSMeOHZMusu+9954nIaLvv/++WLBggWwYjx8/bns7NI6NGjVyfVy8jpo2bRoQ/oFU1jBGOQVlwXY///yz/7tp06bJdxEHM4QQYg+EW8C4BBB+gWxZoUB2OoTMhDv5MmfOHNGvXz85SaJAJ7958+ZMYkFIEk9at2/f3v83JrDxzNvl008/FV27dhU//vhjTIxSMKqp8iIEyygDG8YGt99+u+V+5s+fL/r06RM0ZsAEK4xes2bNCtoGxitMqn/xxRfyOuL4+jBk4j0Yh2E8puX5558XVatW5eWOJ6MUBrX9+/cXX331lXjjjTdErVq1In1IQuLOKAVDCF5QmBUZOHCgSAQwoEBqVBhzlPaGFqQsRbpdxVNPPSU9tOIF/YyRml1yM+tPCCGpDmbtO3XqJD2G9eD9Dz0XTIyMHDnSM6NRy5YtpXFKm2YbXsCcXCCEGAHv+27duonVq1fLv1u0aCE9rPB+ijaYGDWKWsCkqR0jGbz8YZiC5//TTz8t9ZlGjBgRoNlqBJxAYMxCxIdTPT9CktYoBWNUhQoVpNWb4XskVY1SELpDGEQiAuOTciHWAnfVFStWiHiFRilCCPGWJUuWiHr16gV9v3//fn+IjZfojVKYILGbJIQQknrow/e++eabkCF/8Uzt2rXF559/Lg1T6I8Tkoy4yr7nFrh8f/TRR2GF9xCSSLz++uv+DHJ6/aVEYsyYMYYZPaLlCu0WhOohnn7w4MEyjBi0bt1azJ07l6EfhBDigjJlysgQOj1OMxfZBZpS0GaExkrPnj2ZyY4Q4gh4GsGwbVcPNt7o0aOHDAdkGB5JZqJqlCpevLgoXbp0NA9JSExRotxwSMybN2/C3g1tiF4iUb58ebng3fPII4/ImG8YqgghhLgDbRnCYaJFpUqV5AKRX/QhnabXJoSkDhD11ss2QJMqU6ZMIlGpXr16rItASMSJSuoSCLm99dZbYsOGDVJ8jZBUA9oa1apVi3UxUhaIpUNbAC7cyPToldYJIYSQ6AAZCGSvJYQQM2C41k+k8t1BSPwTlekmZAhAxjGEMZ08eTIahySEkKDUrIQQQgghJDlZu3atmDBhQqyLQQiJR6FzlVIYWa/SpUvHzFeEEEIIIYQQQjwBETkPPPCAHG+CqVOniqZNm8rQPWbrJCS+iUr4HoAGAETmhg4dGq1DEkIIIYQQQghJcu69914xa9Ys/9/p06cXmTNnpkGKkAQgakapK1euiAsXLkjBZ0IIIYQQQgghxAv+/fdfOdYkhCQeUTNKLV26VHTt2jVahyOEEEIIIYQQkgJs3LhRPPXUU/Jzjhw5RJYsWWJdJEJIvBmlCCGEEEIIIYQQr8maNasoVKiQ/Ny7d2/RoEEDXmRCEgQapQghhBBCCCGEJCxlypQRM2bMEHXr1hWFCxeOdXEIIQ64WkSBkydPimXLlkXjUIQQQgghhBBCUozKlSvLhRCSWETFU+rgwYNi/Pjx0TgUIYQQQgghhBBCCEkAouIpVbBgQdGpUyfx7bffinr16kXjkIQQQgghhBBCCCEkjknj8/l80TjQiRMnxMyZM8WaNWtE586dxUMPPRSNwxJCCCGEEEIIIYSQVBY637t3rxg3bpzIly+fuOuuu6J1WEIIIYQQQgghhBCSykaps2fPil9++UXkyZNH5MqVK1qHJYQQQgghhBBCCCGpbJRSvP7662LWrFnRPiwhhBBCCCGEEEIISWWj1OXLl8Xff/8d7cMSQgghhBBCCCGEkFQzSv3777/i4sWL0TgUIYQQQgghhBBCCEkAomKU2r59u2jWrJn/7z/++ENcunQpGocmhBBCCCGEEEIIIalolEKo3r59+wK+GzNmjNi6dWukD00IIYQQQgghhBBCUtUo9fvvv0sjlJaXXnpJVKlSJdKHJoQQQgghhBBCCCGpapS66aabxNtvvx3w3aZNm8Thw4cjfWhCCCGEEEIIIYQQEqdEPfseOHbsmDh//nwsDk0IIYQQQgghhBBCUtUo1ahRI1G8ePFYHJoQQgghhBBCCCGEpKpRavz48TIjHyGEEEIIIYQQQghJTWJilNq5c6c4fvx4LA5NCCGEEEIIIYQQQlLFKHXnnXeKCRMmBHzXrl078f3330fj8IQQQgghhBBCCCEkFY1SGTNmFE8//bQYPny4/7sRI0aIYsWKRePwhBBCCCGEEEIIISRVw/fSp08vunTpIi5duiRat24tsmbNKq6++upoHZ4QQgghhBBCCCGExBFpfD6fL9aFIIQQQgghhBBCCCGpRUyEzgkhhBBCCCGEEEJIakOjFCGEEEIIIYQQQgiJOjRKEUIIIYQQQgghhJCoQ6MUIYQQQgghhBBCCIk6NEoRQgghhBBCCCGEkKhDoxQhhBBCCCGEEEIIiTo0ShFCCCGEEEIIIYSQqEOjFCGEEEIIIYQQQgiJOjRKEUIIIYQQQgghhBARbf4fNVPinHpdl34AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1200x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "candidates = errors[\n",
    "    (errors[\"frac_chars_changed\"] > 0.4) & (errors[\"gt_cer\"] > 0.5)\n",
    "].sort_values(\"gt_cer\", ascending=False)\n",
    "\n",
    "if len(candidates):\n",
    "    show_case(\n",
    "        candidates.iloc[0],\n",
    "        \"Over-correction\",\n",
    "        \"Claude changed >40% of chars (frac_chars_changed) but result still wrong (gt_cer)\",\n",
    "    )\n",
    "else:\n",
    "    print(\"(no candidates matched the heuristic)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2691fd09",
   "metadata": {},
   "source": [
    "### Case 3 — Length mismatch (Claude returned the wrong line)\n",
    "\n",
    "Found 0.3% of rows have `len(corrected) / len(gt) > 2.5` — the symptom of an alignment failure where Claude returned a different line's content for a given `LINE_N` marker. Documented honestly as a known issue rather than papered over."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "74d280fa",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-04T22:12:07.698625Z",
     "iopub.status.busy": "2026-05-04T22:12:07.698527Z",
     "iopub.status.idle": "2026-05-04T22:12:07.719361Z",
     "shell.execute_reply": "2026-05-04T22:12:07.718889Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== Length mismatch (278-27) ===\n",
      "why picked: Claude returned content for the wrong [LINE_N] (alignment bug, ~0.3% of rows)\n",
      "\n",
      "  GT       : 'from hence. The Recruits at Fort'\n",
      "  TrOCR    : 'from-henca . \" The Recruit at Fort'\n",
      "  Corrected: 'Cumberland are all paid off to the 1st of October as private men, there being no distinction made between them and Sergeants;'\n",
      "\n",
      "  features:\n",
      "    gt_cer              = 3.281\n",
      "    mean_logprob        = -0.582\n",
      "    frac_chars_changed  = 3.059\n",
      "    llm_confidence      = 0.70\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1200x150 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "errors_with_ratio = errors.assign(\n",
    "    len_ratio=errors[\"corrected_text\"].str.len() / errors[\"gt\"].str.len().clip(lower=1)\n",
    ")\n",
    "candidates = errors_with_ratio[errors_with_ratio[\"len_ratio\"] > 2.5].sort_values(\n",
    "    \"len_ratio\", ascending=False\n",
    ")\n",
    "\n",
    "if len(candidates):\n",
    "    show_case(\n",
    "        candidates.iloc[0],\n",
    "        \"Length mismatch\",\n",
    "        \"Claude returned content for the wrong [LINE_N] (alignment bug, ~0.3% of rows)\",\n",
    "    )\n",
    "else:\n",
    "    print(\"(no candidates matched the heuristic)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49de64fd",
   "metadata": {},
   "source": [
    "## 4. Takeaways for a v2\n",
    "\n",
    "What this analysis points at, concretely:\n",
    "\n",
    "1. **Punctuation handling is a soft target.** Top insertions are dominated by punctuation chars. A prompt-level fix (\"preserve original punctuation exactly, including period/comma placement around capitalised words\") plus a `frac_punct_changed` feature in the flagger would compound — the former reduces the error, the latter catches the residual.\n",
    "\n",
    "2. **Long-s and historical character variants.** The decoder maps a few `s_X` tokens to modern equivalents, but the OCR layer (TrOCR + Claude) doesn't know about pre-1800 ligatures and sometimes \"modernises\" them silently. A v2 could either (a) train TrOCR on a small historical-handwriting fine-tune set, or (b) add an instruction to the post-correction prompt about long-s and character variants explicitly.\n",
    "\n",
    "3. **The alignment-failure rate is small (~0.3%) but real.** Mitigation options: ask Claude to echo back each `[LINE_N]` marker so we can validate the response key, or fall back to per-line API calls (lossier on cross-line context but bulletproof on alignment).\n",
    "\n",
    "4. **The \"confidently wrong\" failure mode is exactly what the agreement signal in the learned flagger is for.** This notebook is empirical evidence for why TrOCR's logprobs alone aren't enough — there are real lines where the model is confident *and* wrong, and only the disagreement with Claude flags them.\n",
    "\n",
    "These four points together suggest the fastest path to better numbers is **prompt iteration on punctuation + historical chars**, not model architecture changes. Cheap to try, easy to A/B compare against the current parquet."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}