[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-6d3b9c2d377ce688-axios-npm-attack-check-systems-rotate-secrets-now-summary":3,"summaries-facets-categories":125,"summary-related-6d3b9c2d377ce688-axios-npm-attack-check-systems-rotate-secrets-now-summary":3710},{"id":4,"title":5,"ai":6,"body":13,"categories":100,"created_at":102,"date_modified":102,"description":103,"extension":104,"faq":102,"featured":105,"kicker_label":102,"meta":106,"navigation":107,"path":108,"published_at":109,"question":102,"scraped_at":110,"seo":111,"sitemap":112,"source_id":113,"source_name":114,"source_type":115,"source_url":116,"stem":117,"tags":118,"thumbnail_url":102,"tldr":122,"tweet":102,"unknown_tags":123,"__hash__":124},"summaries\u002Fsummaries\u002F6d3b9c2d377ce688-axios-npm-attack-check-systems-rotate-secrets-now-summary.md","Axios NPM Attack: Check Systems, Rotate Secrets Now",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",7480,1297,13057,0.00167755,{"type":14,"value":15,"toc":93},"minimark",[16,21,25,28,32,35,57,60,64,78,84,90],[17,18,20],"h2",{"id":19},"compromise-mechanics-maintainer-account-hijack-enables-rapid-poisoning","Compromise Mechanics: Maintainer Account Hijack Enables Rapid Poisoning",[22,23,24],"p",{},"Attackers compromised a maintainer's NPM account to publish axios 1.14.1 and 0.30.4, affecting 80M+ weekly downloads. They added a malicious dependency, plain-crypto-js (created 18 hours prior), whose sole purpose was a post-install script. This script downloads an obfuscated (Base64-encoded) remote access trojan (RAT) tailored for macOS, Windows, and Linux, exfiltrating credentials, API keys, and crypto tokens from dev machines, PCs, or VPS. The poisoning spanned 39 minutes starting midnight UTC, bypassing expected Trusted Publishing safeguards on the 1.x branch (no GitHub commit\u002Ftag found; possibly via long-lived NPM token). Similar to Shai Hulud (multiple NPM pkgs) and Lite-LLM (Python), attacks exploit post-install scripts auto-executing on npm\u002Fbun install\u002Fupdate, not runtime in apps\u002Fwebsites.",[22,26,27],{},"Rising frequency ties to AI-driven code explosion (GitHub repos at all-time high), lowering attacker skill barriers for malicious code gen, overwhelming maintainers, and expanding surfaces via AI tools like Claude\u002FCopilot installing deps.",[17,29,31],{"id":30},"detection-run-these-commands-to-confirm-infection","Detection: Run These Commands to Confirm Infection",[22,33,34],{},"Follow StepSecurity's guide: execute OS-specific scans to detect RAT artifacts.",[36,37,38,51],"ul",{},[39,40,41,45,46,50],"li",{},[42,43,44],"strong",{},"macOS\u002FLinux",": ",[47,48,49],"code",{},"curl -s https:\u002F\u002Fgist.githubusercontent.com\u002Fmaximilian-schwarzmuller\u002F... | bash"," (or equivalent from linked report).",[39,52,53,56],{},[42,54,55],{},"Windows",": PowerShell script variant.",[22,58,59],{},"Positive hit? Assume total compromise: rotate ALL passwords, disable\u002Frevoke API keys (OpenAI, etc.), credentials from .env\u002Fdotenv files, system tokens. Thousands to tens of thousands likely affected given download volume peaks.",[17,61,63],{"id":62},"defenses-layer-package-managers-secrets-and-isolation","Defenses: Layer Package Managers, Secrets, and Isolation",[22,65,66,69,70,73,74,77],{},[42,67,68],{},"Block Fresh Poisons",": Switch to pnpm (add ",[47,71,72],{},"min-release-age=3d"," in pnpm-workspace.yaml) or bun (",[47,75,76],{},"minInstallAge=3d"," in bunfig.toml)—rejects versions \u003C3 days old, dodging short-lived attacks (most caught in hours). NPM lacks this natively.",[22,79,80,83],{},[42,81,82],{},"Secure Secrets",": Avoid plaintext .env; use Doppler (or self-hosted alt) to inject encrypted env vars at runtime, denying RATs local access.",[22,85,86,89],{},[42,87,88],{},"Minimize Blast Radius",": Develop in isolated VPS (SSH access) or Docker containers—limits trojan to sandbox, preventing full-system credential grabs.",[22,91,92],{},"No 100% fix (even Trusted Publishing failed here), but multi-layer reduces risk as attacks proliferate.",{"title":94,"searchDepth":95,"depth":95,"links":96},"",2,[97,98,99],{"id":19,"depth":95,"text":20},{"id":30,"depth":95,"text":31},{"id":62,"depth":95,"text":63},[101],"DevOps & Cloud",null,"There has been a HUGE supply chain attack on the axios (yes THAT axios) package. Presumably thousands of machines are affected.\n\nMore details & steps to check if you're affected: https:\u002F\u002Fwww.stepsecurity.io\u002Fblog\u002Faxios-compromised-on-npm-malicious-versions-drop-remote-access-trojan\n\nMy courses: https:\u002F\u002Facademind.com\u002Fcourses\n\nWebsite: https:\u002F\u002Fmaximilian-schwarzmueller.com\u002F\n\nSocials:\n👉 Twitch: https:\u002F\u002Fwww.twitch.tv\u002Fmaxedapps\n👉 X: https:\u002F\u002Fx.com\u002Fmaxedapps\n👉 Udemy: https:\u002F\u002Fwww.udemy.com\u002Fuser\u002Fmaximilian-schwarzmuller\u002F\n👉 LinkedIn: https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fmaximilian-schwarzmueller\u002F\n\nWant to become a web developer or expand your web development knowledge?\nI have multiple bestselling online courses on React, Angular, NodeJS, Docker & much more!\n👉 https:\u002F\u002Facademind.com\u002Fcourses","md",false,{},true,"\u002Fsummaries\u002F6d3b9c2d377ce688-axios-npm-attack-check-systems-rotate-secrets-now-summary","2026-03-31 09:14:06","2026-04-05 16:14:18",{"title":5,"description":103},{"loc":108},"6d3b9c2d377ce688","Maximilian Schwarzmuller","video","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=CHkiSSZiWVE","summaries\u002F6d3b9c2d377ce688-axios-npm-attack-check-systems-rotate-secrets-now-summary",[119,120,121],"devops","open-source","software-engineering","Axios 1.14.1 & 0.30.4 compromised via fake crypto-js dep with post-install RAT stealing credentials; run OS-specific checks, rotate all secrets\u002FAPI keys, use pnpm\u002Fbun min release age for prevention.",[121],"f-2SomhSAzPNyQfTR-fTcpxYEL1eYhCdq5EDbqS0Gmw",[126,129,132,135,138,141,143,145,147,149,151,153,156,158,160,162,164,166,168,170,172,174,177,180,182,184,187,189,191,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,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,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380,3382,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546,3548,3550,3552,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572,3574,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634,3636,3638,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708],{"categories":127},[128],"Developer Productivity",{"categories":130},[131],"Business & SaaS",{"categories":133},[134],"AI & LLMs",{"categories":136},[137],"AI Automation",{"categories":139},[140],"Product Strategy",{"categories":142},[134],{"categories":144},[128],{"categories":146},[131],{"categories":148},[],{"categories":150},[134],{"categories":152},[],{"categories":154},[155],"AI News & Trends",{"categories":157},[137],{"categories":159},[155],{"categories":161},[137],{"categories":163},[137],{"categories":165},[134],{"categories":167},[134],{"categories":169},[155],{"categories":171},[134],{"categories":173},[],{"categories":175},[176],"Design & Frontend",{"categories":178},[179],"Data Science & Visualization",{"categories":181},[155],{"categories":183},[],{"categories":185},[186],"Software Engineering",{"categories":188},[134],{"categories":190},[137],{"categories":192},[193],"Marketing & Growth",{"categories":195},[134],{"categories":197},[137],{"categories":199},[],{"categories":201},[],{"categories":203},[176],{"categories":205},[137],{"categories":207},[128],{"categories":209},[176],{"categories":211},[134],{"categories":213},[137],{"categories":215},[155],{"categories":217},[],{"categories":219},[],{"categories":221},[137],{"categories":223},[186],{"categories":225},[],{"categories":227},[131],{"categories":229},[],{"categories":231},[],{"categories":233},[137],{"categories":235},[137],{"categories":237},[134],{"categories":239},[],{"categories":241},[186],{"categories":243},[],{"categories":245},[],{"categories":247},[],{"categories":249},[134],{"categories":251},[193],{"categories":253},[176],{"categories":255},[176],{"categories":257},[134],{"categories":259},[137],{"categories":261},[134],{"categories":263},[134],{"categories":265},[137],{"categories":267},[137],{"categories":269},[179],{"categories":271},[155],{"categories":273},[137],{"categories":275},[193],{"categories":277},[137],{"categories":279},[140],{"categories":281},[],{"categories":283},[137],{"categories":285},[],{"categories":287},[137],{"categories":289},[186],{"categories":291},[176],{"categories":293},[134],{"categories":295},[],{"categories":297},[],{"categories":299},[137],{"categories":301},[],{"categories":303},[134],{"categories":305},[],{"categories":307},[128],{"categories":309},[186],{"categories":311},[131],{"categories":313},[155],{"categories":315},[134],{"categories":317},[],{"categories":319},[134],{"categories":321},[],{"categories":323},[186],{"categories":325},[179],{"categories":327},[],{"categories":329},[134],{"categories":331},[176],{"categories":333},[],{"categories":335},[176],{"categories":337},[137],{"categories":339},[],{"categories":341},[137],{"categories":343},[155],{"categories":345},[131],{"categories":347},[134],{"categories":349},[],{"categories":351},[137],{"categories":353},[134],{"categories":355},[140],{"categories":357},[],{"categories":359},[134],{"categories":361},[137],{"categories":363},[137],{"categories":365},[],{"categories":367},[179],{"categories":369},[134],{"categories":371},[],{"categories":373},[128],{"categories":375},[131],{"categories":377},[134],{"categories":379},[137],{"categories":381},[186],{"categories":383},[134],{"categories":385},[],{"categories":387},[],{"categories":389},[134],{"categories":391},[],{"categories":393},[176],{"categories":395},[],{"categories":397},[134],{"categories":399},[],{"categories":401},[137],{"categories":403},[134],{"categories":405},[176],{"categories":407},[],{"categories":409},[134],{"categories":411},[134],{"categories":413},[131],{"categories":415},[137],{"categories":417},[134],{"categories":419},[176],{"categories":421},[137],{"categories":423},[],{"categories":425},[],{"categories":427},[155],{"categories":429},[],{"categories":431},[134],{"categories":433},[131,193],{"categories":435},[],{"categories":437},[134],{"categories":439},[],{"categories":441},[],{"categories":443},[134],{"categories":445},[],{"categories":447},[134],{"categories":449},[101],{"categories":451},[],{"categories":453},[155],{"categories":455},[176],{"categories":457},[],{"categories":459},[155],{"categories":461},[155],{"categories":463},[134],{"categories":465},[193],{"categories":467},[],{"categories":469},[131],{"categories":471},[],{"categories":473},[134,101],{"categories":475},[134],{"categories":477},[134],{"categories":479},[137],{"categories":481},[134,186],{"categories":483},[179],{"categories":485},[134],{"categories":487},[193],{"categories":489},[137],{"categories":491},[137],{"categories":493},[],{"categories":495},[137],{"categories":497},[134,131],{"categories":499},[],{"categories":501},[176],{"categories":503},[176],{"categories":505},[],{"categories":507},[],{"categories":509},[155],{"categories":511},[],{"categories":513},[128],{"categories":515},[186],{"categories":517},[134],{"categories":519},[176],{"categories":521},[137],{"categories":523},[186],{"categories":525},[155],{"categories":527},[176],{"categories":529},[],{"categories":531},[134],{"categories":533},[134],{"categories":535},[134],{"categories":537},[155],{"categories":539},[128],{"categories":541},[134],{"categories":543},[137],{"categories":545},[101],{"categories":547},[176],{"categories":549},[137],{"categories":551},[],{"categories":553},[],{"categories":555},[176],{"categories":557},[155],{"categories":559},[179],{"categories":561},[],{"categories":563},[134],{"categories":565},[134],{"categories":567},[131],{"categories":569},[134],{"categories":571},[134],{"categories":573},[155],{"categories":575},[],{"categories":577},[137],{"categories":579},[186],{"categories":581},[],{"categories":583},[134],{"categories":585},[134],{"categories":587},[137],{"categories":589},[],{"categories":591},[],{"categories":593},[134],{"categories":595},[],{"categories":597},[131],{"categories":599},[137],{"categories":601},[],{"categories":603},[128],{"categories":605},[134],{"categories":607},[131],{"categories":609},[155],{"categories":611},[],{"categories":613},[],{"categories":615},[],{"categories":617},[155],{"categories":619},[155],{"categories":621},[],{"categories":623},[],{"categories":625},[131],{"categories":627},[],{"categories":629},[],{"categories":631},[128],{"categories":633},[],{"categories":635},[193],{"categories":637},[137],{"categories":639},[131],{"categories":641},[137],{"categories":643},[186],{"categories":645},[],{"categories":647},[140],{"categories":649},[176],{"categories":651},[186],{"categories":653},[134],{"categories":655},[137],{"categories":657},[131],{"categories":659},[134],{"categories":661},[],{"categories":663},[],{"categories":665},[186],{"categories":667},[179],{"categories":669},[140],{"categories":671},[137],{"categories":673},[134],{"categories":675},[],{"categories":677},[101],{"categories":679},[],{"categories":681},[137],{"categories":683},[],{"categories":685},[],{"categories":687},[134],{"categories":689},[176],{"categories":691},[193],{"categories":693},[137],{"categories":695},[],{"categories":697},[128],{"categories":699},[],{"categories":701},[155],{"categories":703},[134,101],{"categories":705},[155],{"categories":707},[134],{"categories":709},[131],{"categories":711},[134],{"categories":713},[],{"categories":715},[131],{"categories":717},[],{"categories":719},[186],{"categories":721},[176],{"categories":723},[155],{"categories":725},[179],{"categories":727},[128],{"categories":729},[134],{"categories":731},[186],{"categories":733},[],{"categories":735},[],{"categories":737},[140],{"categories":739},[],{"categories":741},[134],{"categories":743},[],{"categories":745},[176],{"categories":747},[176],{"categories":749},[176],{"categories":751},[],{"categories":753},[],{"categories":755},[155],{"categories":757},[137],{"categories":759},[134],{"categories":761},[134],{"categories":763},[134],{"categories":765},[131],{"categories":767},[134],{"categories":769},[],{"categories":771},[186],{"categories":773},[186],{"categories":775},[131],{"categories":777},[],{"categories":779},[134],{"categories":781},[134],{"categories":783},[131],{"categories":785},[155],{"categories":787},[193],{"categories":789},[137],{"categories":791},[],{"categories":793},[176],{"categories":795},[],{"categories":797},[134],{"categories":799},[],{"categories":801},[131],{"categories":803},[137],{"categories":805},[],{"categories":807},[101],{"categories":809},[179],{"categories":811},[186],{"categories":813},[193],{"categories":815},[186],{"categories":817},[137],{"categories":819},[],{"categories":821},[],{"categories":823},[137],{"categories":825},[128],{"categories":827},[137],{"categories":829},[140],{"categories":831},[131],{"categories":833},[],{"categories":835},[134],{"categories":837},[140],{"categories":839},[134],{"categories":841},[134],{"categories":843},[193],{"categories":845},[176],{"categories":847},[137],{"categories":849},[],{"categories":851},[],{"categories":853},[101],{"categories":855},[186],{"categories":857},[],{"categories":859},[137],{"categories":861},[134],{"categories":863},[176,134],{"categories":865},[128],{"categories":867},[],{"categories":869},[134],{"categories":871},[128],{"categories":873},[176],{"categories":875},[137],{"categories":877},[186],{"categories":879},[],{"categories":881},[134],{"categories":883},[],{"categories":885},[128],{"categories":887},[],{"categories":889},[137],{"categories":891},[140],{"categories":893},[134],{"categories":895},[134],{"categories":897},[176],{"categories":899},[137],{"categories":901},[101],{"categories":903},[176],{"categories":905},[137],{"categories":907},[134],{"categories":909},[134],{"categories":911},[134],{"categories":913},[155],{"categories":915},[],{"categories":917},[140],{"categories":919},[137],{"categories":921},[176],{"categories":923},[137],{"categories":925},[186],{"categories":927},[176],{"categories":929},[137],{"categories":931},[155],{"categories":933},[],{"categories":935},[134],{"categories":937},[176],{"categories":939},[134],{"categories":941},[128],{"categories":943},[155],{"categories":945},[134],{"categories":947},[193],{"categories":949},[134],{"categories":951},[134],{"categories":953},[137],{"categories":955},[137],{"categories":957},[134],{"categories":959},[137],{"categories":961},[176],{"categories":963},[134],{"categories":965},[],{"categories":967},[],{"categories":969},[186],{"categories":971},[],{"categories":973},[128],{"categories":975},[101],{"categories":977},[],{"categories":979},[128],{"categories":981},[131],{"categories":983},[193],{"categories":985},[],{"categories":987},[131],{"categories":989},[],{"categories":991},[],{"categories":993},[],{"categories":995},[],{"categories":997},[],{"categories":999},[134],{"categories":1001},[137],{"categories":1003},[101],{"categories":1005},[128],{"categories":1007},[134],{"categories":1009},[186],{"categories":1011},[140],{"categories":1013},[134],{"categories":1015},[193],{"categories":1017},[134],{"categories":1019},[134],{"categories":1021},[134],{"categories":1023},[134,128],{"categories":1025},[186],{"categories":1027},[186],{"categories":1029},[176],{"categories":1031},[134],{"categories":1033},[],{"categories":1035},[],{"categories":1037},[],{"categories":1039},[186],{"categories":1041},[179],{"categories":1043},[155],{"categories":1045},[176],{"categories":1047},[],{"categories":1049},[134],{"categories":1051},[134],{"categories":1053},[],{"categories":1055},[],{"categories":1057},[137],{"categories":1059},[134],{"categories":1061},[131],{"categories":1063},[],{"categories":1065},[128],{"categories":1067},[134],{"categories":1069},[128],{"categories":1071},[134],{"categories":1073},[186],{"categories":1075},[193],{"categories":1077},[134,176],{"categories":1079},[155],{"categories":1081},[176],{"categories":1083},[],{"categories":1085},[101],{"categories":1087},[176],{"categories":1089},[137],{"categories":1091},[],{"categories":1093},[],{"categories":1095},[],{"categories":1097},[],{"categories":1099},[186],{"categories":1101},[137],{"categories":1103},[137],{"categories":1105},[101],{"categories":1107},[134],{"categories":1109},[134],{"categories":1111},[134],{"categories":1113},[],{"categories":1115},[176],{"categories":1117},[],{"categories":1119},[],{"categories":1121},[137],{"categories":1123},[],{"categories":1125},[],{"categories":1127},[193],{"categories":1129},[193],{"categories":1131},[137],{"categories":1133},[],{"categories":1135},[134],{"categories":1137},[134],{"categories":1139},[186],{"categories":1141},[176],{"categories":1143},[176],{"categories":1145},[137],{"categories":1147},[128],{"categories":1149},[134],{"categories":1151},[176],{"categories":1153},[176],{"categories":1155},[137],{"categories":1157},[137],{"categories":1159},[134],{"categories":1161},[],{"categories":1163},[],{"categories":1165},[134],{"categories":1167},[137],{"categories":1169},[155],{"categories":1171},[186],{"categories":1173},[128],{"categories":1175},[134],{"categories":1177},[],{"categories":1179},[137],{"categories":1181},[137],{"categories":1183},[],{"categories":1185},[128],{"categories":1187},[134],{"categories":1189},[128],{"categories":1191},[128],{"categories":1193},[],{"categories":1195},[],{"categories":1197},[137],{"categories":1199},[137],{"categories":1201},[134],{"categories":1203},[134],{"categories":1205},[155],{"categories":1207},[179],{"categories":1209},[140],{"categories":1211},[155],{"categories":1213},[176],{"categories":1215},[],{"categories":1217},[155],{"categories":1219},[],{"categories":1221},[],{"categories":1223},[],{"categories":1225},[],{"categories":1227},[186],{"categories":1229},[179],{"categories":1231},[],{"categories":1233},[134],{"categories":1235},[134],{"categories":1237},[179],{"categories":1239},[186],{"categories":1241},[],{"categories":1243},[],{"categories":1245},[137],{"categories":1247},[155],{"categories":1249},[155],{"categories":1251},[137],{"categories":1253},[128],{"categories":1255},[134,101],{"categories":1257},[],{"categories":1259},[176],{"categories":1261},[128],{"categories":1263},[137],{"categories":1265},[176],{"categories":1267},[],{"categories":1269},[137],{"categories":1271},[137],{"categories":1273},[134],{"categories":1275},[193],{"categories":1277},[186],{"categories":1279},[176],{"categories":1281},[],{"categories":1283},[137],{"categories":1285},[134],{"categories":1287},[137],{"categories":1289},[137],{"categories":1291},[137],{"categories":1293},[193],{"categories":1295},[137],{"categories":1297},[134],{"categories":1299},[],{"categories":1301},[193],{"categories":1303},[155],{"categories":1305},[137],{"categories":1307},[],{"categories":1309},[],{"categories":1311},[134],{"categories":1313},[137],{"categories":1315},[155],{"categories":1317},[137],{"categories":1319},[],{"categories":1321},[],{"categories":1323},[],{"categories":1325},[137],{"categories":1327},[],{"categories":1329},[],{"categories":1331},[179],{"categories":1333},[134],{"categories":1335},[179],{"categories":1337},[155],{"categories":1339},[134],{"categories":1341},[134],{"categories":1343},[137],{"categories":1345},[134],{"categories":1347},[],{"categories":1349},[],{"categories":1351},[101],{"categories":1353},[],{"categories":1355},[],{"categories":1357},[128],{"categories":1359},[],{"categories":1361},[],{"categories":1363},[],{"categories":1365},[],{"categories":1367},[186],{"categories":1369},[155],{"categories":1371},[193],{"categories":1373},[131],{"categories":1375},[134],{"categories":1377},[134],{"categories":1379},[131],{"categories":1381},[],{"categories":1383},[176],{"categories":1385},[137],{"categories":1387},[131],{"categories":1389},[134],{"categories":1391},[134],{"categories":1393},[128],{"categories":1395},[],{"categories":1397},[128],{"categories":1399},[134],{"categories":1401},[193],{"categories":1403},[137],{"categories":1405},[155],{"categories":1407},[131],{"categories":1409},[134],{"categories":1411},[137],{"categories":1413},[],{"categories":1415},[134],{"categories":1417},[128],{"categories":1419},[134],{"categories":1421},[],{"categories":1423},[155],{"categories":1425},[134],{"categories":1427},[],{"categories":1429},[131],{"categories":1431},[134],{"categories":1433},[],{"categories":1435},[],{"categories":1437},[],{"categories":1439},[134],{"categories":1441},[],{"categories":1443},[101],{"categories":1445},[134],{"categories":1447},[],{"categories":1449},[134],{"categories":1451},[134],{"categories":1453},[134],{"categories":1455},[134,101],{"categories":1457},[134],{"categories":1459},[134],{"categories":1461},[176],{"categories":1463},[137],{"categories":1465},[],{"categories":1467},[137],{"categories":1469},[134],{"categories":1471},[134],{"categories":1473},[134],{"categories":1475},[128],{"categories":1477},[128],{"categories":1479},[186],{"categories":1481},[176],{"categories":1483},[137],{"categories":1485},[],{"categories":1487},[134],{"categories":1489},[155],{"categories":1491},[134],{"categories":1493},[131],{"categories":1495},[],{"categories":1497},[101],{"categories":1499},[176],{"categories":1501},[176],{"categories":1503},[137],{"categories":1505},[155],{"categories":1507},[137],{"categories":1509},[134],{"categories":1511},[],{"categories":1513},[134],{"categories":1515},[],{"categories":1517},[],{"categories":1519},[134],{"categories":1521},[134],{"categories":1523},[134],{"categories":1525},[137],{"categories":1527},[134],{"categories":1529},[],{"categories":1531},[179],{"categories":1533},[137],{"categories":1535},[],{"categories":1537},[],{"categories":1539},[134],{"categories":1541},[155],{"categories":1543},[],{"categories":1545},[176],{"categories":1547},[101],{"categories":1549},[155],{"categories":1551},[186],{"categories":1553},[186],{"categories":1555},[155],{"categories":1557},[155],{"categories":1559},[101],{"categories":1561},[],{"categories":1563},[155],{"categories":1565},[134],{"categories":1567},[128],{"categories":1569},[155],{"categories":1571},[],{"categories":1573},[179],{"categories":1575},[155],{"categories":1577},[186],{"categories":1579},[155],{"categories":1581},[101],{"categories":1583},[134],{"categories":1585},[134],{"categories":1587},[],{"categories":1589},[131],{"categories":1591},[],{"categories":1593},[],{"categories":1595},[134],{"categories":1597},[134],{"categories":1599},[134],{"categories":1601},[134],{"categories":1603},[],{"categories":1605},[179],{"categories":1607},[128],{"categories":1609},[],{"categories":1611},[134],{"categories":1613},[134],{"categories":1615},[101],{"categories":1617},[101],{"categories":1619},[],{"categories":1621},[137],{"categories":1623},[155],{"categories":1625},[155],{"categories":1627},[134],{"categories":1629},[137],{"categories":1631},[],{"categories":1633},[176],{"categories":1635},[134],{"categories":1637},[134],{"categories":1639},[],{"categories":1641},[],{"categories":1643},[101],{"categories":1645},[134],{"categories":1647},[186],{"categories":1649},[131],{"categories":1651},[134],{"categories":1653},[],{"categories":1655},[137],{"categories":1657},[128],{"categories":1659},[128],{"categories":1661},[],{"categories":1663},[134],{"categories":1665},[176],{"categories":1667},[137],{"categories":1669},[],{"categories":1671},[134],{"categories":1673},[134],{"categories":1675},[137],{"categories":1677},[],{"categories":1679},[137],{"categories":1681},[186],{"categories":1683},[],{"categories":1685},[134],{"categories":1687},[],{"categories":1689},[134],{"categories":1691},[],{"categories":1693},[134],{"categories":1695},[134],{"categories":1697},[],{"categories":1699},[134],{"categories":1701},[155],{"categories":1703},[134],{"categories":1705},[134],{"categories":1707},[128],{"categories":1709},[134],{"categories":1711},[155],{"categories":1713},[137],{"categories":1715},[],{"categories":1717},[134],{"categories":1719},[193],{"categories":1721},[],{"categories":1723},[],{"categories":1725},[],{"categories":1727},[128],{"categories":1729},[155],{"categories":1731},[137],{"categories":1733},[134],{"categories":1735},[176],{"categories":1737},[137],{"categories":1739},[],{"categories":1741},[137],{"categories":1743},[],{"categories":1745},[134],{"categories":1747},[137],{"categories":1749},[134],{"categories":1751},[],{"categories":1753},[134],{"categories":1755},[134],{"categories":1757},[155],{"categories":1759},[176],{"categories":1761},[137],{"categories":1763},[176],{"categories":1765},[131],{"categories":1767},[],{"categories":1769},[],{"categories":1771},[134],{"categories":1773},[128],{"categories":1775},[155],{"categories":1777},[],{"categories":1779},[],{"categories":1781},[186],{"categories":1783},[176],{"categories":1785},[],{"categories":1787},[134],{"categories":1789},[],{"categories":1791},[193],{"categories":1793},[134],{"categories":1795},[101],{"categories":1797},[186],{"categories":1799},[],{"categories":1801},[137],{"categories":1803},[134],{"categories":1805},[137],{"categories":1807},[137],{"categories":1809},[134],{"categories":1811},[],{"categories":1813},[128],{"categories":1815},[134],{"categories":1817},[131],{"categories":1819},[186],{"categories":1821},[176],{"categories":1823},[],{"categories":1825},[],{"categories":1827},[],{"categories":1829},[137],{"categories":1831},[176],{"categories":1833},[155],{"categories":1835},[134],{"categories":1837},[155],{"categories":1839},[176],{"categories":1841},[],{"categories":1843},[176],{"categories":1845},[155],{"categories":1847},[131],{"categories":1849},[134],{"categories":1851},[155],{"categories":1853},[193],{"categories":1855},[],{"categories":1857},[],{"categories":1859},[179],{"categories":1861},[134,186],{"categories":1863},[155],{"categories":1865},[134],{"categories":1867},[137],{"categories":1869},[137],{"categories":1871},[134],{"categories":1873},[],{"categories":1875},[186],{"categories":1877},[134],{"categories":1879},[179],{"categories":1881},[137],{"categories":1883},[193],{"categories":1885},[101],{"categories":1887},[],{"categories":1889},[128],{"categories":1891},[137],{"categories":1893},[137],{"categories":1895},[186],{"categories":1897},[134],{"categories":1899},[134],{"categories":1901},[],{"categories":1903},[],{"categories":1905},[],{"categories":1907},[101],{"categories":1909},[155],{"categories":1911},[134],{"categories":1913},[134],{"categories":1915},[134],{"categories":1917},[],{"categories":1919},[179],{"categories":1921},[131],{"categories":1923},[],{"categories":1925},[137],{"categories":1927},[101],{"categories":1929},[],{"categories":1931},[176],{"categories":1933},[176],{"categories":1935},[],{"categories":1937},[186],{"categories":1939},[176],{"categories":1941},[134],{"categories":1943},[],{"categories":1945},[155],{"categories":1947},[134],{"categories":1949},[176],{"categories":1951},[137],{"categories":1953},[155],{"categories":1955},[],{"categories":1957},[137],{"categories":1959},[176],{"categories":1961},[134],{"categories":1963},[],{"categories":1965},[134],{"categories":1967},[134],{"categories":1969},[101],{"categories":1971},[155],{"categories":1973},[179],{"categories":1975},[179],{"categories":1977},[],{"categories":1979},[],{"categories":1981},[],{"categories":1983},[137],{"categories":1985},[186],{"categories":1987},[186],{"categories":1989},[],{"categories":1991},[],{"categories":1993},[134],{"categories":1995},[],{"categories":1997},[137],{"categories":1999},[134],{"categories":2001},[],{"categories":2003},[134],{"categories":2005},[131],{"categories":2007},[134],{"categories":2009},[193],{"categories":2011},[137],{"categories":2013},[134],{"categories":2015},[186],{"categories":2017},[155],{"categories":2019},[137],{"categories":2021},[],{"categories":2023},[155],{"categories":2025},[137],{"categories":2027},[137],{"categories":2029},[],{"categories":2031},[131],{"categories":2033},[137],{"categories":2035},[],{"categories":2037},[134],{"categories":2039},[128],{"categories":2041},[155],{"categories":2043},[101],{"categories":2045},[137],{"categories":2047},[137],{"categories":2049},[128],{"categories":2051},[134],{"categories":2053},[],{"categories":2055},[],{"categories":2057},[176],{"categories":2059},[134,131],{"categories":2061},[],{"categories":2063},[128],{"categories":2065},[179],{"categories":2067},[134],{"categories":2069},[186],{"categories":2071},[134],{"categories":2073},[137],{"categories":2075},[134],{"categories":2077},[134],{"categories":2079},[155],{"categories":2081},[137],{"categories":2083},[],{"categories":2085},[],{"categories":2087},[137],{"categories":2089},[134],{"categories":2091},[101],{"categories":2093},[],{"categories":2095},[134],{"categories":2097},[137],{"categories":2099},[],{"categories":2101},[134],{"categories":2103},[193],{"categories":2105},[179],{"categories":2107},[137],{"categories":2109},[134],{"categories":2111},[101],{"categories":2113},[],{"categories":2115},[134],{"categories":2117},[193],{"categories":2119},[176],{"categories":2121},[134],{"categories":2123},[],{"categories":2125},[193],{"categories":2127},[155],{"categories":2129},[134],{"categories":2131},[134],{"categories":2133},[128],{"categories":2135},[],{"categories":2137},[],{"categories":2139},[176],{"categories":2141},[134],{"categories":2143},[179],{"categories":2145},[193],{"categories":2147},[193],{"categories":2149},[155],{"categories":2151},[],{"categories":2153},[],{"categories":2155},[134],{"categories":2157},[],{"categories":2159},[134,186],{"categories":2161},[155],{"categories":2163},[137],{"categories":2165},[186],{"categories":2167},[134],{"categories":2169},[128],{"categories":2171},[],{"categories":2173},[],{"categories":2175},[128],{"categories":2177},[193],{"categories":2179},[134],{"categories":2181},[],{"categories":2183},[176,134],{"categories":2185},[101],{"categories":2187},[128],{"categories":2189},[],{"categories":2191},[131],{"categories":2193},[131],{"categories":2195},[134],{"categories":2197},[186],{"categories":2199},[137],{"categories":2201},[155],{"categories":2203},[193],{"categories":2205},[176],{"categories":2207},[134],{"categories":2209},[134],{"categories":2211},[134],{"categories":2213},[128],{"categories":2215},[134],{"categories":2217},[137],{"categories":2219},[155],{"categories":2221},[],{"categories":2223},[],{"categories":2225},[179],{"categories":2227},[186],{"categories":2229},[134],{"categories":2231},[176],{"categories":2233},[179],{"categories":2235},[134],{"categories":2237},[134],{"categories":2239},[137],{"categories":2241},[137],{"categories":2243},[134,131],{"categories":2245},[],{"categories":2247},[176],{"categories":2249},[],{"categories":2251},[134],{"categories":2253},[155],{"categories":2255},[128],{"categories":2257},[128],{"categories":2259},[137],{"categories":2261},[134],{"categories":2263},[131],{"categories":2265},[186],{"categories":2267},[193],{"categories":2269},[],{"categories":2271},[155],{"categories":2273},[134],{"categories":2275},[134],{"categories":2277},[155],{"categories":2279},[186],{"categories":2281},[134],{"categories":2283},[137],{"categories":2285},[155],{"categories":2287},[134],{"categories":2289},[176],{"categories":2291},[134],{"categories":2293},[134],{"categories":2295},[101],{"categories":2297},[140],{"categories":2299},[137],{"categories":2301},[134],{"categories":2303},[155],{"categories":2305},[137],{"categories":2307},[193],{"categories":2309},[134],{"categories":2311},[],{"categories":2313},[134],{"categories":2315},[],{"categories":2317},[],{"categories":2319},[],{"categories":2321},[131],{"categories":2323},[134],{"categories":2325},[137],{"categories":2327},[155],{"categories":2329},[155],{"categories":2331},[155],{"categories":2333},[155],{"categories":2335},[],{"categories":2337},[128],{"categories":2339},[137],{"categories":2341},[155],{"categories":2343},[128],{"categories":2345},[137],{"categories":2347},[134],{"categories":2349},[134,137],{"categories":2351},[137],{"categories":2353},[101],{"categories":2355},[155],{"categories":2357},[155],{"categories":2359},[137],{"categories":2361},[134],{"categories":2363},[],{"categories":2365},[155],{"categories":2367},[193],{"categories":2369},[128],{"categories":2371},[134],{"categories":2373},[134],{"categories":2375},[],{"categories":2377},[186],{"categories":2379},[],{"categories":2381},[128],{"categories":2383},[137],{"categories":2385},[155],{"categories":2387},[134],{"categories":2389},[155],{"categories":2391},[128],{"categories":2393},[155],{"categories":2395},[155],{"categories":2397},[],{"categories":2399},[131],{"categories":2401},[137],{"categories":2403},[155],{"categories":2405},[155],{"categories":2407},[155],{"categories":2409},[155],{"categories":2411},[155],{"categories":2413},[155],{"categories":2415},[155],{"categories":2417},[155],{"categories":2419},[155],{"categories":2421},[155],{"categories":2423},[179],{"categories":2425},[128],{"categories":2427},[134],{"categories":2429},[134],{"categories":2431},[],{"categories":2433},[134,128],{"categories":2435},[],{"categories":2437},[137],{"categories":2439},[155],{"categories":2441},[137],{"categories":2443},[134],{"categories":2445},[134],{"categories":2447},[134],{"categories":2449},[134],{"categories":2451},[134],{"categories":2453},[137],{"categories":2455},[131],{"categories":2457},[176],{"categories":2459},[155],{"categories":2461},[134],{"categories":2463},[],{"categories":2465},[],{"categories":2467},[137],{"categories":2469},[176],{"categories":2471},[134],{"categories":2473},[],{"categories":2475},[],{"categories":2477},[193],{"categories":2479},[134],{"categories":2481},[],{"categories":2483},[],{"categories":2485},[128],{"categories":2487},[131],{"categories":2489},[134],{"categories":2491},[131],{"categories":2493},[176],{"categories":2495},[],{"categories":2497},[155],{"categories":2499},[],{"categories":2501},[176],{"categories":2503},[134],{"categories":2505},[193],{"categories":2507},[],{"categories":2509},[193],{"categories":2511},[],{"categories":2513},[],{"categories":2515},[137],{"categories":2517},[],{"categories":2519},[131],{"categories":2521},[128],{"categories":2523},[176],{"categories":2525},[186],{"categories":2527},[],{"categories":2529},[],{"categories":2531},[134],{"categories":2533},[128],{"categories":2535},[193],{"categories":2537},[],{"categories":2539},[137],{"categories":2541},[137],{"categories":2543},[155],{"categories":2545},[134],{"categories":2547},[137],{"categories":2549},[134],{"categories":2551},[137],{"categories":2553},[134],{"categories":2555},[140],{"categories":2557},[155],{"categories":2559},[],{"categories":2561},[193],{"categories":2563},[186],{"categories":2565},[137],{"categories":2567},[],{"categories":2569},[134],{"categories":2571},[137],{"categories":2573},[131],{"categories":2575},[128],{"categories":2577},[134],{"categories":2579},[176],{"categories":2581},[186],{"categories":2583},[186],{"categories":2585},[134],{"categories":2587},[179],{"categories":2589},[134],{"categories":2591},[137],{"categories":2593},[131],{"categories":2595},[137],{"categories":2597},[134],{"categories":2599},[134],{"categories":2601},[137],{"categories":2603},[155],{"categories":2605},[],{"categories":2607},[128],{"categories":2609},[134],{"categories":2611},[137],{"categories":2613},[134],{"categories":2615},[134],{"categories":2617},[],{"categories":2619},[176],{"categories":2621},[131],{"categories":2623},[155],{"categories":2625},[134],{"categories":2627},[134],{"categories":2629},[176],{"categories":2631},[193],{"categories":2633},[179],{"categories":2635},[134],{"categories":2637},[155],{"categories":2639},[134],{"categories":2641},[137],{"categories":2643},[101],{"categories":2645},[134],{"categories":2647},[137],{"categories":2649},[179],{"categories":2651},[],{"categories":2653},[137],{"categories":2655},[186],{"categories":2657},[176],{"categories":2659},[134],{"categories":2661},[128],{"categories":2663},[131],{"categories":2665},[186],{"categories":2667},[],{"categories":2669},[137],{"categories":2671},[134],{"categories":2673},[],{"categories":2675},[155],{"categories":2677},[],{"categories":2679},[155],{"categories":2681},[134],{"categories":2683},[137],{"categories":2685},[137],{"categories":2687},[137],{"categories":2689},[],{"categories":2691},[],{"categories":2693},[134],{"categories":2695},[134],{"categories":2697},[],{"categories":2699},[176],{"categories":2701},[137],{"categories":2703},[193],{"categories":2705},[128],{"categories":2707},[],{"categories":2709},[],{"categories":2711},[155],{"categories":2713},[186],{"categories":2715},[134],{"categories":2717},[134],{"categories":2719},[134],{"categories":2721},[186],{"categories":2723},[155],{"categories":2725},[176],{"categories":2727},[134],{"categories":2729},[134],{"categories":2731},[134],{"categories":2733},[155],{"categories":2735},[134],{"categories":2737},[155],{"categories":2739},[137],{"categories":2741},[137],{"categories":2743},[186],{"categories":2745},[137],{"categories":2747},[134],{"categories":2749},[186],{"categories":2751},[176],{"categories":2753},[],{"categories":2755},[137],{"categories":2757},[],{"categories":2759},[],{"categories":2761},[],{"categories":2763},[131],{"categories":2765},[134],{"categories":2767},[137],{"categories":2769},[128],{"categories":2771},[137],{"categories":2773},[193],{"categories":2775},[],{"categories":2777},[137],{"categories":2779},[],{"categories":2781},[128],{"categories":2783},[137],{"categories":2785},[],{"categories":2787},[137],{"categories":2789},[134],{"categories":2791},[155],{"categories":2793},[134],{"categories":2795},[137],{"categories":2797},[155],{"categories":2799},[137],{"categories":2801},[186],{"categories":2803},[176],{"categories":2805},[128],{"categories":2807},[],{"categories":2809},[137],{"categories":2811},[176],{"categories":2813},[101],{"categories":2815},[155],{"categories":2817},[134],{"categories":2819},[176],{"categories":2821},[128],{"categories":2823},[],{"categories":2825},[137],{"categories":2827},[137],{"categories":2829},[134],{"categories":2831},[],{"categories":2833},[137],{"categories":2835},[140],{"categories":2837},[155],{"categories":2839},[137],{"categories":2841},[131],{"categories":2843},[],{"categories":2845},[134],{"categories":2847},[140],{"categories":2849},[134],{"categories":2851},[137],{"categories":2853},[155],{"categories":2855},[128],{"categories":2857},[101],{"categories":2859},[134],{"categories":2861},[134],{"categories":2863},[134],{"categories":2865},[155],{"categories":2867},[131],{"categories":2869},[134],{"categories":2871},[176],{"categories":2873},[155],{"categories":2875},[101],{"categories":2877},[134],{"categories":2879},[],{"categories":2881},[],{"categories":2883},[101],{"categories":2885},[179],{"categories":2887},[137],{"categories":2889},[137],{"categories":2891},[155],{"categories":2893},[134],{"categories":2895},[128],{"categories":2897},[176],{"categories":2899},[137],{"categories":2901},[134],{"categories":2903},[193],{"categories":2905},[134],{"categories":2907},[137],{"categories":2909},[],{"categories":2911},[134],{"categories":2913},[134],{"categories":2915},[155],{"categories":2917},[128],{"categories":2919},[],{"categories":2921},[134],{"categories":2923},[134],{"categories":2925},[186],{"categories":2927},[176],{"categories":2929},[134,137],{"categories":2931},[193,131],{"categories":2933},[134],{"categories":2935},[],{"categories":2937},[137],{"categories":2939},[],{"categories":2941},[186],{"categories":2943},[134],{"categories":2945},[155],{"categories":2947},[],{"categories":2949},[137],{"categories":2951},[],{"categories":2953},[176],{"categories":2955},[137],{"categories":2957},[128],{"categories":2959},[137],{"categories":2961},[134],{"categories":2963},[101],{"categories":2965},[193],{"categories":2967},[131],{"categories":2969},[131],{"categories":2971},[128],{"categories":2973},[128],{"categories":2975},[134],{"categories":2977},[137],{"categories":2979},[134],{"categories":2981},[134],{"categories":2983},[128],{"categories":2985},[134],{"categories":2987},[193],{"categories":2989},[155],{"categories":2991},[134],{"categories":2993},[137],{"categories":2995},[134],{"categories":2997},[],{"categories":2999},[186],{"categories":3001},[],{"categories":3003},[137],{"categories":3005},[128],{"categories":3007},[],{"categories":3009},[101],{"categories":3011},[134],{"categories":3013},[],{"categories":3015},[155],{"categories":3017},[137],{"categories":3019},[186],{"categories":3021},[134],{"categories":3023},[137],{"categories":3025},[186],{"categories":3027},[137],{"categories":3029},[155],{"categories":3031},[128],{"categories":3033},[155],{"categories":3035},[186],{"categories":3037},[134],{"categories":3039},[176],{"categories":3041},[134],{"categories":3043},[134],{"categories":3045},[134],{"categories":3047},[134],{"categories":3049},[137],{"categories":3051},[134],{"categories":3053},[137],{"categories":3055},[134],{"categories":3057},[128],{"categories":3059},[134],{"categories":3061},[137],{"categories":3063},[176],{"categories":3065},[128],{"categories":3067},[137],{"categories":3069},[176],{"categories":3071},[],{"categories":3073},[134],{"categories":3075},[134],{"categories":3077},[186],{"categories":3079},[],{"categories":3081},[137],{"categories":3083},[193],{"categories":3085},[134],{"categories":3087},[155],{"categories":3089},[193],{"categories":3091},[137],{"categories":3093},[131],{"categories":3095},[131],{"categories":3097},[134],{"categories":3099},[128],{"categories":3101},[],{"categories":3103},[134],{"categories":3105},[],{"categories":3107},[128],{"categories":3109},[134],{"categories":3111},[137],{"categories":3113},[137],{"categories":3115},[],{"categories":3117},[186],{"categories":3119},[186],{"categories":3121},[193],{"categories":3123},[176],{"categories":3125},[],{"categories":3127},[134],{"categories":3129},[128],{"categories":3131},[134],{"categories":3133},[186],{"categories":3135},[128],{"categories":3137},[155],{"categories":3139},[155],{"categories":3141},[],{"categories":3143},[155],{"categories":3145},[137],{"categories":3147},[176],{"categories":3149},[179],{"categories":3151},[134],{"categories":3153},[],{"categories":3155},[155],{"categories":3157},[186],{"categories":3159},[131],{"categories":3161},[134],{"categories":3163},[128],{"categories":3165},[101],{"categories":3167},[128],{"categories":3169},[],{"categories":3171},[],{"categories":3173},[155],{"categories":3175},[],{"categories":3177},[137],{"categories":3179},[137],{"categories":3181},[137],{"categories":3183},[],{"categories":3185},[134],{"categories":3187},[],{"categories":3189},[155],{"categories":3191},[128],{"categories":3193},[176],{"categories":3195},[134],{"categories":3197},[155],{"categories":3199},[155],{"categories":3201},[],{"categories":3203},[155],{"categories":3205},[128],{"categories":3207},[134],{"categories":3209},[],{"categories":3211},[137],{"categories":3213},[137],{"categories":3215},[128],{"categories":3217},[],{"categories":3219},[],{"categories":3221},[],{"categories":3223},[176],{"categories":3225},[137],{"categories":3227},[134],{"categories":3229},[],{"categories":3231},[],{"categories":3233},[],{"categories":3235},[176],{"categories":3237},[],{"categories":3239},[128],{"categories":3241},[],{"categories":3243},[],{"categories":3245},[176],{"categories":3247},[134],{"categories":3249},[155],{"categories":3251},[],{"categories":3253},[193],{"categories":3255},[155],{"categories":3257},[193],{"categories":3259},[134],{"categories":3261},[],{"categories":3263},[],{"categories":3265},[137],{"categories":3267},[],{"categories":3269},[],{"categories":3271},[137],{"categories":3273},[134],{"categories":3275},[],{"categories":3277},[137],{"categories":3279},[155],{"categories":3281},[193],{"categories":3283},[179],{"categories":3285},[137],{"categories":3287},[137],{"categories":3289},[],{"categories":3291},[],{"categories":3293},[],{"categories":3295},[155],{"categories":3297},[],{"categories":3299},[],{"categories":3301},[176],{"categories":3303},[128],{"categories":3305},[],{"categories":3307},[131],{"categories":3309},[193],{"categories":3311},[134],{"categories":3313},[186],{"categories":3315},[128],{"categories":3317},[179],{"categories":3319},[131],{"categories":3321},[186],{"categories":3323},[],{"categories":3325},[],{"categories":3327},[137],{"categories":3329},[128],{"categories":3331},[176],{"categories":3333},[128],{"categories":3335},[137],{"categories":3337},[101],{"categories":3339},[137],{"categories":3341},[],{"categories":3343},[134],{"categories":3345},[155],{"categories":3347},[186],{"categories":3349},[],{"categories":3351},[176],{"categories":3353},[155],{"categories":3355},[128],{"categories":3357},[137],{"categories":3359},[134],{"categories":3361},[131],{"categories":3363},[137,101],{"categories":3365},[137],{"categories":3367},[186],{"categories":3369},[134],{"categories":3371},[179],{"categories":3373},[193],{"categories":3375},[137],{"categories":3377},[],{"categories":3379},[137],{"categories":3381},[134],{"categories":3383},[131],{"categories":3385},[],{"categories":3387},[],{"categories":3389},[134],{"categories":3391},[179],{"categories":3393},[134],{"categories":3395},[],{"categories":3397},[155],{"categories":3399},[],{"categories":3401},[155],{"categories":3403},[186],{"categories":3405},[137],{"categories":3407},[134],{"categories":3409},[193],{"categories":3411},[186],{"categories":3413},[],{"categories":3415},[155],{"categories":3417},[134],{"categories":3419},[],{"categories":3421},[134],{"categories":3423},[137],{"categories":3425},[134],{"categories":3427},[137],{"categories":3429},[134],{"categories":3431},[134],{"categories":3433},[134],{"categories":3435},[134],{"categories":3437},[131],{"categories":3439},[],{"categories":3441},[140],{"categories":3443},[155],{"categories":3445},[134],{"categories":3447},[],{"categories":3449},[186],{"categories":3451},[134],{"categories":3453},[134],{"categories":3455},[137],{"categories":3457},[155],{"categories":3459},[134],{"categories":3461},[134],{"categories":3463},[131],{"categories":3465},[137],{"categories":3467},[176],{"categories":3469},[],{"categories":3471},[179],{"categories":3473},[134],{"categories":3475},[],{"categories":3477},[155],{"categories":3479},[193],{"categories":3481},[],{"categories":3483},[],{"categories":3485},[155],{"categories":3487},[155],{"categories":3489},[193],{"categories":3491},[128],{"categories":3493},[137],{"categories":3495},[137],{"categories":3497},[134],{"categories":3499},[131],{"categories":3501},[],{"categories":3503},[],{"categories":3505},[155],{"categories":3507},[179],{"categories":3509},[186],{"categories":3511},[137],{"categories":3513},[176],{"categories":3515},[179],{"categories":3517},[179],{"categories":3519},[],{"categories":3521},[155],{"categories":3523},[134],{"categories":3525},[134],{"categories":3527},[186],{"categories":3529},[],{"categories":3531},[155],{"categories":3533},[155],{"categories":3535},[155],{"categories":3537},[],{"categories":3539},[137],{"categories":3541},[134],{"categories":3543},[],{"categories":3545},[128],{"categories":3547},[131],{"categories":3549},[],{"categories":3551},[134],{"categories":3553},[134],{"categories":3555},[],{"categories":3557},[186],{"categories":3559},[],{"categories":3561},[],{"categories":3563},[],{"categories":3565},[],{"categories":3567},[134],{"categories":3569},[155],{"categories":3571},[],{"categories":3573},[],{"categories":3575},[134],{"categories":3577},[134],{"categories":3579},[134],{"categories":3581},[179],{"categories":3583},[134],{"categories":3585},[179],{"categories":3587},[],{"categories":3589},[179],{"categories":3591},[179],{"categories":3593},[101],{"categories":3595},[137],{"categories":3597},[186],{"categories":3599},[],{"categories":3601},[],{"categories":3603},[179],{"categories":3605},[186],{"categories":3607},[186],{"categories":3609},[186],{"categories":3611},[],{"categories":3613},[128],{"categories":3615},[186],{"categories":3617},[186],{"categories":3619},[128],{"categories":3621},[186],{"categories":3623},[131],{"categories":3625},[186],{"categories":3627},[186],{"categories":3629},[186],{"categories":3631},[179],{"categories":3633},[155],{"categories":3635},[155],{"categories":3637},[134],{"categories":3639},[186],{"categories":3641},[179],{"categories":3643},[101],{"categories":3645},[179],{"categories":3647},[179],{"categories":3649},[179],{"categories":3651},[],{"categories":3653},[131],{"categories":3655},[],{"categories":3657},[101],{"categories":3659},[186],{"categories":3661},[186],{"categories":3663},[186],{"categories":3665},[137],{"categories":3667},[155,131],{"categories":3669},[179],{"categories":3671},[],{"categories":3673},[],{"categories":3675},[179],{"categories":3677},[],{"categories":3679},[179],{"categories":3681},[155],{"categories":3683},[137],{"categories":3685},[],{"categories":3687},[186],{"categories":3689},[134],{"categories":3691},[176],{"categories":3693},[],{"categories":3695},[134],{"categories":3697},[],{"categories":3699},[155],{"categories":3701},[128],{"categories":3703},[179],{"categories":3705},[],{"categories":3707},[186],{"categories":3709},[155],[3711,3792,4191,4353],{"id":3712,"title":3713,"ai":3714,"body":3719,"categories":3760,"created_at":102,"date_modified":102,"description":94,"extension":104,"faq":102,"featured":105,"kicker_label":102,"meta":3761,"navigation":107,"path":3778,"published_at":3779,"question":102,"scraped_at":3780,"seo":3781,"sitemap":3782,"source_id":3783,"source_name":3784,"source_type":3785,"source_url":3786,"stem":3787,"tags":3788,"thumbnail_url":102,"tldr":3789,"tweet":102,"unknown_tags":3790,"__hash__":3791},"summaries\u002Fsummaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary.md","GitHub RCE via Single Git Push X-Stat Injection",{"provider":7,"model":8,"input_tokens":3715,"output_tokens":3716,"processing_time_ms":3717,"cost_usd":3718},3870,2355,26057,0.001929,{"type":14,"value":3720,"toc":3755},[3721,3725,3732,3735,3739,3742,3745,3749],[17,3722,3724],{"id":3723},"exploit-mechanism-x-stat-injection-in-internal-git-protocol","Exploit Mechanism: X-Stat Injection in Internal Git Protocol",[22,3726,3727,3728,3731],{},"GitHub's internal git protocol processes push requests with an X-Stat field that's vulnerable to injection attacks. An authenticated attacker crafts a malicious git push that injects payloads into this field, bypassing normal access controls. This triggers remote code execution (RCE) directly on GitHub.com infrastructure and GitHub Enterprise Server (GHES) instances. No special tools needed—just a standard ",[47,3729,3730],{},"git push"," command developers run daily, highlighting risks in routine operations.",[22,3733,3734],{},"Key attack vector: The protocol doesn't properly sanitize or validate X-Stat headers during push handling, allowing arbitrary code injection. Builders should audit custom git hooks and protocol extensions for similar field injection flaws, as they mirror this path.",[17,3736,3738],{"id":3737},"impact-widespread-repo-access-and-high-severity","Impact: Widespread Repo Access and High Severity",[22,3740,3741],{},"RCE grants attackers control over GitHub servers, enabling access to millions of repositories beyond the attacker's permissions. This compromises private code, secrets, and deployment pipelines connected to repos. Tracked as CVE-2026-3854 with High severity, it underscores how a single push can escalate privileges across the platform.",[22,3743,3744],{},"Trade-offs in GitHub's design: Optimized for speed in high-volume pushes trades off stricter input validation, a common pitfall in distributed version control systems. Mitigate by enabling strict protocol enforcement and monitoring anomalous push patterns in your workflows.",[17,3746,3748],{"id":3747},"lessons-for-secure-git-workflows","Lessons for Secure Git Workflows",[22,3750,3751,3752,3754],{},"Everyday ",[47,3753,3730],{}," isn't bulletproof—internal protocol flaws expose production systems. Scan for field injections in git server configs, use authenticated-only pushes where possible, and integrate vulnerability alerts like CVE feeds into CI\u002FCD. For GHES users, patch immediately and review audit logs for suspicious X-Stat activity. This vuln proves even battle-tested platforms like GitHub need ongoing protocol hardening.",{"title":94,"searchDepth":95,"depth":95,"links":3756},[3757,3758,3759],{"id":3723,"depth":95,"text":3724},{"id":3737,"depth":95,"text":3738},{"id":3747,"depth":95,"text":3748},[101],{"content_references":3762,"triage":3773},[3763,3768],{"type":3764,"title":3765,"url":3766,"context":3767},"tool","GitHub","https:\u002F\u002Fgithub.com\u002F","mentioned",{"type":3769,"title":3770,"url":3771,"context":3772},"other","CVE-2026-3854","https:\u002F\u002Fwww.cve.org\u002Fcverecord?id=CVE-2026-3854","cited",{"relevance":3774,"novelty":3774,"quality":3775,"actionability":3775,"composite":3776,"reasoning":3777},3,4,3.45,"Category: DevOps. The article discusses a specific vulnerability in GitHub's internal git protocol, which is relevant to DevOps practices. It provides actionable insights on securing git workflows, such as auditing custom git hooks and enabling strict protocol enforcement, which can help builders mitigate similar risks.","\u002Fsummaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary","2026-04-29 01:55:02","2026-05-03 17:00:51",{"title":3713,"description":94},{"loc":3778},"3e8ba433c0dc3549","Generative AI","article","https:\u002F\u002Fgenerativeai.pub\u002Fit-only-took-one-git-push-to-access-millions-of-github-repos-21d055d9c774?source=rss----440100e76000---4","summaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary",[119,120],"Authenticated users exploited X-Stat field injection in GitHub's internal git protocol for RCE on GitHub.com and GHES using a standard git push, enabling access to millions of repos (CVE-2026-3854, High severity).",[],"0g3xr7fsya2prYzwl05ASxRgi2MuqSo3PHEtp1y3sB8",{"id":3793,"title":3794,"ai":3795,"body":3800,"categories":4168,"created_at":102,"date_modified":102,"description":94,"extension":104,"faq":102,"featured":105,"kicker_label":102,"meta":4169,"navigation":107,"path":4177,"published_at":4178,"question":102,"scraped_at":4179,"seo":4180,"sitemap":4181,"source_id":4182,"source_name":4183,"source_type":3785,"source_url":4184,"stem":4185,"tags":4186,"thumbnail_url":102,"tldr":4188,"tweet":102,"unknown_tags":4189,"__hash__":4190},"summaries\u002Fsummaries\u002F5f1cb0ab72d27a71-auto-merge-dependabot-patch-minor-prs-via-github-w-summary.md","Auto-merge Dependabot patch\u002Fminor PRs via GitHub workflow",{"provider":7,"model":8,"input_tokens":3796,"output_tokens":3797,"processing_time_ms":3798,"cost_usd":3799},4522,1713,15185,0.0017384,{"type":14,"value":3801,"toc":4163},[3802,3806,3813,4098,4117,4121,4145,4148,4152,4159],[17,3803,3805],{"id":3804},"core-workflow-for-auto-approval-and-merging","Core Workflow for Auto-Approval and Merging",[22,3807,3808,3809,3812],{},"Use this GitHub Actions workflow in ",[47,3810,3811],{},".github\u002Fworkflows\u002Fdependabot-auto-merge.yml"," to automatically handle Dependabot PRs:",[3814,3815,3819],"pre",{"className":3816,"code":3817,"language":3818,"meta":94,"style":94},"language-yaml shiki shiki-themes github-light github-dark","name: Dependabot auto-merge\n\non: pull_request\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  dependabot:\n    runs-on: ubuntu-latest\n    if: github.event.pull_request.user.login == 'dependabot[bot]'\n    steps:\n      - name: Dependabot metadata\n        id: metadata\n        uses: dependabot\u002Ffetch-metadata@v2\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      - name: Approve Dependabot PR\n        run: gh pr review --approve \"$PR_URL\"\n        env:\n          PR_URL: ${{ github.event.pull_request.html_url }}\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Enable auto-merge for Dependabot PRs\n        if: steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor'\n        run: gh pr merge --auto --squash \"$PR_URL\"\n        env:\n          PR_URL: ${{ github.event.pull_request.html_url }}\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n","yaml",[47,3820,3821,3837,3842,3853,3861,3872,3882,3887,3895,3903,3914,3925,3933,3946,3957,3968,3976,3987,3999,4010,4018,4029,4040,4052,4063,4073,4080,4089],{"__ignoreMap":94},[3822,3823,3826,3830,3833],"span",{"class":3824,"line":3825},"line",1,[3822,3827,3829],{"class":3828},"s9eBZ","name",[3822,3831,45],{"class":3832},"sVt8B",[3822,3834,3836],{"class":3835},"sZZnC","Dependabot auto-merge\n",[3822,3838,3839],{"class":3824,"line":95},[3822,3840,3841],{"emptyLinePlaceholder":107},"\n",[3822,3843,3844,3848,3850],{"class":3824,"line":3774},[3822,3845,3847],{"class":3846},"sj4cs","on",[3822,3849,45],{"class":3832},[3822,3851,3852],{"class":3835},"pull_request\n",[3822,3854,3855,3858],{"class":3824,"line":3775},[3822,3856,3857],{"class":3828},"permissions",[3822,3859,3860],{"class":3832},":\n",[3822,3862,3864,3867,3869],{"class":3824,"line":3863},5,[3822,3865,3866],{"class":3828},"  contents",[3822,3868,45],{"class":3832},[3822,3870,3871],{"class":3835},"write\n",[3822,3873,3875,3878,3880],{"class":3824,"line":3874},6,[3822,3876,3877],{"class":3828},"  pull-requests",[3822,3879,45],{"class":3832},[3822,3881,3871],{"class":3835},[3822,3883,3885],{"class":3824,"line":3884},7,[3822,3886,3841],{"emptyLinePlaceholder":107},[3822,3888,3890,3893],{"class":3824,"line":3889},8,[3822,3891,3892],{"class":3828},"jobs",[3822,3894,3860],{"class":3832},[3822,3896,3898,3901],{"class":3824,"line":3897},9,[3822,3899,3900],{"class":3828},"  dependabot",[3822,3902,3860],{"class":3832},[3822,3904,3906,3909,3911],{"class":3824,"line":3905},10,[3822,3907,3908],{"class":3828},"    runs-on",[3822,3910,45],{"class":3832},[3822,3912,3913],{"class":3835},"ubuntu-latest\n",[3822,3915,3917,3920,3922],{"class":3824,"line":3916},11,[3822,3918,3919],{"class":3828},"    if",[3822,3921,45],{"class":3832},[3822,3923,3924],{"class":3835},"github.event.pull_request.user.login == 'dependabot[bot]'\n",[3822,3926,3928,3931],{"class":3824,"line":3927},12,[3822,3929,3930],{"class":3828},"    steps",[3822,3932,3860],{"class":3832},[3822,3934,3936,3939,3941,3943],{"class":3824,"line":3935},13,[3822,3937,3938],{"class":3832},"      - ",[3822,3940,3829],{"class":3828},[3822,3942,45],{"class":3832},[3822,3944,3945],{"class":3835},"Dependabot metadata\n",[3822,3947,3949,3952,3954],{"class":3824,"line":3948},14,[3822,3950,3951],{"class":3828},"        id",[3822,3953,45],{"class":3832},[3822,3955,3956],{"class":3835},"metadata\n",[3822,3958,3960,3963,3965],{"class":3824,"line":3959},15,[3822,3961,3962],{"class":3828},"        uses",[3822,3964,45],{"class":3832},[3822,3966,3967],{"class":3835},"dependabot\u002Ffetch-metadata@v2\n",[3822,3969,3971,3974],{"class":3824,"line":3970},16,[3822,3972,3973],{"class":3828},"        with",[3822,3975,3860],{"class":3832},[3822,3977,3979,3982,3984],{"class":3824,"line":3978},17,[3822,3980,3981],{"class":3828},"          github-token",[3822,3983,45],{"class":3832},[3822,3985,3986],{"class":3835},"\"${{ secrets.GITHUB_TOKEN }}\"\n",[3822,3988,3990,3992,3994,3996],{"class":3824,"line":3989},18,[3822,3991,3938],{"class":3832},[3822,3993,3829],{"class":3828},[3822,3995,45],{"class":3832},[3822,3997,3998],{"class":3835},"Approve Dependabot PR\n",[3822,4000,4002,4005,4007],{"class":3824,"line":4001},19,[3822,4003,4004],{"class":3828},"        run",[3822,4006,45],{"class":3832},[3822,4008,4009],{"class":3835},"gh pr review --approve \"$PR_URL\"\n",[3822,4011,4013,4016],{"class":3824,"line":4012},20,[3822,4014,4015],{"class":3828},"        env",[3822,4017,3860],{"class":3832},[3822,4019,4021,4024,4026],{"class":3824,"line":4020},21,[3822,4022,4023],{"class":3828},"          PR_URL",[3822,4025,45],{"class":3832},[3822,4027,4028],{"class":3835},"${{ github.event.pull_request.html_url }}\n",[3822,4030,4032,4035,4037],{"class":3824,"line":4031},22,[3822,4033,4034],{"class":3828},"          GH_TOKEN",[3822,4036,45],{"class":3832},[3822,4038,4039],{"class":3835},"${{ secrets.GITHUB_TOKEN }}\n",[3822,4041,4043,4045,4047,4049],{"class":3824,"line":4042},23,[3822,4044,3938],{"class":3832},[3822,4046,3829],{"class":3828},[3822,4048,45],{"class":3832},[3822,4050,4051],{"class":3835},"Enable auto-merge for Dependabot PRs\n",[3822,4053,4055,4058,4060],{"class":3824,"line":4054},24,[3822,4056,4057],{"class":3828},"        if",[3822,4059,45],{"class":3832},[3822,4061,4062],{"class":3835},"steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor'\n",[3822,4064,4066,4068,4070],{"class":3824,"line":4065},25,[3822,4067,4004],{"class":3828},[3822,4069,45],{"class":3832},[3822,4071,4072],{"class":3835},"gh pr merge --auto --squash \"$PR_URL\"\n",[3822,4074,4076,4078],{"class":3824,"line":4075},26,[3822,4077,4015],{"class":3828},[3822,4079,3860],{"class":3832},[3822,4081,4083,4085,4087],{"class":3824,"line":4082},27,[3822,4084,4023],{"class":3828},[3822,4086,45],{"class":3832},[3822,4088,4028],{"class":3835},[3822,4090,4092,4094,4096],{"class":3824,"line":4091},28,[3822,4093,4034],{"class":3828},[3822,4095,45],{"class":3832},[3822,4097,4039],{"class":3835},[22,4099,4100,4101,4104,4105,4108,4109,4112,4113,4116],{},"It triggers on pull requests from ",[47,4102,4103],{},"dependabot[bot]",", fetches update metadata, approves the PR using ",[47,4106,4107],{},"gh pr review --approve",", and enables auto-merge with squash for ",[47,4110,4111],{},"semver-patch"," or ",[47,4114,4115],{},"semver-minor"," updates only. All required status checks (linting, tests) must pass first, as the repo's branch protection rules are respected.",[17,4118,4120],{"id":4119},"essential-repository-configurations","Essential Repository Configurations",[4122,4123,4124,4135,4138],"ol",{},[39,4125,4126,4127,4130,4131,4134],{},"In repo settings (e.g., ",[47,4128,4129],{},"https:\u002F\u002Fgithub.com\u002FOWNER\u002FREPO\u002Fsettings","), enable \"Allow auto-merge\" to permit the workflow's ",[47,4132,4133],{},"gh pr merge --auto"," command.",[39,4136,4137],{},"Configure blocking status checks for linting, typing, and tests in branch protection rules—Dependabot respects these, preventing merges on failures.",[39,4139,4140,4141,4144],{},"Enable Dependabot via ",[47,4142,4143],{},"https:\u002F\u002Fgithub.com\u002FOWNER\u002FREPO\u002Fsettings\u002Fsecurity_analysis","; defaults suffice for basic dependency updates.",[22,4146,4147],{},"This setup rolled out across ~12 repos, streamlining security patches without manual intervention.",[17,4149,4151],{"id":4150},"trade-offs-and-real-world-pressure","Trade-offs and Real-World Pressure",[22,4153,4154,4155,4158],{},"Auto-merging cuts patching delays but surfaced gaps like missing tests allowing a flawed merge—use it as motivation to build robust CI\u002FCD rather than a blocker. It skips major version updates (",[47,4156,4157],{},"semver-major","), avoiding breaking changes, and works best with solid automated checks; weak CI\u002FCD leads to fixes amid failures.",[4160,4161,4162],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":94,"searchDepth":95,"depth":95,"links":4164},[4165,4166,4167],{"id":3804,"depth":95,"text":3805},{"id":4119,"depth":95,"text":4120},{"id":4150,"depth":95,"text":4151},[101],{"content_references":4170,"triage":4174},[4171],{"type":3769,"title":4172,"url":4173,"context":3767},"Dependabot quickstart guide","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcode-security\u002Fgetting-started\u002Fdependabot-quickstart-guide",{"relevance":3863,"novelty":3774,"quality":3775,"actionability":3863,"composite":4175,"reasoning":4176},4.35,"Category: DevOps. The article provides a detailed GitHub Actions workflow for automating the approval and merging of Dependabot PRs, which directly addresses the audience's need for practical automation solutions in software engineering. The step-by-step guidance on setting up the workflow makes it immediately actionable for developers looking to streamline their CI\u002FCD processes.","\u002Fsummaries\u002F5f1cb0ab72d27a71-auto-merge-dependabot-patch-minor-prs-via-github-w-summary","2025-12-18 15:00:00","2026-04-14 14:34:29",{"title":3794,"description":94},{"loc":4177},"5f1cb0ab72d27a71","__oneoff__","https:\u002F\u002Flethain.com\u002Fdependabot-auto-merge\u002F","summaries\u002F5f1cb0ab72d27a71-auto-merge-dependabot-patch-minor-prs-via-github-w-summary",[119,4187,121],"dev-productivity","Set up a GitHub Actions workflow to auto-approve and merge Dependabot PRs for semver-patch and semver-minor updates after checks pass, reducing security patching overhead while enforcing CI\u002FCD quality.",[4187,121],"yzRJj-HWkEy2bdBYoxGJJccoWLxP5p8_KLcw6tm1O7M",{"id":4192,"title":4193,"ai":4194,"body":4199,"categories":4327,"created_at":102,"date_modified":102,"description":94,"extension":104,"faq":102,"featured":105,"kicker_label":102,"meta":4328,"navigation":107,"path":4341,"published_at":102,"question":102,"scraped_at":4342,"seo":4343,"sitemap":4344,"source_id":4345,"source_name":4183,"source_type":3785,"source_url":4346,"stem":4347,"tags":4348,"thumbnail_url":102,"tldr":4350,"tweet":102,"unknown_tags":4351,"__hash__":4352},"summaries\u002Fsummaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary.md","Rainbow Deploys: Infinite Colors for K8s Long-Draining Services",{"provider":7,"model":8,"input_tokens":4195,"output_tokens":4196,"processing_time_ms":4197,"cost_usd":4198},5066,1483,9039,0.0012474,{"type":14,"value":4200,"toc":4322},[4201,4205,4208,4211,4235,4250,4254,4257,4265,4268,4312,4315,4319],[17,4202,4204],{"id":4203},"core-technique-selector-shifts-without-pod-disruption","Core Technique: Selector Shifts Without Pod Disruption",[22,4206,4207],{},"Rainbow deploys extend blue\u002Fgreen by using infinite \"colors\" (first 6 hex chars of git HEAD) as Deployment labels matched by Service selectors. Deploy new versions by creating fresh Deployments with unique colors, then update the Service selector to point only to the new pods. Old Deployments persist, allowing TCP\u002FHTTP connections to drain over time (e.g., minutes or hours) until clients close them or you delete the old Deployment. This avoids rolling updates that kill long-lived connections abruptly.",[22,4209,4210],{},"Key Kubernetes config in app.yaml:",[36,4212,4213,4220],{},[39,4214,4215,4216,4219],{},"Deployment has ",[47,4217,4218],{},"color: __COLOR__"," label.",[39,4221,4222,4223,4226,4227,4230,4231,4234],{},"Service selector matches ",[47,4224,4225],{},"app: rainbow-deploys, color: __COLOR__",".\n",[47,4228,4229],{},"make install"," runs ",[47,4232,4233],{},"cat app.yaml | sed s\u002F__COLOR__\u002F$(COLOR)\u002Fg | kubectl apply -f -",", where COLOR derives from git HEAD, repointing the Service instantly while old pods handle draining traffic.",[22,4236,4237,4238,4241,4242,4245,4246,4249],{},"Trade-off: Old Deployments accumulate (e.g., ",[47,4239,4240],{},"rainbow-deploys-3c3fdc",", ",[47,4243,4244],{},"rainbow-deploys-9d2cc9","), requiring manual cleanup via ",[47,4247,4248],{},"kubectl delete deployment \u003Cold-name>"," to reclaim resources.",[17,4251,4253],{"id":4252},"demo-setup-and-validation","Demo Setup and Validation",[22,4255,4256],{},"Repo includes Go app (main.go) serving:",[36,4258,4259,4262],{},[39,4260,4261],{},"HTTP on :8080: Returns hex color of git HEAD at build time.",[39,4263,4264],{},"TCP on :8081: Prints color every 5 seconds indefinitely.",[22,4266,4267],{},"Prerequisites: minikube, Docker env setup.\nCommands:",[4122,4269,4270,4280,4295,4302],{},[39,4271,4272,4275,4276,4279],{},[47,4273,4274],{},"minikube start; eval $(minikube docker-env); export DOCKER_IMAGE=your-image; make image; make install"," → Creates ",[47,4277,4278],{},"rainbow-deploys-\u003Ccolor>"," Deployment (2 replicas), NodePort Service (8080→31080, 8081→31081).",[39,4281,4282,4283,4286,4287],{},"Access: ",[47,4284,4285],{},"minikube service rainbow-deploys"," → http:\u002F\u002F",[4288,4289,4290,4291,4294],"minikube-ip",{},":31080 shows color; ",[47,4292,4293],{},"telnet \u003Cip> 31081"," streams color.",[39,4296,4297,4298,4301],{},"Rebuild\u002Fdeploy: ",[47,4299,4300],{},"make image; make install"," → New Deployment appears, Service shifts (old connections on TCP continue printing old color).",[39,4303,4304,4307,4308,4311],{},[47,4305,4306],{},"kubectl get deployments"," shows both; delete older after drain: ",[47,4309,4310],{},"kubectl delete deployment rainbow-deploys-3c3fdc",".",[22,4313,4314],{},"Dockerfile, Makefile, app.yaml provided for direct replication; LICENSE is MIT.",[17,4316,4318],{"id":4317},"when-to-use-handling-stateful-realities","When to Use: Handling Stateful Realities",[22,4320,4321],{},"Ideal for services with long-running TCP (e.g., WebSockets, streaming) or in-memory state where restarts lose connections. Contrasts stateless short-cycle services fine with standard rolling updates. See author's 2018 blog for production cases avoiding backend restarts.",{"title":94,"searchDepth":95,"depth":95,"links":4323},[4324,4325,4326],{"id":4203,"depth":95,"text":4204},{"id":4252,"depth":95,"text":4253},{"id":4317,"depth":95,"text":4318},[101],{"content_references":4329,"triage":4338},[4330,4334],{"type":3769,"title":4331,"author":4332,"url":4333,"context":3767},"BlueGreenDeployment","Martin Fowler","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FBlueGreenDeployment.html",{"type":3769,"title":4335,"author":4336,"url":4337,"context":3767},"Rainbow Deploys with Kubernetes","Brandon Dimcheff","http:\u002F\u002Fbrandon.dimcheff.com\u002F2018\u002F02\u002Frainbow-deploys-with-kubernetes\u002F",{"relevance":3775,"novelty":3774,"quality":3775,"actionability":3775,"composite":4339,"reasoning":4340},3.8,"Category: DevOps & Cloud. The article provides a practical technique for managing Kubernetes deployments that addresses a specific pain point of maintaining long-lived connections during updates. It includes actionable commands and configurations that developers can implement directly in their workflows.","\u002Fsummaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary","2026-04-16 03:04:29",{"title":4193,"description":94},{"loc":4341},"484a145fcb3a7450","https:\u002F\u002Fgithub.com\u002Fbdimcheff\u002Frainbow-deploys","summaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary",[119,4349,120],"cloud","Shift Kubernetes Service selectors to new git-colored Deployments for zero-downtime deploys on stateful, long-connection services—old pods drain naturally without restarts.",[],"SBaYiCTavDVEr6FZrSLVtAMKAiZH7V6FEQMb5M58L0w",{"id":4354,"title":4355,"ai":4356,"body":4361,"categories":4494,"created_at":102,"date_modified":102,"description":94,"extension":104,"faq":102,"featured":105,"kicker_label":102,"meta":4495,"navigation":107,"path":4503,"published_at":102,"question":102,"scraped_at":4504,"seo":4505,"sitemap":4506,"source_id":4507,"source_name":4183,"source_type":3785,"source_url":4508,"stem":4509,"tags":4510,"thumbnail_url":102,"tldr":4512,"tweet":102,"unknown_tags":4513,"__hash__":4514},"summaries\u002Fsummaries\u002F8cccca2fc87c90bc-zero-downtime-node-js-reloads-with-up-load-balance-summary.md","Zero-Downtime Node.js Reloads with Up Load Balancer",{"provider":7,"model":8,"input_tokens":4357,"output_tokens":4358,"processing_time_ms":4359,"cost_usd":4360},5085,1271,6120,0.00162985,{"type":14,"value":4362,"toc":4489},[4363,4367,4390,4405,4409,4414,4464,4482,4486],[17,4364,4366],{"id":4365},"graceful-worker-reloading-for-production","Graceful Worker Reloading for Production",[22,4368,4369,4370,4373,4374,4377,4378,4381,4382,4385,4386,4389],{},"Up builds on the distribute load balancer to run multiple Node.js HTTP server instances (default: cpus\u002F2 rounded up, minimum 1) in round-robin fashion. On reload via ",[47,4371,4372],{},"srv.reload()"," or SIGUSR2 signal, it spawns new workers while old ones drain existing keep-alive connections using a configurable ",[47,4375,4376],{},"workerTimeout"," (default '10s' in dev, parses '10s'\u002F'10m'\u002F'500ms'). This ensures zero downtime: new workers handle incoming requests immediately unless ",[47,4379,4380],{},"assumeReady: false",", requiring workers to explicitly signal readiness via ",[47,4383,4384],{},"process.send({ up: 'ready' })",". Auto-reload triggers on file changes with ",[47,4387,4388],{},"--watch",", ideal for development.",[22,4391,4392,4393,4396,4397,4400,4401,4404],{},"Separate your HTTP server into a require-able module (e.g., ",[47,4394,4395],{},"http.createServer(app).listen(0)"," to avoid port binding conflicts). CLI example: ",[47,4398,4399],{},"up server.js"," starts on port 80; ",[47,4402,4403],{},"up -p 3000 -w -n 4 server.js"," watches files and uses 4 workers.",[17,4406,4408],{"id":4407},"cli-and-api-configuration","CLI and API Configuration",[22,4410,4411],{},[42,4412,4413],{},"CLI flags control behavior:",[36,4415,4416,4422,4428,4434,4440,4446,4452,4458],{},[39,4417,4418,4421],{},[47,4419,4420],{},"-p\u002F--port \u003Cport>",": Listen port (default 3000).",[39,4423,4424,4427],{},[47,4425,4426],{},"-w\u002F--watch",": Auto-reload on dir changes.",[39,4429,4430,4433],{},[47,4431,4432],{},"-r\u002F--require \u003Cmod>",": Pre-require modules like 'coffee-script'.",[39,4435,4436,4439],{},[47,4437,4438],{},"-n\u002F--number \u003Cn>",": Worker count (overrides auto-calc).",[39,4441,4442,4445],{},[47,4443,4444],{},"-t\u002F--timeout \u003Ctime>",": Worker drain timeout.",[39,4447,4448,4451],{},[47,4449,4450],{},"-k\u002F--keepalive",": Enforce keep-alive (default on).",[39,4453,4454,4457],{},[47,4455,4456],{},"-f\u002F--pidfile \u003Cfile>",": Write PID to file.",[39,4459,4460,4463],{},[47,4461,4462],{},"-T\u002F--title \u003Ctitle>",": Set process.title ('up master'\u002F'up worker').",[22,4465,4466,4469,4470,4473,4474,4477,4478,4481],{},[42,4467,4468],{},"JS API mirrors flags:"," ",[47,4471,4472],{},"new UpServer(serverModule, numWorkers, {workerTimeout: '10s', title: 'myapp', assumeReady: false, keepAlive: true, minExpectedLifetime: '20s'})",". Inherits distribute's ",[47,4475,4476],{},"use()"," for middleware; final handler does round-robin. Set ",[47,4479,4480],{},"NODE_ENV=production"," for longer timeouts.",[17,4483,4485],{"id":4484},"trade-offs-and-reliability","Trade-offs and Reliability",[22,4487,4488],{},"Up assumes workers are ready post-require unless configured otherwise, minimizing latency but risking unready states—use explicit readiness for complex init. Keep-alive prevents abrupt closes during drains. MIT-licensed by Guillermo Rauch (2011), focuses on Node.js ecosystems without broader cloud integration.",{"title":94,"searchDepth":95,"depth":95,"links":4490},[4491,4492,4493],{"id":4365,"depth":95,"text":4366},{"id":4407,"depth":95,"text":4408},{"id":4484,"depth":95,"text":4485},[101],{"content_references":4496,"triage":4500},[4497],{"type":3764,"title":4498,"url":4499,"context":3767},"distribute","http:\u002F\u002Fgithub.com\u002Flearnboost\u002Fdistribute",{"relevance":3774,"novelty":95,"quality":3775,"actionability":3775,"composite":4501,"reasoning":4502},3.25,"Category: DevOps. The article provides a practical overview of a tool that enables zero-downtime reloads for Node.js applications, which is relevant for developers looking to improve their deployment processes. It includes specific CLI commands and configuration options that can be directly applied, making it actionable for the audience.","\u002Fsummaries\u002F8cccca2fc87c90bc-zero-downtime-node-js-reloads-with-up-load-balance-summary","2026-04-16 03:04:32",{"title":4355,"description":94},{"loc":4503},"8cccca2fc87c90bc","https:\u002F\u002Fgithub.com\u002Folark\u002Fup","summaries\u002F8cccca2fc87c90bc-zero-downtime-node-js-reloads-with-up-load-balance-summary",[119,120,4511],"nodejs","Up enables zero-downtime reloads for Node.js HTTP servers by load balancing across workers and gracefully restarting them on SIGUSR2 or file changes, preserving keep-alive connections.",[4511],"ZHPHDliQ4Jbew9av2Vn1WMiRH22od-4STV4AeWLfrDE"]