[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-data-first-charting-tools-and-techniques-that-work-summary":3,"summaries-facets-categories":76,"summary-related-data-first-charting-tools-and-techniques-that-work-summary":4481},{"id":4,"title":5,"ai":6,"body":13,"categories":46,"created_at":48,"date_modified":48,"description":40,"extension":49,"faq":48,"featured":50,"kicker_label":48,"meta":51,"navigation":58,"path":59,"published_at":48,"question":48,"scraped_at":60,"seo":61,"sitemap":62,"source_id":63,"source_name":64,"source_type":65,"source_url":66,"stem":67,"tags":68,"thumbnail_url":48,"tldr":73,"tweet":48,"unknown_tags":74,"__hash__":75},"summaries\u002Fsummaries\u002Fdata-first-charting-tools-and-techniques-that-work-summary.md","Data-First Charting: Tools and Techniques That Work",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",4365,899,6988,0.0013,{"type":14,"value":15,"toc":39},"minimark",[16,21,25,29,32,36],[17,18,20],"h2",{"id":19},"reject-templates-begin-with-data-exploration","Reject Templates: Begin with Data Exploration",[22,23,24],"p",{},"Mechanical chart templates fail because datasets rarely reveal insights automatically—you often don't know what to look for upfront. Instead, ask questions about the data and learn its structure first. This purpose-driven approach, shaped by audience needs, ensures charts communicate effectively rather than just displaying numbers. Nathan Yau's process turns raw datasets into graphics by prioritizing exploration over plug-and-play software.",[17,26,28],{"id":27},"build-a-flexible-toolset-for-any-dataset","Build a Flexible Toolset for Any Dataset",[22,30,31],{},"No single tool dominates; select based on your situation, potentially mixing R for stats, Python for scripting, Illustrator for polish, and web tools for interactivity. Yau's examples demonstrate step-by-step workflows across these, letting you test and choose what fits your projects. This avoids tool obsession, focusing on outcomes like finished, publication-ready visuals from real-world data.",[17,33,35],{"id":34},"master-visualization-by-data-type-and-purpose","Master Visualization by Data Type and Purpose",[22,37,38],{},"Follow a structured progression: handle data cleaning, then visualize time series (trends over periods), categories (group comparisons), relationships (correlations via scatterplots or heatmaps), and space (geographic mappings). Analyze visually for patterns, and design with intent—considering layout, color, and form to tell stories. Updated for 2024 with new tools, datasets, and methods since the 2011 first edition, this covers nine chapters from storytelling basics to purposeful design, using Yau's FlowingData projects as concrete examples.",{"title":40,"searchDepth":41,"depth":41,"links":42},"",2,[43,44,45],{"id":19,"depth":41,"text":20},{"id":27,"depth":41,"text":28},{"id":34,"depth":41,"text":35},[47],"Data Science & Visualization",null,"md",false,{"content_references":52,"triage":53},[],{"relevance":54,"novelty":55,"quality":54,"actionability":54,"composite":56,"reasoning":57},4,3,3.8,"Category: Data Science & Visualization. The article provides a structured approach to data visualization that addresses the audience's need for practical techniques in creating effective charts. It emphasizes the importance of data exploration and flexible tool selection, which are actionable insights for product builders.",true,"\u002Fsummaries\u002Fdata-first-charting-tools-and-techniques-that-work-summary","2026-04-15 15:35:49",{"title":5,"description":40},{"loc":59},"bb218028fbecee75","__oneoff__","article","https:\u002F\u002Fbook.flowingdata.com\u002F","summaries\u002Fdata-first-charting-tools-and-techniques-that-work-summary",[69,70,71,72],"data-visualization","python","data-science","r","Start with data questions to drive purposeful charts, using flexible tools like R and Python over rigid templates, covering time, categories, relationships, space, and design.",[72],"s6jM_ZffaB8g-KvsQFD1Nz6mwH_JmLSXujCBM77fTR0",[77,80,82,85,87,90,93,96,99,101,103,105,107,109,111,113,116,118,120,122,124,126,128,131,133,135,137,139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189,191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229,231,233,235,237,239,241,243,245,247,249,251,253,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291,293,295,297,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091,4093,4095,4097,4099,4101,4103,4105,4107,4109,4111,4113,4115,4117,4119,4121,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147,4149,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173,4175,4177,4179,4181,4183,4185,4187,4189,4191,4193,4195,4197,4199,4201,4203,4205,4207,4209,4211,4213,4215,4217,4219,4221,4223,4225,4227,4229,4231,4233,4235,4237,4239,4241,4243,4245,4247,4249,4251,4253,4255,4257,4259,4261,4263,4265,4267,4269,4271,4273,4275,4277,4279,4281,4283,4285,4287,4289,4291,4293,4295,4297,4299,4301,4303,4305,4307,4309,4311,4313,4315,4317,4319,4321,4323,4325,4327,4329,4331,4333,4335,4337,4339,4341,4343,4345,4347,4349,4351,4353,4355,4357,4359,4361,4363,4365,4367,4369,4371,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399,4401,4403,4405,4407,4409,4411,4413,4415,4417,4419,4421,4423,4425,4427,4429,4431,4433,4435,4437,4439,4441,4443,4445,4447,4449,4451,4453,4455,4457,4459,4461,4463,4465,4467,4469,4471,4473,4475,4477,4479],{"categories":78},[79],"Business & SaaS",{"categories":81},[79],{"categories":83},[84],"AI News & Trends",{"categories":86},[],{"categories":88},[89],"AI Automation",{"categories":91},[92],"Marketing & Growth",{"categories":94},[95],"Design & Frontend",{"categories":97},[98],"Software Engineering",{"categories":100},[89],{"categories":102},[],{"categories":104},[95],{"categories":106},[95],{"categories":108},[89],{"categories":110},[95],{"categories":112},[95],{"categories":114},[115],"AI & LLMs",{"categories":117},[95],{"categories":119},[95],{"categories":121},[],{"categories":123},[95],{"categories":125},[95],{"categories":127},[115],{"categories":129},[130],"Developer Productivity",{"categories":132},[115],{"categories":134},[115],{"categories":136},[115],{"categories":138},[84],{"categories":140},[115],{"categories":142},[89],{"categories":144},[79],{"categories":146},[84],{"categories":148},[92],{"categories":150},[],{"categories":152},[],{"categories":154},[89],{"categories":156},[89],{"categories":158},[89],{"categories":160},[92],{"categories":162},[115],{"categories":164},[130],{"categories":166},[84],{"categories":168},[],{"categories":170},[],{"categories":172},[],{"categories":174},[47],{"categories":176},[],{"categories":178},[89],{"categories":180},[98],{"categories":182},[89],{"categories":184},[89],{"categories":186},[115],{"categories":188},[92],{"categories":190},[89],{"categories":192},[],{"categories":194},[],{"categories":196},[],{"categories":198},[95],{"categories":200},[95],{"categories":202},[89],{"categories":204},[92],{"categories":206},[130],{"categories":208},[95],{"categories":210},[115],{"categories":212},[98],{"categories":214},[115],{"categories":216},[],{"categories":218},[89],{"categories":220},[115],{"categories":222},[130],{"categories":224},[130],{"categories":226},[],{"categories":228},[92],{"categories":230},[79],{"categories":232},[115],{"categories":234},[79],{"categories":236},[79],{"categories":238},[89],{"categories":240},[92],{"categories":242},[89],{"categories":244},[79],{"categories":246},[89],{"categories":248},[95],{"categories":250},[115],{"categories":252},[95],{"categories":254},[115],{"categories":256},[79],{"categories":258},[115],{"categories":260},[92],{"categories":262},[],{"categories":264},[115],{"categories":266},[79],{"categories":268},[],{"categories":270},[84],{"categories":272},[98],{"categories":274},[],{"categories":276},[115],{"categories":278},[95],{"categories":280},[115],{"categories":282},[95],{"categories":284},[],{"categories":286},[89],{"categories":288},[],{"categories":290},[],{"categories":292},[],{"categories":294},[115],{"categories":296},[],{"categories":298},[115],{"categories":300},[115],{"categories":302},[95],{"categories":304},[115],{"categories":306},[130],{"categories":308},[89],{"categories":310},[92],{"categories":312},[130],{"categories":314},[130],{"categories":316},[130],{"categories":318},[92],{"categories":320},[92],{"categories":322},[115],{"categories":324},[115],{"categories":326},[95],{"categories":328},[79],{"categories":330},[95],{"categories":332},[98],{"categories":334},[79],{"categories":336},[79],{"categories":338},[79],{"categories":340},[95],{"categories":342},[],{"categories":344},[],{"categories":346},[115],{"categories":348},[115],{"categories":350},[98],{"categories":352},[115],{"categories":354},[115],{"categories":356},[],{"categories":358},[115],{"categories":360},[115],{"categories":362},[],{"categories":364},[115],{"categories":366},[84],{"categories":368},[84],{"categories":370},[],{"categories":372},[],{"categories":374},[92],{"categories":376},[92],{"categories":378},[98],{"categories":380},[115],{"categories":382},[],{"categories":384},[],{"categories":386},[89],{"categories":388},[115],{"categories":390},[115],{"categories":392},[],{"categories":394},[115,79],{"categories":396},[115],{"categories":398},[],{"categories":400},[115],{"categories":402},[115],{"categories":404},[],{"categories":406},[],{"categories":408},[89],{"categories":410},[115],{"categories":412},[115],{"categories":414},[89],{"categories":416},[115],{"categories":418},[],{"categories":420},[],{"categories":422},[115],{"categories":424},[],{"categories":426},[115],{"categories":428},[115],{"categories":430},[],{"categories":432},[89],{"categories":434},[95],{"categories":436},[],{"categories":438},[89,439],"DevOps & Cloud",{"categories":441},[115],{"categories":443},[89],{"categories":445},[115],{"categories":447},[],{"categories":449},[],{"categories":451},[],{"categories":453},[],{"categories":455},[115],{"categories":457},[89],{"categories":459},[],{"categories":461},[89],{"categories":463},[],{"categories":465},[115],{"categories":467},[],{"categories":469},[],{"categories":471},[],{"categories":473},[],{"categories":475},[89],{"categories":477},[95],{"categories":479},[115],{"categories":481},[92],{"categories":483},[84],{"categories":485},[79],{"categories":487},[130],{"categories":489},[],{"categories":491},[89],{"categories":493},[89],{"categories":495},[115],{"categories":497},[],{"categories":499},[],{"categories":501},[],{"categories":503},[89],{"categories":505},[],{"categories":507},[89],{"categories":509},[89],{"categories":511},[84],{"categories":513},[89],{"categories":515},[115],{"categories":517},[],{"categories":519},[115],{"categories":521},[],{"categories":523},[84],{"categories":525},[89,526],"Product Strategy",{"categories":528},[98],{"categories":530},[439],{"categories":532},[526],{"categories":534},[115],{"categories":536},[89],{"categories":538},[],{"categories":540},[84],{"categories":542},[84],{"categories":544},[89],{"categories":546},[],{"categories":548},[89],{"categories":550},[115],{"categories":552},[115],{"categories":554},[130],{"categories":556},[115],{"categories":558},[],{"categories":560},[115,98],{"categories":562},[84],{"categories":564},[115],{"categories":566},[84],{"categories":568},[89],{"categories":570},[84],{"categories":572},[],{"categories":574},[98],{"categories":576},[79],{"categories":578},[],{"categories":580},[89],{"categories":582},[89],{"categories":584},[89],{"categories":586},[89],{"categories":588},[79],{"categories":590},[95],{"categories":592},[92],{"categories":594},[],{"categories":596},[89],{"categories":598},[],{"categories":600},[84],{"categories":602},[84],{"categories":604},[84],{"categories":606},[89],{"categories":608},[84],{"categories":610},[115],{"categories":612},[130],{"categories":614},[115],{"categories":616},[98],{"categories":618},[115,130],{"categories":620},[130],{"categories":622},[130],{"categories":624},[130],{"categories":626},[130],{"categories":628},[115],{"categories":630},[],{"categories":632},[],{"categories":634},[92],{"categories":636},[],{"categories":638},[115],{"categories":640},[130],{"categories":642},[115],{"categories":644},[95],{"categories":646},[98],{"categories":648},[],{"categories":650},[115],{"categories":652},[130],{"categories":654},[92],{"categories":656},[84],{"categories":658},[98],{"categories":660},[115],{"categories":662},[],{"categories":664},[98],{"categories":666},[95],{"categories":668},[79],{"categories":670},[79],{"categories":672},[],{"categories":674},[95],{"categories":676},[79],{"categories":678},[84],{"categories":680},[130],{"categories":682},[89],{"categories":684},[89],{"categories":686},[115],{"categories":688},[115],{"categories":690},[84],{"categories":692},[84],{"categories":694},[130],{"categories":696},[84],{"categories":698},[],{"categories":700},[526],{"categories":702},[89],{"categories":704},[84],{"categories":706},[84],{"categories":708},[84],{"categories":710},[115],{"categories":712},[89],{"categories":714},[89],{"categories":716},[79],{"categories":718},[79],{"categories":720},[115],{"categories":722},[84],{"categories":724},[],{"categories":726},[115],{"categories":728},[79],{"categories":730},[89],{"categories":732},[89],{"categories":734},[89],{"categories":736},[95],{"categories":738},[89],{"categories":740},[130],{"categories":742},[84],{"categories":744},[84],{"categories":746},[84],{"categories":748},[84],{"categories":750},[84],{"categories":752},[],{"categories":754},[],{"categories":756},[130],{"categories":758},[84],{"categories":760},[84],{"categories":762},[84],{"categories":764},[],{"categories":766},[115],{"categories":768},[],{"categories":770},[],{"categories":772},[95],{"categories":774},[79],{"categories":776},[],{"categories":778},[84],{"categories":780},[89],{"categories":782},[89],{"categories":784},[89],{"categories":786},[92],{"categories":788},[89],{"categories":790},[],{"categories":792},[84],{"categories":794},[84],{"categories":796},[115],{"categories":798},[],{"categories":800},[92],{"categories":802},[92],{"categories":804},[115],{"categories":806},[84],{"categories":808},[79],{"categories":810},[98],{"categories":812},[115],{"categories":814},[],{"categories":816},[115],{"categories":818},[115],{"categories":820},[98],{"categories":822},[115],{"categories":824},[115],{"categories":826},[115],{"categories":828},[92],{"categories":830},[84],{"categories":832},[115],{"categories":834},[115],{"categories":836},[84],{"categories":838},[89],{"categories":840},[130],{"categories":842},[79],{"categories":844},[115],{"categories":846},[130],{"categories":848},[130],{"categories":850},[],{"categories":852},[92],{"categories":854},[84],{"categories":856},[84],{"categories":858},[130],{"categories":860},[89],{"categories":862},[89],{"categories":864},[89],{"categories":866},[89],{"categories":868},[95],{"categories":870},[115],{"categories":872},[115],{"categories":874},[526],{"categories":876},[115],{"categories":878},[115],{"categories":880},[89],{"categories":882},[79],{"categories":884},[92],{"categories":886},[],{"categories":888},[79],{"categories":890},[79],{"categories":892},[],{"categories":894},[95],{"categories":896},[115],{"categories":898},[],{"categories":900},[],{"categories":902},[84],{"categories":904},[84],{"categories":906},[84],{"categories":908},[84],{"categories":910},[],{"categories":912},[84],{"categories":914},[115],{"categories":916},[115],{"categories":918},[],{"categories":920},[84],{"categories":922},[84],{"categories":924},[79],{"categories":926},[115],{"categories":928},[],{"categories":930},[],{"categories":932},[84],{"categories":934},[84],{"categories":936},[84],{"categories":938},[115],{"categories":940},[84],{"categories":942},[84],{"categories":944},[84],{"categories":946},[84],{"categories":948},[84],{"categories":950},[],{"categories":952},[89],{"categories":954},[115],{"categories":956},[92],{"categories":958},[79],{"categories":960},[89],{"categories":962},[115],{"categories":964},[],{"categories":966},[92],{"categories":968},[84],{"categories":970},[84],{"categories":972},[84],{"categories":974},[84],{"categories":976},[130],{"categories":978},[98],{"categories":980},[],{"categories":982},[115],{"categories":984},[89],{"categories":986},[89],{"categories":988},[89],{"categories":990},[439],{"categories":992},[89],{"categories":994},[115],{"categories":996},[115],{"categories":998},[98],{"categories":1000},[439],{"categories":1002},[47],{"categories":1004},[115],{"categories":1006},[47],{"categories":1008},[],{"categories":1010},[92],{"categories":1012},[92],{"categories":1014},[95],{"categories":1016},[439],{"categories":1018},[89],{"categories":1020},[115],{"categories":1022},[115],{"categories":1024},[89],{"categories":1026},[89],{"categories":1028},[89],{"categories":1030},[130],{"categories":1032},[130],{"categories":1034},[89],{"categories":1036},[89],{"categories":1038},[],{"categories":1040},[89],{"categories":1042},[89],{"categories":1044},[115],{"categories":1046},[47],{"categories":1048},[89],{"categories":1050},[89],{"categories":1052},[89],{"categories":1054},[89],{"categories":1056},[79],{"categories":1058},[95],{"categories":1060},[84],{"categories":1062},[98],{"categories":1064},[439],{"categories":1066},[98],{"categories":1068},[47],{"categories":1070},[],{"categories":1072},[98],{"categories":1074},[],{"categories":1076},[],{"categories":1078},[98],{"categories":1080},[115],{"categories":1082},[],{"categories":1084},[],{"categories":1086},[],{"categories":1088},[79],{"categories":1090},[],{"categories":1092},[],{"categories":1094},[47],{"categories":1096},[115],{"categories":1098},[439],{"categories":1100},[115],{"categories":1102},[],{"categories":1104},[89],{"categories":1106},[130],{"categories":1108},[130],{"categories":1110},[92],{"categories":1112},[92],{"categories":1114},[92],{"categories":1116},[439],{"categories":1118},[98],{"categories":1120},[89],{"categories":1122},[79],{"categories":1124},[79],{"categories":1126},[98],{"categories":1128},[95],{"categories":1130},[47],{"categories":1132},[95],{"categories":1134},[],{"categories":1136},[115],{"categories":1138},[89],{"categories":1140},[89],{"categories":1142},[130],{"categories":1144},[89],{"categories":1146},[89],{"categories":1148},[95],{"categories":1150},[95],{"categories":1152},[89],{"categories":1154},[439],{"categories":1156},[115],{"categories":1158},[],{"categories":1160},[92],{"categories":1162},[89],{"categories":1164},[79],{"categories":1166},[89],{"categories":1168},[89],{"categories":1170},[],{"categories":1172},[115],{"categories":1174},[89],{"categories":1176},[89],{"categories":1178},[130],{"categories":1180},[89],{"categories":1182},[115],{"categories":1184},[],{"categories":1186},[89],{"categories":1188},[],{"categories":1190},[95],{"categories":1192},[130],{"categories":1194},[115],{"categories":1196},[98],{"categories":1198},[95],{"categories":1200},[130],{"categories":1202},[47],{"categories":1204},[130],{"categories":1206},[],{"categories":1208},[115],{"categories":1210},[115],{"categories":1212},[526],{"categories":1214},[98],{"categories":1216},[115,89],{"categories":1218},[89],{"categories":1220},[115],{"categories":1222},[89],{"categories":1224},[89,98],{"categories":1226},[89],{"categories":1228},[115],{"categories":1230},[],{"categories":1232},[130],{"categories":1234},[115],{"categories":1236},[89],{"categories":1238},[115],{"categories":1240},[],{"categories":1242},[98],{"categories":1244},[79],{"categories":1246},[89],{"categories":1248},[],{"categories":1250},[47],{"categories":1252},[98],{"categories":1254},[89],{"categories":1256},[98],{"categories":1258},[],{"categories":1260},[89],{"categories":1262},[],{"categories":1264},[89],{"categories":1266},[],{"categories":1268},[],{"categories":1270},[95],{"categories":1272},[130],{"categories":1274},[115],{"categories":1276},[89],{"categories":1278},[],{"categories":1280},[89],{"categories":1282},[98],{"categories":1284},[115],{"categories":1286},[115],{"categories":1288},[98],{"categories":1290},[98],{"categories":1292},[130],{"categories":1294},[79],{"categories":1296},[],{"categories":1298},[115],{"categories":1300},[115],{"categories":1302},[115],{"categories":1304},[89],{"categories":1306},[115],{"categories":1308},[],{"categories":1310},[95],{"categories":1312},[115],{"categories":1314},[89],{"categories":1316},[],{"categories":1318},[115],{"categories":1320},[],{"categories":1322},[115],{"categories":1324},[],{"categories":1326},[],{"categories":1328},[],{"categories":1330},[115],{"categories":1332},[115],{"categories":1334},[115],{"categories":1336},[115],{"categories":1338},[],{"categories":1340},[115],{"categories":1342},[115],{"categories":1344},[115],{"categories":1346},[],{"categories":1348},[115],{"categories":1350},[],{"categories":1352},[92],{"categories":1354},[115],{"categories":1356},[],{"categories":1358},[],{"categories":1360},[],{"categories":1362},[115],{"categories":1364},[84],{"categories":1366},[84],{"categories":1368},[],{"categories":1370},[89],{"categories":1372},[115],{"categories":1374},[],{"categories":1376},[115],{"categories":1378},[115],{"categories":1380},[84],{"categories":1382},[],{"categories":1384},[115],{"categories":1386},[84],{"categories":1388},[89],{"categories":1390},[115],{"categories":1392},[],{"categories":1394},[],{"categories":1396},[],{"categories":1398},[89],{"categories":1400},[89],{"categories":1402},[89],{"categories":1404},[89],{"categories":1406},[115],{"categories":1408},[95],{"categories":1410},[95],{"categories":1412},[89],{"categories":1414},[89],{"categories":1416},[130],{"categories":1418},[526],{"categories":1420},[130],{"categories":1422},[130],{"categories":1424},[115],{"categories":1426},[89],{"categories":1428},[115],{"categories":1430},[130],{"categories":1432},[115],{"categories":1434},[89],{"categories":1436},[89],{"categories":1438},[89],{"categories":1440},[89],{"categories":1442},[89],{"categories":1444},[115],{"categories":1446},[130],{"categories":1448},[130],{"categories":1450},[92],{"categories":1452},[89],{"categories":1454},[],{"categories":1456},[89],{"categories":1458},[],{"categories":1460},[84],{"categories":1462},[115],{"categories":1464},[],{"categories":1466},[79],{"categories":1468},[95],{"categories":1470},[95],{"categories":1472},[89],{"categories":1474},[89],{"categories":1476},[115],{"categories":1478},[115],{"categories":1480},[84],{"categories":1482},[84],{"categories":1484},[439],{"categories":1486},[89],{"categories":1488},[84],{"categories":1490},[],{"categories":1492},[115],{"categories":1494},[89],{"categories":1496},[89],{"categories":1498},[89],{"categories":1500},[89],{"categories":1502},[115],{"categories":1504},[115],{"categories":1506},[115],{"categories":1508},[115],{"categories":1510},[89],{"categories":1512},[89],{"categories":1514},[89],{"categories":1516},[89],{"categories":1518},[],{"categories":1520},[95],{"categories":1522},[115],{"categories":1524},[115],{"categories":1526},[115],{"categories":1528},[],{"categories":1530},[92],{"categories":1532},[],{"categories":1534},[130],{"categories":1536},[],{"categories":1538},[89],{"categories":1540},[130],{"categories":1542},[95],{"categories":1544},[130],{"categories":1546},[],{"categories":1548},[130],{"categories":1550},[130],{"categories":1552},[],{"categories":1554},[95],{"categories":1556},[89],{"categories":1558},[89],{"categories":1560},[130],{"categories":1562},[115],{"categories":1564},[115],{"categories":1566},[],{"categories":1568},[84],{"categories":1570},[],{"categories":1572},[92],{"categories":1574},[],{"categories":1576},[95],{"categories":1578},[84],{"categories":1580},[95],{"categories":1582},[95],{"categories":1584},[95],{"categories":1586},[95],{"categories":1588},[95],{"categories":1590},[95],{"categories":1592},[95],{"categories":1594},[95],{"categories":1596},[95],{"categories":1598},[95],{"categories":1600},[],{"categories":1602},[89],{"categories":1604},[95],{"categories":1606},[115],{"categories":1608},[115],{"categories":1610},[95],{"categories":1612},[95],{"categories":1614},[95],{"categories":1616},[95],{"categories":1618},[95],{"categories":1620},[95],{"categories":1622},[95],{"categories":1624},[115,95],{"categories":1626},[95],{"categories":1628},[95],{"categories":1630},[95],{"categories":1632},[95],{"categories":1634},[],{"categories":1636},[95],{"categories":1638},[95],{"categories":1640},[95],{"categories":1642},[95],{"categories":1644},[95],{"categories":1646},[95],{"categories":1648},[95],{"categories":1650},[95],{"categories":1652},[95],{"categories":1654},[95,115],{"categories":1656},[95],{"categories":1658},[95],{"categories":1660},[],{"categories":1662},[84],{"categories":1664},[],{"categories":1666},[115],{"categories":1668},[],{"categories":1670},[89],{"categories":1672},[439],{"categories":1674},[526],{"categories":1676},[89],{"categories":1678},[89],{"categories":1680},[],{"categories":1682},[89],{"categories":1684},[],{"categories":1686},[89],{"categories":1688},[],{"categories":1690},[],{"categories":1692},[115],{"categories":1694},[115],{"categories":1696},[115],{"categories":1698},[84],{"categories":1700},[84],{"categories":1702},[84],{"categories":1704},[84],{"categories":1706},[],{"categories":1708},[84],{"categories":1710},[],{"categories":1712},[84],{"categories":1714},[115],{"categories":1716},[84],{"categories":1718},[84],{"categories":1720},[84],{"categories":1722},[84],{"categories":1724},[115],{"categories":1726},[84],{"categories":1728},[89],{"categories":1730},[],{"categories":1732},[89],{"categories":1734},[84],{"categories":1736},[115],{"categories":1738},[84],{"categories":1740},[84],{"categories":1742},[84],{"categories":1744},[115],{"categories":1746},[115],{"categories":1748},[115],{"categories":1750},[],{"categories":1752},[],{"categories":1754},[115],{"categories":1756},[84],{"categories":1758},[],{"categories":1760},[115],{"categories":1762},[89],{"categories":1764},[115],{"categories":1766},[89],{"categories":1768},[89],{"categories":1770},[115],{"categories":1772},[],{"categories":1774},[],{"categories":1776},[89],{"categories":1778},[89],{"categories":1780},[89],{"categories":1782},[89],{"categories":1784},[89],{"categories":1786},[89],{"categories":1788},[89],{"categories":1790},[89],{"categories":1792},[],{"categories":1794},[89],{"categories":1796},[89],{"categories":1798},[89],{"categories":1800},[115],{"categories":1802},[115],{"categories":1804},[115],{"categories":1806},[84],{"categories":1808},[115],{"categories":1810},[115],{"categories":1812},[115],{"categories":1814},[89],{"categories":1816},[92],{"categories":1818},[92],{"categories":1820},[92],{"categories":1822},[89],{"categories":1824},[],{"categories":1826},[115],{"categories":1828},[],{"categories":1830},[],{"categories":1832},[115],{"categories":1834},[],{"categories":1836},[89],{"categories":1838},[95],{"categories":1840},[130],{"categories":1842},[47],{"categories":1844},[115],{"categories":1846},[89],{"categories":1848},[95],{"categories":1850},[],{"categories":1852},[89],{"categories":1854},[92,79],{"categories":1856},[89],{"categories":1858},[89],{"categories":1860},[439],{"categories":1862},[98],{"categories":1864},[92],{"categories":1866},[130],{"categories":1868},[115],{"categories":1870},[],{"categories":1872},[115],{"categories":1874},[],{"categories":1876},[115],{"categories":1878},[115],{"categories":1880},[89],{"categories":1882},[],{"categories":1884},[115],{"categories":1886},[89],{"categories":1888},[115],{"categories":1890},[130],{"categories":1892},[89],{"categories":1894},[115],{"categories":1896},[115,130],{"categories":1898},[130],{"categories":1900},[],{"categories":1902},[115],{"categories":1904},[115],{"categories":1906},[115],{"categories":1908},[],{"categories":1910},[],{"categories":1912},[89],{"categories":1914},[92],{"categories":1916},[84],{"categories":1918},[89],{"categories":1920},[115],{"categories":1922},[84],{"categories":1924},[],{"categories":1926},[130],{"categories":1928},[84],{"categories":1930},[],{"categories":1932},[47],{"categories":1934},[92],{"categories":1936},[79],{"categories":1938},[84],{"categories":1940},[115],{"categories":1942},[89],{"categories":1944},[115],{"categories":1946},[89],{"categories":1948},[89],{"categories":1950},[84],{"categories":1952},[130],{"categories":1954},[95],{"categories":1956},[79],{"categories":1958},[115],{"categories":1960},[115],{"categories":1962},[],{"categories":1964},[],{"categories":1966},[115],{"categories":1968},[],{"categories":1970},[115],{"categories":1972},[84],{"categories":1974},[],{"categories":1976},[89],{"categories":1978},[130],{"categories":1980},[84],{"categories":1982},[130],{"categories":1984},[89],{"categories":1986},[115],{"categories":1988},[],{"categories":1990},[89],{"categories":1992},[89],{"categories":1994},[95],{"categories":1996},[89],{"categories":1998},[95],{"categories":2000},[89],{"categories":2002},[89],{"categories":2004},[95],{"categories":2006},[],{"categories":2008},[],{"categories":2010},[95],{"categories":2012},[95],{"categories":2014},[95],{"categories":2016},[98],{"categories":2018},[130],{"categories":2020},[130],{"categories":2022},[89],{"categories":2024},[84],{"categories":2026},[130],{"categories":2028},[130],{"categories":2030},[92],{"categories":2032},[95],{"categories":2034},[89],{"categories":2036},[89],{"categories":2038},[115],{"categories":2040},[130],{"categories":2042},[115],{"categories":2044},[],{"categories":2046},[439],{"categories":2048},[526],{"categories":2050},[],{"categories":2052},[],{"categories":2054},[89],{"categories":2056},[84],{"categories":2058},[92],{"categories":2060},[92],{"categories":2062},[47],{"categories":2064},[95],{"categories":2066},[47],{"categories":2068},[47],{"categories":2070},[89],{"categories":2072},[],{"categories":2074},[],{"categories":2076},[47],{"categories":2078},[98],{"categories":2080},[115],{"categories":2082},[98],{"categories":2084},[47],{"categories":2086},[98],{"categories":2088},[47],{"categories":2090},[79],{"categories":2092},[98],{"categories":2094},[130],{"categories":2096},[115],{"categories":2098},[],{"categories":2100},[47],{"categories":2102},[439],{"categories":2104},[],{"categories":2106},[115],{"categories":2108},[115],{"categories":2110},[],{"categories":2112},[],{"categories":2114},[115],{"categories":2116},[115],{"categories":2118},[84],{"categories":2120},[115],{"categories":2122},[],{"categories":2124},[84],{"categories":2126},[],{"categories":2128},[],{"categories":2130},[84],{"categories":2132},[84],{"categories":2134},[115],{"categories":2136},[115],{"categories":2138},[115],{"categories":2140},[115],{"categories":2142},[115],{"categories":2144},[115],{"categories":2146},[92],{"categories":2148},[],{"categories":2150},[115],{"categories":2152},[],{"categories":2154},[],{"categories":2156},[89],{"categories":2158},[130],{"categories":2160},[],{"categories":2162},[439],{"categories":2164},[115,439],{"categories":2166},[115],{"categories":2168},[],{"categories":2170},[95],{"categories":2172},[95],{"categories":2174},[95],{"categories":2176},[95],{"categories":2178},[95],{"categories":2180},[],{"categories":2182},[],{"categories":2184},[],{"categories":2186},[98],{"categories":2188},[89],{"categories":2190},[79],{"categories":2192},[98],{"categories":2194},[130],{"categories":2196},[95],{"categories":2198},[],{"categories":2200},[92],{"categories":2202},[526],{"categories":2204},[47],{"categories":2206},[47],{"categories":2208},[47],{"categories":2210},[130],{"categories":2212},[526],{"categories":2214},[130],{"categories":2216},[],{"categories":2218},[79],{"categories":2220},[98],{"categories":2222},[115],{"categories":2224},[95],{"categories":2226},[92],{"categories":2228},[98],{"categories":2230},[92],{"categories":2232},[115],{"categories":2234},[95],{"categories":2236},[98],{"categories":2238},[439],{"categories":2240},[115],{"categories":2242},[84],{"categories":2244},[98],{"categories":2246},[],{"categories":2248},[115],{"categories":2250},[98],{"categories":2252},[98],{"categories":2254},[89],{"categories":2256},[],{"categories":2258},[92],{"categories":2260},[92],{"categories":2262},[92],{"categories":2264},[89],{"categories":2266},[115],{"categories":2268},[],{"categories":2270},[79],{"categories":2272},[130],{"categories":2274},[130],{"categories":2276},[47],{"categories":2278},[79],{"categories":2280},[84],{"categories":2282},[47],{"categories":2284},[],{"categories":2286},[84],{"categories":2288},[84],{"categories":2290},[84],{"categories":2292},[115],{"categories":2294},[79],{"categories":2296},[115],{"categories":2298},[],{"categories":2300},[],{"categories":2302},[],{"categories":2304},[98],{"categories":2306},[89],{"categories":2308},[],{"categories":2310},[130],{"categories":2312},[95],{"categories":2314},[],{"categories":2316},[92],{"categories":2318},[],{"categories":2320},[95],{"categories":2322},[115],{"categories":2324},[130],{"categories":2326},[79],{"categories":2328},[],{"categories":2330},[95],{"categories":2332},[95],{"categories":2334},[115],{"categories":2336},[],{"categories":2338},[],{"categories":2340},[98],{"categories":2342},[115],{"categories":2344},[],{"categories":2346},[89],{"categories":2348},[115],{"categories":2350},[],{"categories":2352},[98],{"categories":2354},[89],{"categories":2356},[115],{"categories":2358},[47],{"categories":2360},[115],{"categories":2362},[],{"categories":2364},[47],{"categories":2366},[115],{"categories":2368},[98],{"categories":2370},[115],{"categories":2372},[47],{"categories":2374},[89],{"categories":2376},[115],{"categories":2378},[115],{"categories":2380},[115,89],{"categories":2382},[89],{"categories":2384},[89],{"categories":2386},[89],{"categories":2388},[95],{"categories":2390},[130],{"categories":2392},[115],{"categories":2394},[130],{"categories":2396},[95],{"categories":2398},[115],{"categories":2400},[],{"categories":2402},[],{"categories":2404},[115],{"categories":2406},[115],{"categories":2408},[115],{"categories":2410},[89],{"categories":2412},[115],{"categories":2414},[],{"categories":2416},[115],{"categories":2418},[115],{"categories":2420},[89],{"categories":2422},[89],{"categories":2424},[115],{"categories":2426},[115],{"categories":2428},[],{"categories":2430},[115],{"categories":2432},[],{"categories":2434},[115],{"categories":2436},[115],{"categories":2438},[115],{"categories":2440},[115],{"categories":2442},[115],{"categories":2444},[115],{"categories":2446},[115],{"categories":2448},[],{"categories":2450},[115],{"categories":2452},[84],{"categories":2454},[84],{"categories":2456},[],{"categories":2458},[],{"categories":2460},[115],{"categories":2462},[],{"categories":2464},[115],{"categories":2466},[115,439],{"categories":2468},[],{"categories":2470},[84],{"categories":2472},[],{"categories":2474},[115],{"categories":2476},[],{"categories":2478},[],{"categories":2480},[],{"categories":2482},[115],{"categories":2484},[],{"categories":2486},[115],{"categories":2488},[],{"categories":2490},[115],{"categories":2492},[115],{"categories":2494},[],{"categories":2496},[],{"categories":2498},[115,439],{"categories":2500},[439,115],{"categories":2502},[84],{"categories":2504},[],{"categories":2506},[115],{"categories":2508},[],{"categories":2510},[115],{"categories":2512},[115],{"categories":2514},[],{"categories":2516},[84],{"categories":2518},[115,79],{"categories":2520},[84],{"categories":2522},[98],{"categories":2524},[],{"categories":2526},[89],{"categories":2528},[115],{"categories":2530},[92],{"categories":2532},[115],{"categories":2534},[130],{"categories":2536},[130],{"categories":2538},[439],{"categories":2540},[84],{"categories":2542},[115],{"categories":2544},[439],{"categories":2546},[98],{"categories":2548},[115],{"categories":2550},[130],{"categories":2552},[],{"categories":2554},[115],{"categories":2556},[],{"categories":2558},[],{"categories":2560},[115],{"categories":2562},[],{"categories":2564},[115],{"categories":2566},[98],{"categories":2568},[79],{"categories":2570},[130],{"categories":2572},[92],{"categories":2574},[89],{"categories":2576},[130],{"categories":2578},[],{"categories":2580},[92],{"categories":2582},[],{"categories":2584},[],{"categories":2586},[115],{"categories":2588},[84],{"categories":2590},[92],{"categories":2592},[],{"categories":2594},[115],{"categories":2596},[84],{"categories":2598},[84],{"categories":2600},[92],{"categories":2602},[84],{"categories":2604},[115],{"categories":2606},[84],{"categories":2608},[115],{"categories":2610},[],{"categories":2612},[115],{"categories":2614},[115],{"categories":2616},[115],{"categories":2618},[84],{"categories":2620},[],{"categories":2622},[],{"categories":2624},[95],{"categories":2626},[84],{"categories":2628},[],{"categories":2630},[115],{"categories":2632},[115],{"categories":2634},[115],{"categories":2636},[115],{"categories":2638},[115],{"categories":2640},[115],{"categories":2642},[115],{"categories":2644},[115],{"categories":2646},[115],{"categories":2648},[92],{"categories":2650},[115,95],{"categories":2652},[84],{"categories":2654},[84],{"categories":2656},[115],{"categories":2658},[98],{"categories":2660},[47],{"categories":2662},[115],{"categories":2664},[115],{"categories":2666},[],{"categories":2668},[],{"categories":2670},[115],{"categories":2672},[115],{"categories":2674},[],{"categories":2676},[95],{"categories":2678},[95],{"categories":2680},[130],{"categories":2682},[115],{"categories":2684},[130],{"categories":2686},[115],{"categories":2688},[115],{"categories":2690},[],{"categories":2692},[115],{"categories":2694},[],{"categories":2696},[],{"categories":2698},[115],{"categories":2700},[],{"categories":2702},[],{"categories":2704},[84],{"categories":2706},[],{"categories":2708},[115],{"categories":2710},[115],{"categories":2712},[115],{"categories":2714},[],{"categories":2716},[115],{"categories":2718},[84],{"categories":2720},[526],{"categories":2722},[89],{"categories":2724},[115],{"categories":2726},[],{"categories":2728},[89],{"categories":2730},[115],{"categories":2732},[],{"categories":2734},[115],{"categories":2736},[],{"categories":2738},[89],{"categories":2740},[],{"categories":2742},[],{"categories":2744},[89],{"categories":2746},[89],{"categories":2748},[89],{"categories":2750},[115],{"categories":2752},[],{"categories":2754},[89],{"categories":2756},[89],{"categories":2758},[],{"categories":2760},[],{"categories":2762},[89],{"categories":2764},[115],{"categories":2766},[84],{"categories":2768},[526],{"categories":2770},[92],{"categories":2772},[],{"categories":2774},[95],{"categories":2776},[115],{"categories":2778},[115],{"categories":2780},[79],{"categories":2782},[84],{"categories":2784},[84],{"categories":2786},[84],{"categories":2788},[84],{"categories":2790},[],{"categories":2792},[89],{"categories":2794},[89],{"categories":2796},[89],{"categories":2798},[89],{"categories":2800},[130],{"categories":2802},[115],{"categories":2804},[79],{"categories":2806},[],{"categories":2808},[130],{"categories":2810},[89],{"categories":2812},[95],{"categories":2814},[95],{"categories":2816},[95],{"categories":2818},[95],{"categories":2820},[95],{"categories":2822},[95],{"categories":2824},[115,79],{"categories":2826},[89],{"categories":2828},[79],{"categories":2830},[84],{"categories":2832},[84],{"categories":2834},[130],{"categories":2836},[],{"categories":2838},[],{"categories":2840},[92],{"categories":2842},[],{"categories":2844},[115],{"categories":2846},[92],{"categories":2848},[115],{"categories":2850},[98],{"categories":2852},[89],{"categories":2854},[79],{"categories":2856},[89],{"categories":2858},[98],{"categories":2860},[130],{"categories":2862},[89],{"categories":2864},[],{"categories":2866},[130],{"categories":2868},[],{"categories":2870},[],{"categories":2872},[89],{"categories":2874},[89],{"categories":2876},[89],{"categories":2878},[115],{"categories":2880},[115],{"categories":2882},[115],{"categories":2884},[115],{"categories":2886},[115],{"categories":2888},[],{"categories":2890},[439],{"categories":2892},[115],{"categories":2894},[],{"categories":2896},[],{"categories":2898},[],{"categories":2900},[130],{"categories":2902},[],{"categories":2904},[115],{"categories":2906},[],{"categories":2908},[84],{"categories":2910},[115],{"categories":2912},[84],{"categories":2914},[115],{"categories":2916},[89],{"categories":2918},[],{"categories":2920},[115],{"categories":2922},[115],{"categories":2924},[],{"categories":2926},[47],{"categories":2928},[47],{"categories":2930},[98],{"categories":2932},[95],{"categories":2934},[],{"categories":2936},[115],{"categories":2938},[89],{"categories":2940},[],{"categories":2942},[],{"categories":2944},[115],{"categories":2946},[98],{"categories":2948},[89],{"categories":2950},[79],{"categories":2952},[130,98],{"categories":2954},[98],{"categories":2956},[115],{"categories":2958},[89],{"categories":2960},[],{"categories":2962},[],{"categories":2964},[],{"categories":2966},[],{"categories":2968},[],{"categories":2970},[],{"categories":2972},[115],{"categories":2974},[],{"categories":2976},[],{"categories":2978},[115],{"categories":2980},[],{"categories":2982},[],{"categories":2984},[],{"categories":2986},[115],{"categories":2988},[84],{"categories":2990},[],{"categories":2992},[],{"categories":2994},[],{"categories":2996},[115],{"categories":2998},[],{"categories":3000},[115],{"categories":3002},[115],{"categories":3004},[],{"categories":3006},[115],{"categories":3008},[98],{"categories":3010},[],{"categories":3012},[130],{"categories":3014},[130],{"categories":3016},[],{"categories":3018},[92],{"categories":3020},[],{"categories":3022},[],{"categories":3024},[],{"categories":3026},[95],{"categories":3028},[84],{"categories":3030},[89],{"categories":3032},[115],{"categories":3034},[79],{"categories":3036},[115],{"categories":3038},[],{"categories":3040},[],{"categories":3042},[79],{"categories":3044},[92],{"categories":3046},[89],{"categories":3048},[],{"categories":3050},[439],{"categories":3052},[],{"categories":3054},[92],{"categories":3056},[115],{"categories":3058},[115],{"categories":3060},[92],{"categories":3062},[115],{"categories":3064},[95],{"categories":3066},[89],{"categories":3068},[115],{"categories":3070},[89],{"categories":3072},[115],{"categories":3074},[89],{"categories":3076},[130],{"categories":3078},[130],{"categories":3080},[95],{"categories":3082},[],{"categories":3084},[115],{"categories":3086},[115],{"categories":3088},[92],{"categories":3090},[526],{"categories":3092},[130],{"categories":3094},[84],{"categories":3096},[115],{"categories":3098},[84],{"categories":3100},[115],{"categories":3102},[115],{"categories":3104},[],{"categories":3106},[115],{"categories":3108},[],{"categories":3110},[115],{"categories":3112},[92],{"categories":3114},[115],{"categories":3116},[115],{"categories":3118},[115],{"categories":3120},[],{"categories":3122},[115],{"categories":3124},[115],{"categories":3126},[526],{"categories":3128},[],{"categories":3130},[84],{"categories":3132},[439],{"categories":3134},[98],{"categories":3136},[],{"categories":3138},[47],{"categories":3140},[],{"categories":3142},[],{"categories":3144},[84],{"categories":3146},[115],{"categories":3148},[],{"categories":3150},[115],{"categories":3152},[115],{"categories":3154},[89],{"categories":3156},[115],{"categories":3158},[84],{"categories":3160},[84],{"categories":3162},[95],{"categories":3164},[95],{"categories":3166},[95],{"categories":3168},[115],{"categories":3170},[47],{"categories":3172},[84],{"categories":3174},[130],{"categories":3176},[],{"categories":3178},[95],{"categories":3180},[95],{"categories":3182},[439],{"categories":3184},[95],{"categories":3186},[95],{"categories":3188},[89],{"categories":3190},[84],{"categories":3192},[439],{"categories":3194},[115],{"categories":3196},[115],{"categories":3198},[115],{"categories":3200},[115],{"categories":3202},[],{"categories":3204},[89],{"categories":3206},[115],{"categories":3208},[95],{"categories":3210},[],{"categories":3212},[],{"categories":3214},[84],{"categories":3216},[],{"categories":3218},[89],{"categories":3220},[89],{"categories":3222},[89],{"categories":3224},[89],{"categories":3226},[89],{"categories":3228},[89],{"categories":3230},[89],{"categories":3232},[89],{"categories":3234},[],{"categories":3236},[],{"categories":3238},[115],{"categories":3240},[],{"categories":3242},[89],{"categories":3244},[130],{"categories":3246},[130],{"categories":3248},[47],{"categories":3250},[79],{"categories":3252},[],{"categories":3254},[],{"categories":3256},[],{"categories":3258},[95],{"categories":3260},[115],{"categories":3262},[],{"categories":3264},[79],{"categories":3266},[79],{"categories":3268},[95],{"categories":3270},[130],{"categories":3272},[47],{"categories":3274},[95],{"categories":3276},[95],{"categories":3278},[],{"categories":3280},[89],{"categories":3282},[79],{"categories":3284},[79],{"categories":3286},[115],{"categories":3288},[89],{"categories":3290},[98],{"categories":3292},[95],{"categories":3294},[],{"categories":3296},[92],{"categories":3298},[47],{"categories":3300},[84],{"categories":3302},[84],{"categories":3304},[84],{"categories":3306},[439],{"categories":3308},[],{"categories":3310},[89],{"categories":3312},[],{"categories":3314},[89],{"categories":3316},[89],{"categories":3318},[115],{"categories":3320},[115],{"categories":3322},[98],{"categories":3324},[89],{"categories":3326},[98],{"categories":3328},[],{"categories":3330},[89],{"categories":3332},[95],{"categories":3334},[95],{"categories":3336},[95],{"categories":3338},[115],{"categories":3340},[89],{"categories":3342},[115],{"categories":3344},[79],{"categories":3346},[84],{"categories":3348},[95],{"categories":3350},[84],{"categories":3352},[115],{"categories":3354},[],{"categories":3356},[84],{"categories":3358},[89],{"categories":3360},[84],{"categories":3362},[84],{"categories":3364},[84],{"categories":3366},[84],{"categories":3368},[],{"categories":3370},[],{"categories":3372},[84],{"categories":3374},[84],{"categories":3376},[],{"categories":3378},[84],{"categories":3380},[84],{"categories":3382},[115],{"categories":3384},[115],{"categories":3386},[84],{"categories":3388},[84],{"categories":3390},[115],{"categories":3392},[],{"categories":3394},[115],{"categories":3396},[89],{"categories":3398},[115],{"categories":3400},[115],{"categories":3402},[],{"categories":3404},[115],{"categories":3406},[115],{"categories":3408},[115],{"categories":3410},[84],{"categories":3412},[],{"categories":3414},[],{"categories":3416},[],{"categories":3418},[],{"categories":3420},[115],{"categories":3422},[115],{"categories":3424},[],{"categories":3426},[92],{"categories":3428},[84],{"categories":3430},[],{"categories":3432},[],{"categories":3434},[],{"categories":3436},[],{"categories":3438},[],{"categories":3440},[115],{"categories":3442},[],{"categories":3444},[],{"categories":3446},[115],{"categories":3448},[],{"categories":3450},[89],{"categories":3452},[89],{"categories":3454},[89],{"categories":3456},[79],{"categories":3458},[],{"categories":3460},[92],{"categories":3462},[98],{"categories":3464},[98],{"categories":3466},[439],{"categories":3468},[84],{"categories":3470},[],{"categories":3472},[115],{"categories":3474},[115],{"categories":3476},[79],{"categories":3478},[],{"categories":3480},[79],{"categories":3482},[],{"categories":3484},[],{"categories":3486},[],{"categories":3488},[98],{"categories":3490},[89],{"categories":3492},[89],{"categories":3494},[89],{"categories":3496},[89],{"categories":3498},[89],{"categories":3500},[],{"categories":3502},[84],{"categories":3504},[115],{"categories":3506},[115],{"categories":3508},[115],{"categories":3510},[],{"categories":3512},[79],{"categories":3514},[],{"categories":3516},[95],{"categories":3518},[47],{"categories":3520},[95],{"categories":3522},[],{"categories":3524},[],{"categories":3526},[115],{"categories":3528},[89],{"categories":3530},[],{"categories":3532},[115],{"categories":3534},[115],{"categories":3536},[115],{"categories":3538},[89],{"categories":3540},[89],{"categories":3542},[115],{"categories":3544},[47],{"categories":3546},[89],{"categories":3548},[],{"categories":3550},[115],{"categories":3552},[],{"categories":3554},[526],{"categories":3556},[98],{"categories":3558},[47],{"categories":3560},[98],{"categories":3562},[439],{"categories":3564},[115],{"categories":3566},[98],{"categories":3568},[84],{"categories":3570},[439],{"categories":3572},[98],{"categories":3574},[95],{"categories":3576},[95],{"categories":3578},[],{"categories":3580},[98],{"categories":3582},[],{"categories":3584},[130],{"categories":3586},[98],{"categories":3588},[],{"categories":3590},[47],{"categories":3592},[47],{"categories":3594},[526],{"categories":3596},[],{"categories":3598},[115],{"categories":3600},[98],{"categories":3602},[439],{"categories":3604},[89],{"categories":3606},[89],{"categories":3608},[47],{"categories":3610},[115],{"categories":3612},[130],{"categories":3614},[115],{"categories":3616},[],{"categories":3618},[],{"categories":3620},[],{"categories":3622},[92],{"categories":3624},[115],{"categories":3626},[95],{"categories":3628},[98],{"categories":3630},[98],{"categories":3632},[115],{"categories":3634},[92],{"categories":3636},[130],{"categories":3638},[115],{"categories":3640},[98],{"categories":3642},[115],{"categories":3644},[98],{"categories":3646},[130],{"categories":3648},[130],{"categories":3650},[89],{"categories":3652},[130],{"categories":3654},[98],{"categories":3656},[79],{"categories":3658},[98],{"categories":3660},[98],{"categories":3662},[98],{"categories":3664},[98],{"categories":3666},[],{"categories":3668},[84],{"categories":3670},[],{"categories":3672},[47],{"categories":3674},[115],{"categories":3676},[115],{"categories":3678},[],{"categories":3680},[],{"categories":3682},[],{"categories":3684},[115],{"categories":3686},[84],{"categories":3688},[115],{"categories":3690},[115],{"categories":3692},[],{"categories":3694},[115],{"categories":3696},[95],{"categories":3698},[115],{"categories":3700},[115],{"categories":3702},[115],{"categories":3704},[],{"categories":3706},[],{"categories":3708},[],{"categories":3710},[439],{"categories":3712},[439],{"categories":3714},[79],{"categories":3716},[89],{"categories":3718},[79,92],{"categories":3720},[115],{"categories":3722},[84],{"categories":3724},[],{"categories":3726},[95],{"categories":3728},[47],{"categories":3730},[115],{"categories":3732},[98],{"categories":3734},[115],{"categories":3736},[],{"categories":3738},[47],{"categories":3740},[439],{"categories":3742},[89],{"categories":3744},[79],{"categories":3746},[439],{"categories":3748},[89],{"categories":3750},[130],{"categories":3752},[89],{"categories":3754},[130],{"categories":3756},[115],{"categories":3758},[130],{"categories":3760},[130],{"categories":3762},[98],{"categories":3764},[47],{"categories":3766},[115],{"categories":3768},[92],{"categories":3770},[],{"categories":3772},[115],{"categories":3774},[95],{"categories":3776},[47],{"categories":3778},[79],{"categories":3780},[115],{"categories":3782},[47],{"categories":3784},[130],{"categories":3786},[115],{"categories":3788},[115],{"categories":3790},[47],{"categories":3792},[115],{"categories":3794},[130],{"categories":3796},[115],{"categories":3798},[],{"categories":3800},[115],{"categories":3802},[115],{"categories":3804},[115],{"categories":3806},[115],{"categories":3808},[],{"categories":3810},[89],{"categories":3812},[439],{"categories":3814},[],{"categories":3816},[],{"categories":3818},[115],{"categories":3820},[79],{"categories":3822},[92],{"categories":3824},[79],{"categories":3826},[79],{"categories":3828},[89],{"categories":3830},[],{"categories":3832},[115],{"categories":3834},[84],{"categories":3836},[115],{"categories":3838},[115],{"categories":3840},[],{"categories":3842},[89],{"categories":3844},[84],{"categories":3846},[115,439],{"categories":3848},[89,439],{"categories":3850},[439],{"categories":3852},[115],{"categories":3854},[89],{"categories":3856},[89],{"categories":3858},[98],{"categories":3860},[98],{"categories":3862},[98],{"categories":3864},[115],{"categories":3866},[95],{"categories":3868},[89],{"categories":3870},[],{"categories":3872},[439],{"categories":3874},[],{"categories":3876},[439],{"categories":3878},[439],{"categories":3880},[79],{"categories":3882},[89],{"categories":3884},[],{"categories":3886},[439],{"categories":3888},[115],{"categories":3890},[84],{"categories":3892},[115],{"categories":3894},[95],{"categories":3896},[98],{"categories":3898},[98],{"categories":3900},[98],{"categories":3902},[439],{"categories":3904},[],{"categories":3906},[],{"categories":3908},[],{"categories":3910},[115],{"categories":3912},[98],{"categories":3914},[115],{"categories":3916},[98],{"categories":3918},[439],{"categories":3920},[439],{"categories":3922},[115],{"categories":3924},[89],{"categories":3926},[],{"categories":3928},[115],{"categories":3930},[115],{"categories":3932},[115],{"categories":3934},[],{"categories":3936},[],{"categories":3938},[439],{"categories":3940},[439],{"categories":3942},[115,439],{"categories":3944},[89],{"categories":3946},[89],{"categories":3948},[89],{"categories":3950},[89],{"categories":3952},[89],{"categories":3954},[89],{"categories":3956},[],{"categories":3958},[98],{"categories":3960},[115],{"categories":3962},[98],{"categories":3964},[92],{"categories":3966},[115],{"categories":3968},[526],{"categories":3970},[526],{"categories":3972},[89],{"categories":3974},[98],{"categories":3976},[],{"categories":3978},[89],{"categories":3980},[115],{"categories":3982},[],{"categories":3984},[95],{"categories":3986},[],{"categories":3988},[115],{"categories":3990},[89],{"categories":3992},[84],{"categories":3994},[115],{"categories":3996},[],{"categories":3998},[],{"categories":4000},[95],{"categories":4002},[95],{"categories":4004},[130],{"categories":4006},[95],{"categories":4008},[89],{"categories":4010},[],{"categories":4012},[89],{"categories":4014},[84],{"categories":4016},[115],{"categories":4018},[115],{"categories":4020},[],{"categories":4022},[115],{"categories":4024},[130],{"categories":4026},[115],{"categories":4028},[],{"categories":4030},[47],{"categories":4032},[98],{"categories":4034},[98],{"categories":4036},[79],{"categories":4038},[79],{"categories":4040},[79],{"categories":4042},[89],{"categories":4044},[79],{"categories":4046},[89],{"categories":4048},[439],{"categories":4050},[526],{"categories":4052},[84],{"categories":4054},[84],{"categories":4056},[84],{"categories":4058},[439],{"categories":4060},[84,79],{"categories":4062},[47],{"categories":4064},[89],{"categories":4066},[],{"categories":4068},[115],{"categories":4070},[],{"categories":4072},[98],{"categories":4074},[47],{"categories":4076},[95],{"categories":4078},[98],{"categories":4080},[130],{"categories":4082},[],{"categories":4084},[89],{"categories":4086},[],{"categories":4088},[526],{"categories":4090},[],{"categories":4092},[95],{"categories":4094},[95],{"categories":4096},[47],{"categories":4098},[],{"categories":4100},[115],{"categories":4102},[47],{"categories":4104},[],{"categories":4106},[115],{"categories":4108},[115],{"categories":4110},[],{"categories":4112},[130],{"categories":4114},[115],{"categories":4116},[],{"categories":4118},[115],{"categories":4120},[],{"categories":4122},[],{"categories":4124},[89],{"categories":4126},[89],{"categories":4128},[],{"categories":4130},[98],{"categories":4132},[98],{"categories":4134},[98],{"categories":4136},[115,89],{"categories":4138},[89],{"categories":4140},[89],{"categories":4142},[89],{"categories":4144},[47],{"categories":4146},[47],{"categories":4148},[],{"categories":4150},[84],{"categories":4152},[115],{"categories":4154},[47],{"categories":4156},[47],{"categories":4158},[84],{"categories":4160},[79],{"categories":4162},[89],{"categories":4164},[98],{"categories":4166},[115],{"categories":4168},[115],{"categories":4170},[89],{"categories":4172},[98],{"categories":4174},[89],{"categories":4176},[115],{"categories":4178},[92],{"categories":4180},[],{"categories":4182},[115],{"categories":4184},[],{"categories":4186},[115],{"categories":4188},[115],{"categories":4190},[98],{"categories":4192},[],{"categories":4194},[47],{"categories":4196},[115],{"categories":4198},[89],{"categories":4200},[89],{"categories":4202},[98],{"categories":4204},[130],{"categories":4206},[130],{"categories":4208},[84],{"categories":4210},[115],{"categories":4212},[89],{"categories":4214},[],{"categories":4216},[89],{"categories":4218},[115],{"categories":4220},[84],{"categories":4222},[115],{"categories":4224},[115],{"categories":4226},[115],{"categories":4228},[89],{"categories":4230},[47],{"categories":4232},[115],{"categories":4234},[95],{"categories":4236},[115],{"categories":4238},[115],{"categories":4240},[115],{"categories":4242},[115],{"categories":4244},[],{"categories":4246},[115],{"categories":4248},[47],{"categories":4250},[95],{"categories":4252},[115],{"categories":4254},[95],{"categories":4256},[],{"categories":4258},[],{"categories":4260},[],{"categories":4262},[115],{"categories":4264},[],{"categories":4266},[],{"categories":4268},[],{"categories":4270},[],{"categories":4272},[89],{"categories":4274},[130],{"categories":4276},[89],{"categories":4278},[89],{"categories":4280},[98],{"categories":4282},[79],{"categories":4284},[115],{"categories":4286},[115],{"categories":4288},[115],{"categories":4290},[79],{"categories":4292},[130],{"categories":4294},[],{"categories":4296},[47],{"categories":4298},[92],{"categories":4300},[115],{"categories":4302},[95],{"categories":4304},[130],{"categories":4306},[130],{"categories":4308},[526],{"categories":4310},[89],{"categories":4312},[115],{"categories":4314},[115],{"categories":4316},[130],{"categories":4318},[115],{"categories":4320},[],{"categories":4322},[],{"categories":4324},[439],{"categories":4326},[95],{"categories":4328},[130],{"categories":4330},[115],{"categories":4332},[84],{"categories":4334},[130],{"categories":4336},[79],{"categories":4338},[89],{"categories":4340},[89],{"categories":4342},[84],{"categories":4344},[115],{"categories":4346},[],{"categories":4348},[],{"categories":4350},[],{"categories":4352},[115],{"categories":4354},[],{"categories":4356},[84],{"categories":4358},[],{"categories":4360},[115],{"categories":4362},[],{"categories":4364},[84],{"categories":4366},[89],{"categories":4368},[115],{"categories":4370},[439],{"categories":4372},[115],{"categories":4374},[130],{"categories":4376},[115],{"categories":4378},[130],{"categories":4380},[130],{"categories":4382},[],{"categories":4384},[],{"categories":4386},[130],{"categories":4388},[130],{"categories":4390},[130],{"categories":4392},[],{"categories":4394},[130],{"categories":4396},[89],{"categories":4398},[89],{"categories":4400},[],{"categories":4402},[115],{"categories":4404},[92],{"categories":4406},[47],{"categories":4408},[115],{"categories":4410},[],{"categories":4412},[130],{"categories":4414},[115],{"categories":4416},[526],{"categories":4418},[130],{"categories":4420},[130],{"categories":4422},[92],{"categories":4424},[98],{"categories":4426},[98],{"categories":4428},[],{"categories":4430},[98],{"categories":4432},[115],{"categories":4434},[],{"categories":4436},[],{"categories":4438},[89],{"categories":4440},[],{"categories":4442},[89],{"categories":4444},[89],{"categories":4446},[84],{"categories":4448},[115],{"categories":4450},[84],{"categories":4452},[130],{"categories":4454},[84],{"categories":4456},[98],{"categories":4458},[98],{"categories":4460},[98],{"categories":4462},[84],{"categories":4464},[115],{"categories":4466},[89],{"categories":4468},[439],{"categories":4470},[79],{"categories":4472},[439],{"categories":4474},[439],{"categories":4476},[98],{"categories":4478},[439],{"categories":4480},[439],[4482,4648,4760,5559],{"id":4483,"title":4484,"ai":4485,"body":4490,"categories":4618,"created_at":48,"date_modified":48,"description":40,"extension":49,"faq":48,"featured":50,"kicker_label":48,"meta":4619,"navigation":58,"path":4635,"published_at":4636,"question":48,"scraped_at":4637,"seo":4638,"sitemap":4639,"source_id":4640,"source_name":4641,"source_type":65,"source_url":4642,"stem":4643,"tags":4644,"thumbnail_url":48,"tldr":4645,"tweet":48,"unknown_tags":4646,"__hash__":4647},"summaries\u002Fsummaries\u002Fstream-parse-tasktrove-dataset-for-ai-task-insight-summary.md","Stream Parse TaskTrove Dataset for AI Task Insights",{"provider":7,"model":8,"input_tokens":4486,"output_tokens":4487,"processing_time_ms":4488,"cost_usd":4489},9713,1943,26130,0.0028916,{"type":14,"value":4491,"toc":4613},[4492,4496,4552,4559,4563,4570,4584,4588,4595],[17,4493,4495],{"id":4494},"build-streaming-parser-for-compressed-task-binaries","Build Streaming Parser for Compressed Task Binaries",[22,4497,4498,4499,4503,4504,4507,4508,4511,4512,4515,4516,4519,4520,4523,4524,4527,4528,4531,4532,4535,4536,4539,4540,4543,4544,4547,4548,4551],{},"Handle TaskTrove's ",[4500,4501,4502],"code",{},"task_binary"," fields—gzip-compressed blobs up to p95= some KB—without downloading the full dataset by using ",[4500,4505,4506],{},"datasets.load_dataset(..., streaming=True)",". Convert blobs to bytes via ",[4500,4509,4510],{},"to_bytes()"," which decodes base64 strings or lists. Decompress if gzip header (",[4500,4513,4514],{},"b'\\x1f\\x8b'","), then auto-detect format in ",[4500,4517,4518],{},"parse_task()",": prioritize ",[4500,4521,4522],{},"tarfile.open()"," for archives (extract files as str\u002Fbytes), fall back to ",[4500,4525,4526],{},"ZipFile",", then ",[4500,4529,4530],{},"json.loads()"," (or JSONL line-by-line), plain text decode, or binary. This yields dicts with ",[4500,4533,4534],{},"format",", ",[4500,4537,4538],{},"files"," (for archives), ",[4500,4541,4542],{},"content",", plus ",[4500,4545,4546],{},"raw_size","\u002F",[4500,4549,4550],{},"compressed_size",". Example: first sample decompresses from compressed bytes to raw, revealing tar with JSON metadata and .py code files.",[22,4553,4554,4555,4558],{},"Use ",[4500,4556,4557],{},"show_task()"," to preview: breakdown by extension (e.g., .json, .py), truncate JSON to 1500 chars, code to 600. Trade-off: Streaming processes samples in real-time but requires robust error handling for malformed blobs (e.g., UnicodeDecodeError keeps as bytes).",[17,4560,4562],{"id":4561},"uncover-dataset-structure-via-counters-and-plots","Uncover Dataset Structure via Counters and Plots",[22,4564,4565,4566,4569],{},"Extract source from ",[4500,4567,4568],{},"path"," prefix (split on last '-'): top 15 sources dominate test split (e.g., count thousands each). Track compressed sizes: log-scale histogram shows median p50 KB, p95 ~higher KB—most tasks compact, outliers bulkier. Inspect 200 samples: common filenames (e.g., task.json, README.md top counts), JSON keys (e.g., instruction, tests frequent). Full listings reveal 5-10 files per tar\u002Fzip typically.",[22,4571,4572,4573,4576,4577,4535,4580,4583],{},"Aggregate in ",[4500,4574,4575],{},"TaskTroveExplorer.summary(limit=1000)",": group by source for n tasks, mean compressed\u002Fraw KB (log y-scale bar chart top 12), mean files. Enables quick profiling—e.g., some sources average 10+ KB raw, others leaner. Polars DataFrame slice of 500 tasks captures ",[4500,4578,4579],{},"source",[4500,4581,4582],{},"is_verified",", sizes, instruction preview for downstream modeling.",[17,4585,4587],{"id":4586},"detect-verifiers-and-export-rl-ready-tasks","Detect Verifiers and Export RL-Ready Tasks",[22,4589,4590,4591,4594],{},"Flag evaluation-ready tasks with ",[4500,4592,4593],{},"has_verifier()",": scan filenames for 'verifier'\u002F'judge'\u002F'grader', JSON keys like 'verifier_config'\u002F'rubric'\u002F'test_patch', or content strings. Multi-signal boosts recall—e.g., verified tasks have dedicated verifier.py or JSON. Per-source rates vary (bar chart: green high % usable for RL); hunt first verified sample to inspect (e.g., grader JSON with tests).",[22,4596,4597,4600,4601,4604,4605,4608,4609,4612],{},[4500,4598,4599],{},"TaskTroveExplorer"," class unifies: ",[4500,4602,4603],{},"iter()"," filters sources, ",[4500,4606,4607],{},"sample(n=5)"," parses + adds metadata, ",[4500,4610,4611],{},"export()"," writes dirs with files\u002FJSON. Saves Parquet slice (500 rows, ~KB): boosts workflows by filtering verified tasks (sum across sources). Full pipeline scales to validation split; lists HF repo subdirs for all sources (~dozens).",{"title":40,"searchDepth":41,"depth":41,"links":4614},[4615,4616,4617],{"id":4494,"depth":41,"text":4495},{"id":4561,"depth":41,"text":4562},{"id":4586,"depth":41,"text":4587},[47],{"content_references":4620,"triage":4631},[4621,4626],{"type":4622,"title":4623,"url":4624,"context":4625},"dataset","TaskTrove","https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fopen-thoughts\u002FTaskTrove","mentioned",{"type":4627,"title":4628,"url":4629,"context":4630},"other","Full Codes with Notebook","https:\u002F\u002Fgithub.com\u002FMarktechpost\u002FAI-Agents-Projects-Tutorials\u002Fblob\u002Fmain\u002FLLM%20Projects\u002Ftasktrove_exploration_pipeline_marktechpost.py","recommended",{"relevance":4632,"novelty":54,"quality":54,"actionability":54,"composite":4633,"reasoning":4634},5,4.35,"Category: Data Science & Visualization. The article provides a detailed guide on streaming and parsing a specific dataset, which is highly relevant for developers looking to integrate AI features using real-world data. It includes practical code examples and techniques for handling large datasets, making it actionable for the target audience.","\u002Fsummaries\u002Fstream-parse-tasktrove-dataset-for-ai-task-insight-summary","2026-05-03 21:26:42","2026-05-04 16:13:43",{"title":4484,"description":40},{"loc":4635},"0cdee908eb39d657","MarkTechPost","https:\u002F\u002Fwww.marktechpost.com\u002F2026\u002F05\u002F03\u002Fa-coding-implementation-to-explore-and-analyze-the-tasktrove-dataset-with-streaming-parsing-visualization-and-verifier-detection\u002F","summaries\u002Fstream-parse-tasktrove-dataset-for-ai-task-insight-summary",[70,71,69],"Stream multi-GB TaskTrove dataset without full download; parse gzip-compressed tar\u002Fzip\u002FJSON binaries to analyze sources, sizes (median  p50 KB compressed), filenames, and detect verifiers for RL-ready tasks via multi-signal heuristics.",[],"H2UpHE2t_KgCOZVQilA6Mdshg2Ol0joqXNDB-_Geixs",{"id":4649,"title":4650,"ai":4651,"body":4656,"categories":4728,"created_at":48,"date_modified":48,"description":40,"extension":49,"faq":48,"featured":50,"kicker_label":48,"meta":4729,"navigation":58,"path":4747,"published_at":4748,"question":48,"scraped_at":4749,"seo":4750,"sitemap":4751,"source_id":4752,"source_name":4753,"source_type":65,"source_url":4754,"stem":4755,"tags":4756,"thumbnail_url":48,"tldr":4757,"tweet":48,"unknown_tags":4758,"__hash__":4759},"summaries\u002Fsummaries\u002Frule-based-flood-risk-dashboard-beats-ml-on-small--summary.md","Rule-Based Flood Risk Dashboard Beats ML on Small Weather Data",{"provider":7,"model":8,"input_tokens":4652,"output_tokens":4653,"processing_time_ms":4654,"cost_usd":4655},6534,1834,13947,0.00171695,{"type":14,"value":4657,"toc":4723},[4658,4662,4669,4673,4712,4716],[17,4659,4661],{"id":4660},"rule-based-scoring-delivers-stable-interpretable-flood-risk","Rule-Based Scoring Delivers Stable, Interpretable Flood Risk",[22,4663,4664,4665,4668],{},"Flood risk emerges from accumulated rainfall over 24 hours, not just instant rates—calculate it with ",[4500,4666,4667],{},"df['rain_24h'] = df['rainfall'].rolling(8).sum()"," since API data arrives every 3 hours (8 points = 24h). Score total risk (0-100) using rainfall as primary driver: \u003C20mm low contribution, 20-55mm moderate, 55-100mm high, >100mm very high; amplify with high humidity and strong winds as supporting factors. Classify final score as LOW (\u003C30), MEDIUM (30-70), HIGH (≥70). This outperforms Random Forest ML on small, imbalanced API datasets lacking stable flood labels—rules stay interpretable (trace exact risk drivers), adjustable via domain knowledge, and immune to training variance. Handle missing rainfall with fallbacks to avoid crashes.",[17,4670,4672],{"id":4671},"interactive-controls-and-visuals-turn-data-into-actionable-insights","Interactive Controls and Visuals Turn Data into Actionable Insights",[22,4674,4675,4676,4679,4680,4683,4684,4687,4688,4691,4692,4695,4696,4699,4700,4703,4704,4707,4708,4711],{},"Sidebar filters drive everything: ",[4500,4677,4678],{},"st.sidebar.selectbox"," for province (cascades to cities via ",[4500,4681,4682],{},"province_map[selected_province]","), multiselect for risk levels (filter ",[4500,4685,4686],{},"if risk not in risk_filter: continue","), checkboxes for heatmap\u002Fmarkers. Trends reveal dynamics—line charts for rainfall spikes (",[4500,4689,4690],{},"px.line(df, x='datetime', y='rainfall')","), 24h accumulation (catches sustained rain), and risk probability (",[4500,4693,4694],{},"px.line(df, x='datetime', y='ml_proba')"," despite rule basis). Metrics offer instant reads: max 24h rainfall, current humidity\u002Fwind via ",[4500,4697,4698],{},"st.metric",". Maps add spatial context—Folium CircleMarkers color-coded by risk (red >70, orange >40, green), toggleable Province (multi-city compare) vs Single City views with ",[4500,4701,4702],{},"st.radio",", plus HeatMap for risk density (",[4500,4705,4706],{},"HeatMap(heat_data).add_to(m)","). Bottom table previews raw data (",[4500,4709,4710],{},"st.dataframe(df.tail(n))"," with n=5\u002F10\u002F20\u002F30 selectbox) for verification.",[17,4713,4715],{"id":4714},"deploy-securely-on-streamlit-cloud-for-real-time-monitoring","Deploy Securely on Streamlit Cloud for Real-Time Monitoring",[22,4717,4718,4719,4722],{},"Fetch multi-city OpenWeather 3-hour forecasts (rainfall, humidity, wind) via API, but separate calls per city slow performance—cache where possible. Use Streamlit secrets (",[4500,4720,4721],{},"API_KEY = st.secrets[\"API_KEY\"]",") to hide keys, push app.py\u002Frequirements.txt to GitHub, link in Streamlit Cloud for auto-deploys. This yields a live dashboard at indonesia-flood-risk-dashboard.streamlit.app\u002F focused on Indonesia's urban flood-prone areas, evolving from basic viz to risk prediction without complex models.",{"title":40,"searchDepth":41,"depth":41,"links":4724},[4725,4726,4727],{"id":4660,"depth":41,"text":4661},{"id":4671,"depth":41,"text":4672},{"id":4714,"depth":41,"text":4715},[47],{"content_references":4730,"triage":4744},[4731,4734,4736,4738,4741],{"type":4732,"title":4733,"context":4625},"tool","OpenWeather API",{"type":4732,"title":4735,"context":4625},"Streamlit Cloud",{"type":4732,"title":4737,"context":4625},"Folium",{"type":4732,"title":4739,"url":4740,"context":4630},"Indonesia Flood Risk Dashboard","https:\u002F\u002Findonesia-flood-risk-dashboard.streamlit.app\u002F",{"type":4627,"title":4742,"url":4743,"context":4630},"Indonesia-Flood-Risk-Dashboard","https:\u002F\u002Fgithub.com\u002FjihanKamilah\u002FIndonesia-Flood-Risk-Dashboard",{"relevance":4632,"novelty":54,"quality":54,"actionability":4632,"composite":4745,"reasoning":4746},4.55,"Category: Data Science & Visualization. The article provides a practical approach to building a flood risk dashboard using rule-based scoring, which directly addresses the audience's need for actionable insights in data visualization and risk assessment. It includes specific coding examples and techniques that can be implemented immediately, making it highly actionable.","\u002Fsummaries\u002Frule-based-flood-risk-dashboard-beats-ml-on-small-summary","2026-04-27 09:02:15","2026-04-28 15:15:46",{"title":4650,"description":40},{"loc":4747},"b9f705c3fca30e93","Data and Beyond","https:\u002F\u002Fmedium.com\u002Fdata-and-beyond\u002Fwhen-rain-isnt-just-rain-building-a-flood-risk-dashboard-from-weather-data-794c4fbf0d1e?source=rss----b680b860beb1---4","summaries\u002Frule-based-flood-risk-dashboard-beats-ml-on-small--summary",[71,69,70],"Switch from unstable Random Forest ML to rule-based scoring on OpenWeather rainfall (\u003C20mm low, 55-100mm high), humidity, and wind for stable LOW\u002FMEDIUM\u002FHIGH flood risk; visualize trends, maps, and metrics in interactive Streamlit app.",[],"njAXnM0fiKdFLqt01riqmCDrN3DcVe98ualhKrRGMio",{"id":4761,"title":4762,"ai":4763,"body":4768,"categories":5532,"created_at":48,"date_modified":48,"description":40,"extension":49,"faq":48,"featured":50,"kicker_label":48,"meta":5533,"navigation":58,"path":5547,"published_at":5548,"question":48,"scraped_at":5549,"seo":5550,"sitemap":5551,"source_id":5552,"source_name":4641,"source_type":65,"source_url":5553,"stem":5554,"tags":5555,"thumbnail_url":48,"tldr":5556,"tweet":48,"unknown_tags":5557,"__hash__":5558},"summaries\u002Fsummaries\u002Fdatashader-pipeline-for-massive-data-viz-summary.md","Datashader Pipeline for Massive Data Viz",{"provider":7,"model":8,"input_tokens":4764,"output_tokens":4765,"processing_time_ms":4766,"cost_usd":4767},10442,3139,30405,0.0036354,{"type":14,"value":4769,"toc":5524},[4770,4774,4777,4797,4803,4849,4852,4934,4940,4946,4956,4960,4977,4982,5003,5006,5072,5075,5110,5115,5129,5139,5143,5146,5182,5185,5215,5221,5251,5256,5269,5273,5276,5296,5299,5339,5345,5350,5356,5360,5366,5369,5409,5415,5420,5425,5431,5437,5442,5447,5452,5457,5461,5520],[17,4771,4773],{"id":4772},"core-datashader-rendering-pipeline","Core Datashader Rendering Pipeline",[22,4775,4776],{},"Datashader renders massive datasets by binning data into a fixed canvas grid and applying reductions like count, sum, or mean, producing a raster aggregate independent of data size. This avoids overplotting that cripples tools like Matplotlib on >10k points.",[22,4778,4779,4783,4784,4535,4787,4535,4790,4535,4793,4796],{},[4780,4781,4782],"strong",{},"Setup prerequisites",": Install ",[4500,4785,4786],{},"datashader",[4500,4788,4789],{},"colorcet",[4500,4791,4792],{},"numba",[4500,4794,4795],{},"scipy"," via pip. Use Pandas DataFrames for points. Assumes intermediate Python\u002Fpandas knowledge; no prior Datashader needed.",[22,4798,4799,4802],{},[4780,4800,4801],{},"Pipeline steps",":",[4804,4805,4806,4814,4831,4838],"ol",{},[4807,4808,4809,4810,4813],"li",{},"Create ",[4500,4811,4812],{},"ds.Canvas(plot_width=600, plot_height=500, x_range=(-4,4), y_range=(-4,4))","—defines output resolution and bounds.",[4807,4815,4816,4817,4820,4821,4535,4824,4535,4827,4830],{},"Aggregate: ",[4500,4818,4819],{},"agg = canvas.points(df, 'x', 'y', agg=rd.count())"," for points (similar for ",[4500,4822,4823],{},"line",[4500,4825,4826],{},"raster",[4500,4828,4829],{},"quadmesh",").",[4807,4832,4833,4834,4837],{},"Shade: ",[4500,4835,4836],{},"img = tf.shade(agg, cmap=cc.fire, how='eq_hist')","—maps aggregates to colors via normalization ('linear', 'log', 'eq_hist').",[4807,4839,4840,4841,4844,4845,4848],{},"Display: ",[4500,4842,4843],{},"show(img)"," helper converts to PIL for Matplotlib ",[4500,4846,4847],{},"imshow",".",[22,4850,4851],{},"For 2M points:",[4853,4854,4857],"pre",{"className":4855,"code":4856,"language":70,"meta":40,"style":40},"language-python shiki shiki-themes github-light github-dark","import datashader as ds\nimport datashader.transfer_functions as tf\nfrom datashader import reductions as rd\nimport colorcet as cc\nrng = np.random.default_rng(42)\nN = 2_000_000\nx, y = ...  # clustered normals\ndf = pd.DataFrame({'x':x, 'y':y})\ncanvas = ds.Canvas(plot_width=600, plot_height=500, x_range=(-4,4), y_range=(-4,4))\nagg = canvas.points(df, 'x', 'y', agg=rd.count())\nfig, axes = plt.subplots(1,3)\nfor ax, (norm, cmap) in zip(axes, [('linear', cc.blues), ('log', cc.fire), ('eq_hist', cc.bmy)]):\n    tf.shade(agg, cmap=cmap, how=norm)\n",[4500,4858,4859,4866,4871,4876,4881,4886,4892,4898,4904,4910,4916,4922,4928],{"__ignoreMap":40},[4860,4861,4863],"span",{"class":4823,"line":4862},1,[4860,4864,4865],{},"import datashader as ds\n",[4860,4867,4868],{"class":4823,"line":41},[4860,4869,4870],{},"import datashader.transfer_functions as tf\n",[4860,4872,4873],{"class":4823,"line":55},[4860,4874,4875],{},"from datashader import reductions as rd\n",[4860,4877,4878],{"class":4823,"line":54},[4860,4879,4880],{},"import colorcet as cc\n",[4860,4882,4883],{"class":4823,"line":4632},[4860,4884,4885],{},"rng = np.random.default_rng(42)\n",[4860,4887,4889],{"class":4823,"line":4888},6,[4860,4890,4891],{},"N = 2_000_000\n",[4860,4893,4895],{"class":4823,"line":4894},7,[4860,4896,4897],{},"x, y = ...  # clustered normals\n",[4860,4899,4901],{"class":4823,"line":4900},8,[4860,4902,4903],{},"df = pd.DataFrame({'x':x, 'y':y})\n",[4860,4905,4907],{"class":4823,"line":4906},9,[4860,4908,4909],{},"canvas = ds.Canvas(plot_width=600, plot_height=500, x_range=(-4,4), y_range=(-4,4))\n",[4860,4911,4913],{"class":4823,"line":4912},10,[4860,4914,4915],{},"agg = canvas.points(df, 'x', 'y', agg=rd.count())\n",[4860,4917,4919],{"class":4823,"line":4918},11,[4860,4920,4921],{},"fig, axes = plt.subplots(1,3)\n",[4860,4923,4925],{"class":4823,"line":4924},12,[4860,4926,4927],{},"for ax, (norm, cmap) in zip(axes, [('linear', cc.blues), ('log', cc.fire), ('eq_hist', cc.bmy)]):\n",[4860,4929,4931],{"class":4823,"line":4930},13,[4860,4932,4933],{},"    tf.shade(agg, cmap=cmap, how=norm)\n",[22,4935,4936,4939],{},[4780,4937,4938],{},"Principle",": Normalization reveals structure—'eq_hist' equalizes bin visibility for dense clusters; 'log' compresses outliers.",[22,4941,4942,4945],{},[4780,4943,4944],{},"Quality criteria",": No pixelation on zoom; uniform color distribution shows balanced revelation of density.",[22,4947,4948,4951,4952,4955],{},[4780,4949,4950],{},"Pitfall",": Fixed canvas ignores data extent—always set ",[4500,4953,4954],{},"x_range\u002Fy_range"," via quantiles or domain knowledge.",[17,4957,4959],{"id":4958},"reduction-aggregations-and-categorical-rendering","Reduction Aggregations and Categorical Rendering",[22,4961,4962,4963,4535,4966,4535,4969,4972,4973,4976],{},"Beyond count, use per-pixel reductions on value columns: ",[4500,4964,4965],{},"rd.sum('value')",[4500,4967,4968],{},"rd.mean('value')",[4500,4970,4971],{},"rd.std('value')",", etc. For categories, ",[4500,4974,4975],{},"rd.count_cat('label')"," yields multi-channel aggregates.",[22,4978,4979,4802],{},[4780,4980,4981],{},"Steps for reductions",[4983,4984,4985,4991,4996],"ul",{},[4807,4986,4987,4988],{},"Add columns: ",[4500,4989,4990],{},"df['value'] = rng.exponential(2, len(df)); df['label'] = pd.Categorical(...)",[4807,4992,4816,4993],{},[4500,4994,4995],{},"agg = canvas.points(df, 'x', 'y', agg=rd.sum('value'))",[4807,4997,4998,4999,5002],{},"Shade with cmap or ",[4500,5000,5001],{},"color_key={'A':'#e41a1c', ...}"," for cats.",[22,5004,5005],{},"Example configs:",[5007,5008,5009,5025],"table",{},[5010,5011,5012],"thead",{},[5013,5014,5015,5019,5022],"tr",{},[5016,5017,5018],"th",{},"Reduction",[5016,5020,5021],{},"Colormap",[5016,5023,5024],{},"Use Case",[5026,5027,5028,5044,5058],"tbody",{},[5013,5029,5030,5036,5041],{},[5031,5032,5033],"td",{},[4500,5034,5035],{},"rd.count()",[5031,5037,5038],{},[4500,5039,5040],{},"cc.kbc",[5031,5042,5043],{},"Density",[5013,5045,5046,5050,5055],{},[5031,5047,5048],{},[4500,5049,4965],{},[5031,5051,5052],{},[4500,5053,5054],{},"cc.CET_L3",[5031,5056,5057],{},"Total intensity",[5013,5059,5060,5064,5069],{},[5031,5061,5062],{},[4500,5063,4975],{},[5031,5065,5066],{},[4500,5067,5068],{},"color_key",[5031,5070,5071],{},"Group separation",[22,5073,5074],{},"For 500k categorical clusters:",[4853,5076,5078],{"className":4855,"code":5077,"language":70,"meta":40,"style":40},"categories = ['Cluster A', ...]; centers = [(-2,-2), ...]\ndf_cat = pd.concat([pd.DataFrame({'x':rng.normal(cx,0.8,n), 'y':..., 'cat':cat})])\nagg_cat = canvas.points(df_cat, 'x','y', agg=rd.count_cat('cat'))\nimg = tf.shade(agg_cat, color_key=colors)\nimg_spread = tf.spread(img, px=1)  # Anti-alias dots\nimg_bg = tf.set_background(img, 'black')\n",[4500,5079,5080,5085,5090,5095,5100,5105],{"__ignoreMap":40},[4860,5081,5082],{"class":4823,"line":4862},[4860,5083,5084],{},"categories = ['Cluster A', ...]; centers = [(-2,-2), ...]\n",[4860,5086,5087],{"class":4823,"line":41},[4860,5088,5089],{},"df_cat = pd.concat([pd.DataFrame({'x':rng.normal(cx,0.8,n), 'y':..., 'cat':cat})])\n",[4860,5091,5092],{"class":4823,"line":55},[4860,5093,5094],{},"agg_cat = canvas.points(df_cat, 'x','y', agg=rd.count_cat('cat'))\n",[4860,5096,5097],{"class":4823,"line":54},[4860,5098,5099],{},"img = tf.shade(agg_cat, color_key=colors)\n",[4860,5101,5102],{"class":4823,"line":4632},[4860,5103,5104],{},"img_spread = tf.spread(img, px=1)  # Anti-alias dots\n",[4860,5106,5107],{"class":4823,"line":4888},[4860,5108,5109],{},"img_bg = tf.set_background(img, 'black')\n",[22,5111,5112,5114],{},[4780,5113,4938],{},": Reductions summarize without subsampling; cats enable direct color mapping.",[22,5116,5117,5120,5121,5124,5125,5128],{},[4780,5118,5119],{},"Common mistake",": Forgetting ",[4500,5122,5123],{},"pd.Categorical","—ensures ordered channels. Avoid ",[4500,5126,5127],{},"px=0"," spread on sparse data (dots vanish).",[22,5130,5131,5134,5135,5138],{},[4780,5132,5133],{},"Before\u002Fafter",": Raw cat shade shows blocks; ",[4500,5136,5137],{},"spread(px=1)"," smooths to clusters; black bg boosts contrast.",[17,5140,5142],{"id":5141},"glyph-types-points-lines-rasters-quadmeshes","Glyph Types: Points, Lines, Rasters, Quadmeshes",[22,5144,5145],{},"Datashader supports diverse geometries:",[4983,5147,5148,5154,5164,5173],{},[4807,5149,5150,5153],{},[4780,5151,5152],{},"Points",": Default for scatter.",[4807,5155,5156,5159,5160,5163],{},[4780,5157,5158],{},"Lines",": ",[4500,5161,5162],{},"canvas.line(df, 'x','y', agg=rd.count(), line_width=1)"," for 5k walks (500 steps each)—renders overlaps as density.",[4807,5165,5166,5159,5169,5172],{},[4780,5167,5168],{},"Raster",[4500,5170,5171],{},"canvas.raster(xarray_da)"," for uniform grids; shade synthetic elevations.",[4807,5174,5175,5159,5178,5181],{},[4780,5176,5177],{},"Quadmesh",[4500,5179,5180],{},"canvas.quadmesh(nonuniform_da)"," for irregular lat\u002Flon grids; handles vortices\u002Fanomalies.",[22,5183,5184],{},"Line example (5k series):",[4853,5186,5188],{"className":4855,"code":5187,"language":70,"meta":40,"style":40},"t = np.linspace(0,1,500); xs=np.tile(t,5000)\nwalks = np.cumsum(rng.normal(0,0.05,(5000,500)),1).ravel()\ndf_lines = pd.DataFrame({'x':xs,'y':walks,'id':np.repeat(range(5000),500)})\nagg_lines = canvas.line(df_lines,'x','y',agg=rd.count())\ntf.shade(agg_lines, cmap=cc.fire, how='eq_hist')\n",[4500,5189,5190,5195,5200,5205,5210],{"__ignoreMap":40},[4860,5191,5192],{"class":4823,"line":4862},[4860,5193,5194],{},"t = np.linspace(0,1,500); xs=np.tile(t,5000)\n",[4860,5196,5197],{"class":4823,"line":41},[4860,5198,5199],{},"walks = np.cumsum(rng.normal(0,0.05,(5000,500)),1).ravel()\n",[4860,5201,5202],{"class":4823,"line":55},[4860,5203,5204],{},"df_lines = pd.DataFrame({'x':xs,'y':walks,'id':np.repeat(range(5000),500)})\n",[4860,5206,5207],{"class":4823,"line":54},[4860,5208,5209],{},"agg_lines = canvas.line(df_lines,'x','y',agg=rd.count())\n",[4860,5211,5212],{"class":4823,"line":4632},[4860,5213,5214],{},"tf.shade(agg_lines, cmap=cc.fire, how='eq_hist')\n",[22,5216,5217,5218,4802],{},"Raster\u002Fquadmesh use ",[4500,5219,5220],{},"xarray.DataArray",[4853,5222,5224],{"className":4855,"code":5223,"language":70,"meta":40,"style":40},"lon=np.linspace(-180,180,1000); lat=np.linspace(-90,90,1000)\nLON,LAT=np.meshgrid(lon,lat)\nz = multivariate_normal.pdf(...)  # Gaussians\n da=xr.DataArray(z, dims=['y','x'], coords={'x':lon,'y':lat})\nagg_raster=canvas.raster(da)\n",[4500,5225,5226,5231,5236,5241,5246],{"__ignoreMap":40},[4860,5227,5228],{"class":4823,"line":4862},[4860,5229,5230],{},"lon=np.linspace(-180,180,1000); lat=np.linspace(-90,90,1000)\n",[4860,5232,5233],{"class":4823,"line":41},[4860,5234,5235],{},"LON,LAT=np.meshgrid(lon,lat)\n",[4860,5237,5238],{"class":4823,"line":55},[4860,5239,5240],{},"z = multivariate_normal.pdf(...)  # Gaussians\n",[4860,5242,5243],{"class":4823,"line":54},[4860,5244,5245],{}," da=xr.DataArray(z, dims=['y','x'], coords={'x':lon,'y':lat})\n",[4860,5247,5248],{"class":4823,"line":4632},[4860,5249,5250],{},"agg_raster=canvas.raster(da)\n",[22,5252,5253,5255],{},[4780,5254,4938],{},": Glyph choice matches data structure—lines aggregate paths; quadmesh interpolates irregular grids.",[22,5257,5258,5260,5261,5264,5265,5268],{},[4780,5259,4950],{},": Line ",[4500,5262,5263],{},"line_width>1"," blurs; use ",[4500,5266,5267],{},"how='log'"," for sparse overlaps.",[17,5270,5272],{"id":5271},"compositing-spreading-and-performance-scaling","Compositing, Spreading, and Performance Scaling",[22,5274,5275],{},"Enhance outputs:",[4983,5277,5278,5284,5290],{},[4807,5279,5280,5283],{},[4500,5281,5282],{},"tf.spread(img, px=2)",": Expands pixels for visibility (0-4 tested).",[4807,5285,5286,5289],{},[4500,5287,5288],{},"tf.stack(bg_shade, fg_shade)",": Layers (alpha=200 for blend).",[4807,5291,5292,5295],{},[4500,5293,5294],{},"tf.set_background(img, 'black')",": Contrast.",[22,5297,5298],{},"Benchmark: Float32 DataFrames; 20M points → ~500ms on 800x700 canvas (loglog scales linearly).",[4853,5300,5302],{"className":4855,"code":5301,"language":70,"meta":40,"style":40},"sizes = [10_000, ..., 20_000_000]\nfor n in sizes:\n    dfb=pd.DataFrame({'x':rng.normal(0,1,n).astype(np.float32), 'y':...})\n    cv=ds.Canvas(800,700)\n    t0=time.perf_counter()\n    cv.points(dfb,'x','y',rd.count())\n    print(f'{n:,} → {(time.perf_counter()-t0)*1000:.1f}ms')\n",[4500,5303,5304,5309,5314,5319,5324,5329,5334],{"__ignoreMap":40},[4860,5305,5306],{"class":4823,"line":4862},[4860,5307,5308],{},"sizes = [10_000, ..., 20_000_000]\n",[4860,5310,5311],{"class":4823,"line":41},[4860,5312,5313],{},"for n in sizes:\n",[4860,5315,5316],{"class":4823,"line":55},[4860,5317,5318],{},"    dfb=pd.DataFrame({'x':rng.normal(0,1,n).astype(np.float32), 'y':...})\n",[4860,5320,5321],{"class":4823,"line":54},[4860,5322,5323],{},"    cv=ds.Canvas(800,700)\n",[4860,5325,5326],{"class":4823,"line":4632},[4860,5327,5328],{},"    t0=time.perf_counter()\n",[4860,5330,5331],{"class":4823,"line":4888},[4860,5332,5333],{},"    cv.points(dfb,'x','y',rd.count())\n",[4860,5335,5336],{"class":4823,"line":4894},[4860,5337,5338],{},"    print(f'{n:,} → {(time.perf_counter()-t0)*1000:.1f}ms')\n",[22,5340,5341,5342,4848],{},"Custom Matplotlib cmaps: ",[4500,5343,5344],{},"colours = [mcolors.to_hex(plt.get_cmap('inferno')(i\u002F255)) for i in range(256)]; tf.shade(agg, cmap=colours)",[22,5346,5347,5349],{},[4780,5348,4938],{},": Raster ops are O(canvas pixels), not O(data)—scales to billions.",[22,5351,5352,5355],{},[4780,5353,5354],{},"Quality",": \u003C1s for 20M ensures interactive zooms.",[17,5357,5359],{"id":5358},"multi-panel-dashboards-and-ecosystem-integration","Multi-Panel Dashboards and Ecosystem Integration",[22,5361,5362,5363,4830],{},"Build dashboards: GridSpec panels with quantile ranges (",[4500,5364,5365],{},"df[col].quantile([0.001,0.999])",[22,5367,5368],{},"Synthetic trades (1.5M rows):",[4853,5370,5372],{"className":4855,"code":5371,"language":70,"meta":40,"style":40},"df10=pd.DataFrame({'price':cumsum(normal), 'vol':..., 'ret':diff(price), 'hour':...})\ngs=GridSpec(2,3)\nfor spec, xcol,ycol,title,cmap in panels:\n    xr=(df10[xcol].quantile(0.001), df10[xcol].quantile(0.999))\n    cv=ds.Canvas(300,250, x_range=xr, y_range=yr_)\n    img=tf.shade(cv.points(df10,xcol,ycol,rd.count()), cmap=cmap, how='eq_hist')\n    show(img, title, ax=fig.add_subplot(spec))\n",[4500,5373,5374,5379,5384,5389,5394,5399,5404],{"__ignoreMap":40},[4860,5375,5376],{"class":4823,"line":4862},[4860,5377,5378],{},"df10=pd.DataFrame({'price':cumsum(normal), 'vol':..., 'ret':diff(price), 'hour':...})\n",[4860,5380,5381],{"class":4823,"line":41},[4860,5382,5383],{},"gs=GridSpec(2,3)\n",[4860,5385,5386],{"class":4823,"line":55},[4860,5387,5388],{},"for spec, xcol,ycol,title,cmap in panels:\n",[4860,5390,5391],{"class":4823,"line":54},[4860,5392,5393],{},"    xr=(df10[xcol].quantile(0.001), df10[xcol].quantile(0.999))\n",[4860,5395,5396],{"class":4823,"line":4632},[4860,5397,5398],{},"    cv=ds.Canvas(300,250, x_range=xr, y_range=yr_)\n",[4860,5400,5401],{"class":4823,"line":4888},[4860,5402,5403],{},"    img=tf.shade(cv.points(df10,xcol,ycol,rd.count()), cmap=cmap, how='eq_hist')\n",[4860,5405,5406],{"class":4823,"line":4894},[4860,5407,5408],{},"    show(img, title, ax=fig.add_subplot(spec))\n",[22,5410,5411,5412,4848],{},"Zoom: New canvas per view—no fidelity loss.\nOverlay: ",[4500,5413,5414],{},"ax.imshow(img.to_pil(), extent=[xmin,xmax,ymin,ymax]); ax.contour(kde_grid)",[22,5416,5417,5419],{},[4780,5418,4938],{},": Quantile ranges focus 99.8% data; stack with Matplotlib for contours\u002FKDE (sample 20k for KDE).",[22,5421,5422,5424],{},[4780,5423,4950],{},": Full data KDE OOMs—subsample.",[22,5426,5427,5430],{},[4780,5428,5429],{},"Exercise",": Port your >1M row dataset; benchmark vs scatter; add zoom callback.",[5432,5433,5434],"blockquote",{},[22,5435,5436],{},"\"Datashader transforms raw large-scale data into meaningful visual structure with speed, flexibility, and visual clarity.\"",[5432,5438,5439],{},[22,5440,5441],{},"\"Aggregation-first approach enables preservation of detail, avoidance of overplotting, and zooming into dense regions without losing fidelity.\"",[5432,5443,5444],{},[22,5445,5446],{},"\"Rendering time scales with canvas pixels, not data size—20M points in 500ms.\"",[5432,5448,5449],{},[22,5450,5451],{},"\"Use 'eq_hist' for balanced density revelation in clusters.\"",[5432,5453,5454],{},[22,5455,5456],{},"\"Float32 DataFrames and numba acceleration keep perf high.\"",[17,5458,5460],{"id":5459},"key-takeaways","Key Takeaways",[4983,5462,5463,5476,5483,5495,5498,5501,5504,5514,5517],{},[4807,5464,5465,5466,5469,5470,5469,5473,4848],{},"Start every plot with ",[4500,5467,5468],{},"Canvas"," → ",[4500,5471,5472],{},"points\u002Fline\u002Fraster\u002Fquadmesh",[4500,5474,5475],{},"shade(how='eq_hist')",[4807,5477,5478,5479,5482],{},"Add value\u002Fcats columns for ",[4500,5480,5481],{},"rd.sum\u002Fmean\u002Fcount_cat","; pick cmap via colorcet.",[4807,5484,5485,4535,5488,4535,5491,5494],{},[4500,5486,5487],{},"spread(px=1-2)",[4500,5489,5490],{},"stack(layers)",[4500,5492,5493],{},"set_background"," for polish.",[4807,5496,5497],{},"Benchmark: Use float32; expect ms for millions on CPU.",[4807,5499,5500],{},"Dashboards: Quantile ranges per panel; Matplotlib for overlays.",[4807,5502,5503],{},"Zoom arbitrary subregions—re-aggregate on new canvas.",[4807,5505,5506,5507,5510,5511,5513],{},"Integrate: ",[4500,5508,5509],{},"img.to_pil()"," for ",[4500,5512,4847],{},"; sample for KDE contours.",[4807,5515,5516],{},"Avoid: Traditional scatters >100k; fixed ranges without quantiles.",[4807,5518,5519],{},"Practice: Run Colab notebook; scale your CSV to 10M rows.",[5521,5522,5523],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":40,"searchDepth":41,"depth":41,"links":5525},[5526,5527,5528,5529,5530,5531],{"id":4772,"depth":41,"text":4773},{"id":4958,"depth":41,"text":4959},{"id":5141,"depth":41,"text":5142},{"id":5271,"depth":41,"text":5272},{"id":5358,"depth":41,"text":5359},{"id":5459,"depth":41,"text":5460},[47],{"content_references":5534,"triage":5544},[5535,5538,5541],{"type":4732,"title":5536,"url":5537,"context":4625},"Datashader","https:\u002F\u002Fgithub.com\u002Fholoviz\u002Fdatashader",{"type":4627,"title":5539,"url":5540,"context":4630},"datashader_massive_data_visualization_Marktechpost.ipynb","https:\u002F\u002Fgithub.com\u002FMarktechpost\u002FAI-Agents-Projects-Tutorials\u002Fblob\u002Fmain\u002FData%20Science\u002Fdatashader_massive_data_visualization_Marktechpost.ipynb",{"type":4627,"title":5542,"url":5543,"context":4625},"Machine-learning-Data-science-Tutorials","https:\u002F\u002Fgithub.com\u002FMarktechpost\u002FMachine-learning-Data-science-Tutorials",{"relevance":4632,"novelty":55,"quality":54,"actionability":54,"composite":5545,"reasoning":5546},4.15,"Category: Data Science & Visualization. The article provides a detailed tutorial on using Datashader for visualizing massive datasets, which directly addresses the audience's need for practical applications in data visualization. It includes specific code examples and steps that can be immediately applied, making it actionable for developers looking to implement this in their projects.","\u002Fsummaries\u002Fdatashader-pipeline-for-massive-data-viz-summary","2026-04-26 04:04:15","2026-04-26 17:23:03",{"title":4762,"description":40},{"loc":5547},"dfee1262b8c91c14","https:\u002F\u002Fwww.marktechpost.com\u002F2026\u002F04\u002F25\u002Fa-coding-tutorial-on-datashader-on-rendering-massive-datasets-with-high-performance-python-visual-analytics\u002F","summaries\u002Fdatashader-pipeline-for-massive-data-viz-summary",[69,70,71],"Master Datashader's aggregation-first pipeline to render millions of points, lines, grids, and composites scalably with Python, bypassing overplotting in Matplotlib.",[],"lfbDWqAIFEuB_IzZTo_2PZyvLfpOJzVWsaBB_LOcWEQ",{"id":5560,"title":5561,"ai":5562,"body":5567,"categories":5603,"created_at":48,"date_modified":48,"description":40,"extension":49,"faq":48,"featured":50,"kicker_label":48,"meta":5604,"navigation":58,"path":5616,"published_at":5617,"question":48,"scraped_at":5618,"seo":5619,"sitemap":5620,"source_id":5621,"source_name":5622,"source_type":65,"source_url":5623,"stem":5624,"tags":5625,"thumbnail_url":48,"tldr":5627,"tweet":48,"unknown_tags":5628,"__hash__":5629},"summaries\u002Fsummaries\u002Fetl-pipeline-turns-messy-hr-data-into-star-schema--summary.md","ETL Pipeline Turns Messy HR Data into Star Schema Insights",{"provider":7,"model":8,"input_tokens":5563,"output_tokens":5564,"processing_time_ms":5565,"cost_usd":5566},7468,1638,25555,0.0022901,{"type":14,"value":5568,"toc":5597},[5569,5573,5576,5580,5583,5587,5590,5594],[17,5570,5572],{"id":5571},"restructure-flat-data-into-star-schema-for-efficient-analysis","Restructure Flat Data into Star Schema for Efficient Analysis",[22,5574,5575],{},"Raw HR datasets arrive as wide, redundant tables that slow queries and complicate scaling. Transform them into a star schema: one central fact table for employee records (EmpID, Age, tenure_years, is_attrition, foreign keys like department_id) surrounded by dimension tables (department, position, salary with qcut-segmented levels: Low\u002FMedium\u002FHigh for equal distribution groups). This reduces redundancy, speeds queries, and adds business meaning—e.g., salary_level enables quick counts of high-salary employees. Use pd.read_csv for extraction, then merge unique values back with surrogate keys (index + 1) to link facts to dimensions, creating maintainable analytical workloads over monolithic tables.",[17,5577,5579],{"id":5578},"clean-and-engineer-features-robustly-from-unreliable-raw-data","Clean and Engineer Features Robustly from Unreliable Raw Data",[22,5581,5582],{},"Don't trust provided fields—derive them. Strip column whitespace to prevent code breaks. Convert strings to datetime with errors='coerce' for DateofHire, DateofTermination, DOB (format='%m\u002F%d\u002F%y'). Compute Age as (today - DOB).days \u002F\u002F 365, tenure_years as (today - DateofHire).days \u002F 365, is_attrition as DateofTermination.notna(), is_active as opposite. Fill missing Salary and Age with medians (outlier-resistant over means). These steps turn inconsistent inputs into reliable features for downstream analysis and ML, emphasizing derivation over assumption.",[17,5584,5586],{"id":5585},"extract-actionable-hr-insights-post-transformation","Extract Actionable HR Insights Post-Transformation",[22,5588,5589],{},"Query structured data reveals: Managers show no strong performance impact—most employees rate 'Fully Meets' across leaders, with minor 'Exceeds' variations (e.g., Ketsia Liebig, Brandon Miller) and rare 'PIP\u002FNeeds Improvement'. Diversity: 60% White, 26% Black\u002FAfrican American, 9% Asian; gender balanced at 56.6% female vs. 43.4% male. Recruitment: Diversity Job Fair yields 100% Black hires; Indeed\u002FLinkedIn balanced; Google Search varied but White-dominant; avoid Online Web Application\u002FOther (100% White). Stacked crosstabs and countplots highlight channels driving diversity, prioritizing targeted sources over uniform ones.",[17,5591,5593],{"id":5592},"predict-attrition-at-71-accuracy-with-key-drivers-identified","Predict Attrition at 71% Accuracy with Key Drivers Identified",[22,5595,5596],{},"Leverage cleaned fact table merges (absences, salary dims) for RandomForestClassifier on age, tenure_years, absences, Salary (filled medians). Train\u002Ftest split (80\u002F20) yields 71% accuracy, 59% precision\u002Frecall for attrition (confusion: 32 true stay, 13 true leave, 9 misses each). Feature importances: tenure (47%), Salary (23%), absences moderate, age lowest—focus retention on long-tenured, low-salary employees with absences to cut churn.",{"title":40,"searchDepth":41,"depth":41,"links":5598},[5599,5600,5601,5602],{"id":5571,"depth":41,"text":5572},{"id":5578,"depth":41,"text":5579},{"id":5585,"depth":41,"text":5586},{"id":5592,"depth":41,"text":5593},[47],{"content_references":5605,"triage":5614},[5606,5610],{"type":4622,"title":5607,"author":5608,"url":5609,"context":4625},"Human Resources Data Set","rhuebner","https:\u002F\u002Fwww.kaggle.com\u002Fdatasets\u002Frhuebner\u002Fhuman-resources-data-set",{"type":4627,"title":5611,"author":5612,"url":5613,"context":4625},"ETL-HR-Analytics-Project","jihanKamilah","https:\u002F\u002Fgithub.com\u002FjihanKamilah\u002FETL-HR-Analytics-Project",{"relevance":4632,"novelty":55,"quality":54,"actionability":54,"composite":5545,"reasoning":5615},"Category: Data Science & Visualization. The article provides a detailed guide on building an ETL pipeline to transform messy HR data into a star schema, addressing practical applications for data analysis, which is highly relevant for product builders. It includes specific techniques for data cleaning and feature engineering, making it actionable for the audience.","\u002Fsummaries\u002Fetl-pipeline-turns-messy-hr-data-into-star-schema-summary","2026-04-29 17:03:37","2026-05-03 17:01:04",{"title":5561,"description":40},{"loc":5616},"6e4b4d5944c58d66","Learning Data","https:\u002F\u002Fmedium.com\u002Flearning-data\u002Fthis-is-what-real-data-looks-like-and-how-i-turned-it-into-insights-3d520e7da561?source=rss----eec44e936bf1---4","summaries\u002Fetl-pipeline-turns-messy-hr-data-into-star-schema--summary",[71,5626,69,70],"machine-learning","Build a scalable ETL pipeline to restructure flat HR data into a star schema fact\u002Fdimension tables, enabling analysis of manager performance, diversity (60% White, 56.6% female), recruitment channels, and 71% accurate attrition prediction where tenure drives 47% of decisions.",[],"dDvHxRvFYu4TQCvtklxTh_2DodCmMRdw0_om68Uv7uE"]