[{"data":1,"prerenderedAt":105380},["ShallowReactive",2],{"blog-tree":3,"blog-recent":30504,"blog-all-for-search":54895,"blog-tags":79286,"blog-search-sections":103677,"\u002Fblog\u002Fjavascript-cross-tab-communication-methods":104561},[4,855,1514,1865,2867,4443,4571,4956,5300,5449,5723,6045,6818,7207,7411,8620,9127,10144,10843,15051,15285,15419,16328,17134,17555,17688,18090,18472,18591,18897,19598,19764,19934,20888,21622,24447,24646,25171,29564,29967,30443],{"id":5,"title":6,"body":7,"created":841,"description":842,"extension":843,"filename":844,"meta":845,"navigation":846,"path":847,"seo":848,"sitemap":849,"stem":850,"subject":851,"tags":852,"updated":841,"volume":853,"__hash__":854},"blog\u002Fblog\u002F250724-interact-text-overflow-white-space-width.md","말줄임 시 text-overflow 와 white-space, width의 관계",{"type":8,"value":9,"toc":832},"minimark",[10,15,23,48,52,77,81,138,145,498,503,513,516,521,532,535,539,632,635,729,736,749,753,756,759,762,770,775,810,813,816,822,828],[11,12,14],"h1",{"id":13},"box-model","Box model",[16,17,18],"p",{},[19,20],"img",{"alt":21,"src":22},"Untitled","\u002Fblog\u002Fimg\u002F250724-interact-text-overflow-white-space-width\u002Fimage-copy.png",[24,25,26,39,42,45],"ul",{},[27,28,29,30,34,35,38],"li",{},"Content: 실제 내용이 들어가는 영역. ",[31,32,33],"code",{},"width","와 ",[31,36,37],{},"height","가 기본적으로 지정하는 영역.",[27,40,41],{},"Padding: 콘텐츠와 테두리 사이의 여백인데 배경색은 이 영역까지 적용됨.",[27,43,44],{},"Border: 패딩을 감싸는 선.",[27,46,47],{},"Margin: 테두리 바깥의 공간으로, 다른 요소와의 간격을 벌릴 때 사용. 배경색이 적용되지 않는 투명한 영역",[49,50,51],"h2",{"id":51},"box-sizing",[24,53,54,69],{},[27,55,56,57],{},"content-box : 컨텐츠 영역만 width 로 잡겠다.\n",[24,58,59],{},[27,60,61,64,65,68],{},[31,62,63],{},"width: 100px",", ",[31,66,67],{},"padding: 20px","인 경우 : 전체 너비는 140px이 된다.",[27,70,71,72],{},"border-box : 테두리까지 포함한 크기가 width 이다. (margin 은 아님)\n",[24,73,74],{},[27,75,76],{},"전체 너비가 100px 이고 컨텐츠 영역이 60px 로 줄어든다.",[11,78,80],{"id":79},"_1줄-말줄임","1줄 말줄임",[82,83,88],"pre",{"className":84,"code":85,"language":86,"meta":87,"style":87},"language-css shiki shiki-themes github-light github-dark",".line-clamp-1-normal {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n","css","",[31,89,90,103,119,132],{"__ignoreMap":87},[91,92,95,99],"span",{"class":93,"line":94},"line",1,[91,96,98],{"class":97},"sScJk",".line-clamp-1-normal",[91,100,102],{"class":101},"sVt8B"," {\n",[91,104,106,110,113,116],{"class":93,"line":105},2,[91,107,109],{"class":108},"sj4cs","  overflow",[91,111,112],{"class":101},": ",[91,114,115],{"class":108},"hidden",[91,117,118],{"class":101},";\n",[91,120,122,125,127,130],{"class":93,"line":121},3,[91,123,124],{"class":108},"  text-overflow",[91,126,112],{"class":101},[91,128,129],{"class":108},"ellipsis",[91,131,118],{"class":101},[91,133,135],{"class":93,"line":134},4,[91,136,137],{"class":101},"}\n",[16,139,140,141,144],{},"부모의 width 가 결정되어 있는 경우에는 ",[31,142,143],{},"white-space: nowrap"," 이 없어도 말줄임이 발생한다.",[82,146,150],{"className":147,"code":148,"language":149,"meta":87,"style":87},"language-html shiki shiki-themes github-light github-dark","\u003Cdiv class=\"w-80 overflow-hidden\">\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">1\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1 min-w-0\">\n            \u003Cdiv class=\"text-overflow-ellipsis overflow-hidden\">white-space: nowrap 없어서 줄바꿈되고 말줄임도 안일어남\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.01\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">2\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1 min-w-0\">\n            \u003Cdiv class=\"truncate\">의도한대로 줄바꿈이 일어난 경우입니다람쥐\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.02\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">3\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1\">\n            \u003Cdiv class=\"truncate\">min-width: 0 없어서 줄어들지 않음\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.03\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n","html",[31,151,152,174,190,211,226,248,258,272,282,297,317,332,353,362,376,385,400,420,436,456,465,479,488],{"__ignoreMap":87},[91,153,154,157,161,164,167,171],{"class":93,"line":94},[91,155,156],{"class":101},"\u003C",[91,158,160],{"class":159},"s9eBZ","div",[91,162,163],{"class":97}," class",[91,165,166],{"class":101},"=",[91,168,170],{"class":169},"sZZnC","\"w-80 overflow-hidden\"",[91,172,173],{"class":101},">\n",[91,175,176,179,181,183,185,188],{"class":93,"line":105},[91,177,178],{"class":101},"    \u003C",[91,180,160],{"class":159},[91,182,163],{"class":97},[91,184,166],{"class":101},[91,186,187],{"class":169},"\"flex items-center\"",[91,189,173],{"class":101},[91,191,192,195,197,199,201,204,207,209],{"class":93,"line":121},[91,193,194],{"class":101},"        \u003C",[91,196,160],{"class":159},[91,198,163],{"class":97},[91,200,166],{"class":101},[91,202,203],{"class":169},"\"w-6 h-6\"",[91,205,206],{"class":101},">1\u003C\u002F",[91,208,160],{"class":159},[91,210,173],{"class":101},[91,212,213,215,217,219,221,224],{"class":93,"line":134},[91,214,194],{"class":101},[91,216,160],{"class":159},[91,218,163],{"class":97},[91,220,166],{"class":101},[91,222,223],{"class":169},"\"flex-1 min-w-0\"",[91,225,173],{"class":101},[91,227,229,232,234,236,238,241,244,246],{"class":93,"line":228},5,[91,230,231],{"class":101},"            \u003C",[91,233,160],{"class":159},[91,235,163],{"class":97},[91,237,166],{"class":101},[91,239,240],{"class":169},"\"text-overflow-ellipsis overflow-hidden\"",[91,242,243],{"class":101},">white-space: nowrap 없어서 줄바꿈되고 말줄임도 안일어남\u003C\u002F",[91,245,160],{"class":159},[91,247,173],{"class":101},[91,249,251,254,256],{"class":93,"line":250},6,[91,252,253],{"class":101},"        \u003C\u002F",[91,255,160],{"class":159},[91,257,173],{"class":101},[91,259,261,263,265,268,270],{"class":93,"line":260},7,[91,262,194],{"class":101},[91,264,160],{"class":159},[91,266,267],{"class":101},">2024.01.01\u003C\u002F",[91,269,160],{"class":159},[91,271,173],{"class":101},[91,273,275,278,280],{"class":93,"line":274},8,[91,276,277],{"class":101},"    \u003C\u002F",[91,279,160],{"class":159},[91,281,173],{"class":101},[91,283,285,287,289,291,293,295],{"class":93,"line":284},9,[91,286,178],{"class":101},[91,288,160],{"class":159},[91,290,163],{"class":97},[91,292,166],{"class":101},[91,294,187],{"class":169},[91,296,173],{"class":101},[91,298,300,302,304,306,308,310,313,315],{"class":93,"line":299},10,[91,301,194],{"class":101},[91,303,160],{"class":159},[91,305,163],{"class":97},[91,307,166],{"class":101},[91,309,203],{"class":169},[91,311,312],{"class":101},">2\u003C\u002F",[91,314,160],{"class":159},[91,316,173],{"class":101},[91,318,320,322,324,326,328,330],{"class":93,"line":319},11,[91,321,194],{"class":101},[91,323,160],{"class":159},[91,325,163],{"class":97},[91,327,166],{"class":101},[91,329,223],{"class":169},[91,331,173],{"class":101},[91,333,335,337,339,341,343,346,349,351],{"class":93,"line":334},12,[91,336,231],{"class":101},[91,338,160],{"class":159},[91,340,163],{"class":97},[91,342,166],{"class":101},[91,344,345],{"class":169},"\"truncate\"",[91,347,348],{"class":101},">의도한대로 줄바꿈이 일어난 경우입니다람쥐\u003C\u002F",[91,350,160],{"class":159},[91,352,173],{"class":101},[91,354,356,358,360],{"class":93,"line":355},13,[91,357,253],{"class":101},[91,359,160],{"class":159},[91,361,173],{"class":101},[91,363,365,367,369,372,374],{"class":93,"line":364},14,[91,366,194],{"class":101},[91,368,160],{"class":159},[91,370,371],{"class":101},">2024.01.02\u003C\u002F",[91,373,160],{"class":159},[91,375,173],{"class":101},[91,377,379,381,383],{"class":93,"line":378},15,[91,380,277],{"class":101},[91,382,160],{"class":159},[91,384,173],{"class":101},[91,386,388,390,392,394,396,398],{"class":93,"line":387},16,[91,389,178],{"class":101},[91,391,160],{"class":159},[91,393,163],{"class":97},[91,395,166],{"class":101},[91,397,187],{"class":169},[91,399,173],{"class":101},[91,401,403,405,407,409,411,413,416,418],{"class":93,"line":402},17,[91,404,194],{"class":101},[91,406,160],{"class":159},[91,408,163],{"class":97},[91,410,166],{"class":101},[91,412,203],{"class":169},[91,414,415],{"class":101},">3\u003C\u002F",[91,417,160],{"class":159},[91,419,173],{"class":101},[91,421,423,425,427,429,431,434],{"class":93,"line":422},18,[91,424,194],{"class":101},[91,426,160],{"class":159},[91,428,163],{"class":97},[91,430,166],{"class":101},[91,432,433],{"class":169},"\"flex-1\"",[91,435,173],{"class":101},[91,437,439,441,443,445,447,449,452,454],{"class":93,"line":438},19,[91,440,231],{"class":101},[91,442,160],{"class":159},[91,444,163],{"class":97},[91,446,166],{"class":101},[91,448,345],{"class":169},[91,450,451],{"class":101},">min-width: 0 없어서 줄어들지 않음\u003C\u002F",[91,453,160],{"class":159},[91,455,173],{"class":101},[91,457,459,461,463],{"class":93,"line":458},20,[91,460,253],{"class":101},[91,462,160],{"class":159},[91,464,173],{"class":101},[91,466,468,470,472,475,477],{"class":93,"line":467},21,[91,469,194],{"class":101},[91,471,160],{"class":159},[91,473,474],{"class":101},">2024.01.03\u003C\u002F",[91,476,160],{"class":159},[91,478,173],{"class":101},[91,480,482,484,486],{"class":93,"line":481},22,[91,483,277],{"class":101},[91,485,160],{"class":159},[91,487,173],{"class":101},[91,489,491,494,496],{"class":93,"line":490},23,[91,492,493],{"class":101},"\u003C\u002F",[91,495,160],{"class":159},[91,497,173],{"class":101},[16,499,500],{},[19,501],{"alt":21,"src":502},"\u002Fblog\u002Fimg\u002F250724-interact-text-overflow-white-space-width\u002Fimage-copy2.png",[16,504,505,506,508,509,512],{},"flexbox 내부에서는 자식 컴포넌트의 말줄임을 할 땐, 너비에 맞춰서 자동으로 줄바꿈이 되기 때문에 ",[31,507,143],{}," 속성이 필요해진다.\nflexbox 안의 다른 요소와 함께 너비가 결정되는 경우 ",[31,510,511],{},"min-width: 0px;"," 가 필요하기도 하다.",[49,514,515],{"id":515},"min-w-0",[16,517,518],{},[19,519],{"alt":21,"src":520},"\u002Fblog\u002Fimg\u002F250724-interact-text-overflow-white-space-width\u002Fimage.png",[16,522,523,524,527,528,531],{},"기본적으로 ",[31,525,526],{},"min-width : auto;"," 로 작동한다. 이는 최소한의 너비를 보장하라는 뜻이다. 보통을 글자의 경우 자동 줄바꿈이 되는데, ",[31,529,530],{},"whitespace-nowrap"," 과 만나게 되면 자신의 너비를 유지하기 위해서 overflow 가 발생한다. 부모 컨테이너의 너비가 한정되어 있어도 줄바꿈을 절대 하지 않기 때문에 벗어나면서 컨텐츠 영역이 보장되기 때문에 overflow 가 발생하지 않는다.",[16,533,534],{},"min-width: 0px; 를 주게되면. 0px 까지 줄어들 수 있어 라는 뜻이 된다. 그래서 최소 너비를 보장하지 않아도, 줄어들 수 있고, nowrap 과 만나도, 줄어들 수 있기 때문에 text overflow 가 발생할 수 있게 된다.",[49,536,538],{"id":537},"_2줄-말줄임","2줄 말줄임",[82,540,542],{"className":84,"code":541,"language":86,"meta":87,"style":87},".\btext-over {\n    max-width: 253px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n",[31,543,544,554,570,582,594,606,617,628],{"__ignoreMap":87},[91,545,546,549,552],{"class":93,"line":94},[91,547,548],{"class":101},".\b",[91,550,551],{"class":159},"text-over",[91,553,102],{"class":101},[91,555,556,559,561,564,568],{"class":93,"line":105},[91,557,558],{"class":108},"    max-width",[91,560,112],{"class":101},[91,562,563],{"class":108},"253",[91,565,567],{"class":566},"szBVR","px",[91,569,118],{"class":101},[91,571,572,575,577,580],{"class":93,"line":121},[91,573,574],{"class":108},"    display",[91,576,112],{"class":101},[91,578,579],{"class":108},"-webkit-box",[91,581,118],{"class":101},[91,583,584,587,589,592],{"class":93,"line":134},[91,585,586],{"class":108},"    -webkit-line-clamp",[91,588,112],{"class":101},[91,590,591],{"class":108},"2",[91,593,118],{"class":101},[91,595,596,599,601,604],{"class":93,"line":228},[91,597,598],{"class":108},"    -webkit-box-orient",[91,600,112],{"class":101},[91,602,603],{"class":108},"vertical",[91,605,118],{"class":101},[91,607,608,611,613,615],{"class":93,"line":250},[91,609,610],{"class":108},"    overflow",[91,612,112],{"class":101},[91,614,115],{"class":108},[91,616,118],{"class":101},[91,618,619,622,624,626],{"class":93,"line":260},[91,620,621],{"class":108},"    text-overflow",[91,623,112],{"class":101},[91,625,129],{"class":108},[91,627,118],{"class":101},[91,629,630],{"class":93,"line":274},[91,631,137],{"class":101},[16,633,634],{},"이렇게만 했을 때는 분명 2줄 말줄임이었는데 1줄 말줄임으로 표시되었다. css 만 봐서는 문제가 없어보였다.",[82,636,638],{"className":84,"code":637,"language":86,"meta":87,"style":87},".text-over {\n    max-width: 253px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: normal; \u002F\u002F 이게 들어가야 함\n}\n",[31,639,640,647,659,669,679,689,699,709,725],{"__ignoreMap":87},[91,641,642,645],{"class":93,"line":94},[91,643,644],{"class":97},".text-over",[91,646,102],{"class":101},[91,648,649,651,653,655,657],{"class":93,"line":105},[91,650,558],{"class":108},[91,652,112],{"class":101},[91,654,563],{"class":108},[91,656,567],{"class":566},[91,658,118],{"class":101},[91,660,661,663,665,667],{"class":93,"line":121},[91,662,574],{"class":108},[91,664,112],{"class":101},[91,666,579],{"class":108},[91,668,118],{"class":101},[91,670,671,673,675,677],{"class":93,"line":134},[91,672,586],{"class":108},[91,674,112],{"class":101},[91,676,591],{"class":108},[91,678,118],{"class":101},[91,680,681,683,685,687],{"class":93,"line":228},[91,682,598],{"class":108},[91,684,112],{"class":101},[91,686,603],{"class":108},[91,688,118],{"class":101},[91,690,691,693,695,697],{"class":93,"line":250},[91,692,610],{"class":108},[91,694,112],{"class":101},[91,696,115],{"class":108},[91,698,118],{"class":101},[91,700,701,703,705,707],{"class":93,"line":260},[91,702,621],{"class":108},[91,704,112],{"class":101},[91,706,129],{"class":108},[91,708,118],{"class":101},[91,710,711,714,716,719,722],{"class":93,"line":274},[91,712,713],{"class":108},"    white-space",[91,715,112],{"class":101},[91,717,718],{"class":108},"normal",[91,720,721],{"class":101},";",[91,723,724],{"class":101}," \u002F\u002F 이게 들어가야 함\n",[91,726,727],{"class":93,"line":284},[91,728,137],{"class":101},[16,730,731,732,735],{},"그런데 나도 모르게 상속된 ",[31,733,734],{},"white-space"," 속성이 줄바꿈을 방지해서 1줄까지만 표시되고 말줄임이 일어났던 것이다.",[16,737,738,741,742,744,745,748],{},[31,739,740],{},"-webkit-line-clamp"," 가 2이상 작동하려면 일단 줄바꿈이 일어나야 한다.  ",[31,743,734],{}," 를 지정해주어야 정해진 줄 수에서 말줄임이 일어난다. ",[31,746,747],{},"white-space: nowrap;"," 인 경우는 애초에 줄바꿈이 일어나지 않기 때문에 2줄이 되지 않는다.",[49,750,752],{"id":751},"알아두면-좋을-다른-auto-속성들","알아두면 좋을 다른 auto 속성들",[16,754,755],{},"다른 auto 속성이 어떻게 작동하는지 몇개 찾아봤다.",[757,758,33],"h3",{"id":33},[16,760,761],{},"width 는 element 가 block 이냐 inline 이냐에 따라서 다르다.",[24,763,764,767],{},[27,765,766],{},"block : 가로 전체 100%",[27,768,769],{},"inline : 컨텐츠의 너비만큼",[771,772,774],"h4",{"id":773},"_100-와의-차이점","100% 와의 차이점",[24,776,777,788],{},[27,778,779,780],{},"width: 100% : border, padding 제외 컨텐츠 영역만 100%\n",[24,781,782],{},[27,783,784,787],{},[31,785,786],{},"box-sizing: border-box;"," 를 주면 auto 와 마찬가지로 작동함",[27,789,790,791,795,796,799,800,799,803,799,806,809],{},"width: auto : 해당 요소의 ",[792,793,794],"strong",{},"전체 너비","(",[31,797,798],{},"margin"," + ",[31,801,802],{},"border",[31,804,805],{},"padding",[31,807,808],{},"content",")가 부모 요소의 콘텐츠 영역(content area)에 맞춰진다. padding 값을 추가하면 컨텐츠 영역은 줄어든다는 것.",[757,811,812],{"id":812},"table",[771,814,815],{"id":815},"table-layout",[16,817,818,821],{},[31,819,820],{},"\u003Ctable>"," 의 열 너비값을 어떻게 정할지 정한다. auto 가 기본이라서 가장 넓은 콘텐츠에 맞춰서 자동으로 지정된다. -> 컨텐츠의 크기를 모두 게산하고 나서야 열의 너비를 알고 렌더링하기 때문에 속도가 조금 느릴 수 있음.",[16,823,824,827],{},[31,825,826],{},"fixed"," 를 사용하면 첫 행의 너비만으로 결정한다.",[829,830,831],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":87,"searchDepth":105,"depth":105,"links":833},[834,835,836,837],{"id":51,"depth":105,"text":51},{"id":515,"depth":105,"text":515},{"id":537,"depth":105,"text":538},{"id":751,"depth":105,"text":752,"children":838},[839,840],{"id":33,"depth":121,"text":33},{"id":812,"depth":121,"text":812},"2025-07-24","텍스트의 말줄임을 구현할 때 text-overflow 와 white-space 사이의 상호작용을 알아봄. 몇 줄에서 줄이느냐에 따라서도 달라진다. flex 박스 모델에서 자식 요소가 빠져나가는 현상과 min-width-0 의 역할 알아보기","md","interact-text-overflow-white-space-width",{},true,"\u002Fblog\u002F250724-interact-text-overflow-white-space-width",{"title":6,"description":842},{"loc":847},"blog\u002F250724-interact-text-overflow-white-space-width","CSS",[86],"medium","ur6JQ5ecD7gSYYvDnzTvH1ljSbrYZJbouELoU7PEbAI",{"id":856,"title":857,"body":858,"created":1501,"description":1502,"extension":843,"filename":1503,"meta":1504,"navigation":846,"path":1505,"seo":1506,"sitemap":1507,"stem":1508,"subject":1509,"tags":1510,"updated":1501,"volume":853,"__hash__":1513},"blog\u002Fblog\u002F250819-exif.md","EXIF(Exchangeable Image File Format) 데이터",{"type":8,"value":859,"toc":1495},[860,863,943,946,950,957,968,985,998,1094,1102,1107,1111,1119,1122,1129,1133,1136,1139,1145,1148,1152,1304,1310,1314,1322,1325,1334,1489,1492],[16,861,862],{},"**EXIF(Exchangeable Image File Format)**는 사진 이미지 데이터 자체 외에, 그 사진이 어떻게, 언제, 어디서, 무엇으로 찍혔는지에 대한 구체적인 **메타데이터(데이터에 대한 데이터)**를 담고 있다.",[24,864,865,885,923],{},[27,866,867,870,871],{},[792,868,869],{},"카메라 정보",": 어떤 장비로 사진을 찍었는지 알려준다.\n",[24,872,873,879],{},[27,874,875,878],{},[792,876,877],{},"카메라 제조사 및 모델",": 예) SAMSUNG, Apple, SM-S928N, iPhone 15 Pro",[27,880,881,884],{},[792,882,883],{},"렌즈 정보",": 사용된 렌즈의 종류, 초점 거리 등",[27,886,887,890,891],{},[792,888,889],{},"촬영 설정값",": 사진을 어떤 설정으로 찍었는지에 대한 기술적인 정보.\n",[24,892,893,899,905,911],{},[27,894,895,898],{},[792,896,897],{},"ISO 감도",": 빛에 얼마나 민감하게 반응했는지",[27,900,901,904],{},[792,902,903],{},"조리개 값 (F-stop)",": 렌즈를 얼마나 열었는지 (심도 표현과 관련)",[27,906,907,910],{},[792,908,909],{},"셔터 속도",": 얼마나 빠른 속도로 빛을 받아들였는지 (움직임 표현과 관련)",[27,912,913,64,916,64,919,922],{},[792,914,915],{},"노출 보정",[792,917,918],{},"화이트 밸런스",[792,920,921],{},"플래시 사용 여부"," 등",[27,924,925,928,929],{},[792,926,927],{},"시간 및 위치 정보",": 사진 찍은 시간, 위경도\n",[24,930,931,937],{},[27,932,933,936],{},[792,934,935],{},"촬영 날짜 및 시간",": 사진을 찍은 정확한 날짜와 시간.",[27,938,939,942],{},[792,940,941],{},"GPS 좌표 (위도, 경도)",": 카메라의 위치 정보 기록 기능이 켜져 있어야 함.",[16,944,945],{},"내가 필요한 건 시간 및 위치 정보가 남기를 바란다.",[11,947,949],{"id":948},"webview-태그를-통해서-업로드-시","webview 태그를 통해서 업로드 시",[16,951,952,953,956],{},"브라우저에서 ",[31,954,955],{},"\u003Cinput type=\"file\">"," 를 통해 파일을 선택하면, 안드로이드의 파일 선택기가 열리고, 브라우저는 파일의 복사본을 만들어둔다. 이 과정에서 브라우저는 개인정보 유출을 막기 위해서 EXIF 데이터를 의도적으로 삭제한다.",[16,958,959,960,963,964,967],{},"웹뷰의 경우 ",[31,961,962],{},"onShowFileChooser"," 에서 개발자가 EXIF 정보가 보존되게 할 수 있다. ",[31,965,966],{},"ACCESS_MEDIA_LOCATION"," 권한을 사용자에게 허가받으면 파일의 위치 정보를 보존할 수 있다",[82,969,973],{"className":970,"code":971,"language":972,"meta":87,"style":87},"language-xml shiki shiki-themes github-light github-dark","\u003Cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" \u002F>\n\u003Cuses-permission android:name=\"android.permission.ACCESS_MEDIA_LOCATION\" \u002F>\n","xml",[31,974,975,980],{"__ignoreMap":87},[91,976,977],{"class":93,"line":94},[91,978,979],{},"\u003Cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" \u002F>\n",[91,981,982],{"class":93,"line":105},[91,983,984],{},"\u003Cuses-permission android:name=\"android.permission.ACCESS_MEDIA_LOCATION\" \u002F>\n",[16,986,987,989,990,993,994,997],{},[31,988,962],{}," 에서 파일 선택 결과를 ",[31,991,992],{},"ActivityResultLauncher"," 로 받는데, 이때 Uri 를 가공하지 않고 그대로 ",[31,995,996],{},"filePathCallback.onReceiveValue()"," 에 전달하면 된다.",[82,999,1003],{"className":1000,"code":1001,"language":1002,"meta":87,"style":87},"language-kotlin shiki shiki-themes github-light github-dark","\u002F\u002F EXIF 정보 디버그 출력  \ntry {  \n    val uri = data?.data  \n    if (uri != null) {  \n        activity.contentResolver.openInputStream(uri)?.use { inputStream ->  \n            val exif = ExifInterface(inputStream)  \n            Log.d(TAG, \"Single File EXIF Info:\")  \n            Log.d(TAG, \"  DateTime: ${exif.getAttribute(ExifInterface.TAG_DATETIME)}\")  \n            Log.d(TAG, \"  GPS Latitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)}\")  \n            Log.d(TAG, \"  GPS Longitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)}\")  \n            Log.d(TAG, \"  Make: ${exif.getAttribute(ExifInterface.TAG_MAKE)}\")  \n            Log.d(TAG, \"  Model: ${exif.getAttribute(ExifInterface.TAG_MODEL)}\")  \n            Log.d(TAG, \"  Orientation: ${exif.getAttribute(ExifInterface.TAG_ORIENTATION)}\")  \n        }  \n    }  \n} catch (e: Exception) {  \n    Log.e(TAG, \"EXIF 정보 읽기 실패\", e)  \n}\n","kotlin",[31,1004,1005,1010,1015,1020,1025,1030,1035,1040,1045,1050,1055,1060,1065,1070,1075,1080,1085,1090],{"__ignoreMap":87},[91,1006,1007],{"class":93,"line":94},[91,1008,1009],{},"\u002F\u002F EXIF 정보 디버그 출력  \n",[91,1011,1012],{"class":93,"line":105},[91,1013,1014],{},"try {  \n",[91,1016,1017],{"class":93,"line":121},[91,1018,1019],{},"    val uri = data?.data  \n",[91,1021,1022],{"class":93,"line":134},[91,1023,1024],{},"    if (uri != null) {  \n",[91,1026,1027],{"class":93,"line":228},[91,1028,1029],{},"        activity.contentResolver.openInputStream(uri)?.use { inputStream ->  \n",[91,1031,1032],{"class":93,"line":250},[91,1033,1034],{},"            val exif = ExifInterface(inputStream)  \n",[91,1036,1037],{"class":93,"line":260},[91,1038,1039],{},"            Log.d(TAG, \"Single File EXIF Info:\")  \n",[91,1041,1042],{"class":93,"line":274},[91,1043,1044],{},"            Log.d(TAG, \"  DateTime: ${exif.getAttribute(ExifInterface.TAG_DATETIME)}\")  \n",[91,1046,1047],{"class":93,"line":284},[91,1048,1049],{},"            Log.d(TAG, \"  GPS Latitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)}\")  \n",[91,1051,1052],{"class":93,"line":299},[91,1053,1054],{},"            Log.d(TAG, \"  GPS Longitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)}\")  \n",[91,1056,1057],{"class":93,"line":319},[91,1058,1059],{},"            Log.d(TAG, \"  Make: ${exif.getAttribute(ExifInterface.TAG_MAKE)}\")  \n",[91,1061,1062],{"class":93,"line":334},[91,1063,1064],{},"            Log.d(TAG, \"  Model: ${exif.getAttribute(ExifInterface.TAG_MODEL)}\")  \n",[91,1066,1067],{"class":93,"line":355},[91,1068,1069],{},"            Log.d(TAG, \"  Orientation: ${exif.getAttribute(ExifInterface.TAG_ORIENTATION)}\")  \n",[91,1071,1072],{"class":93,"line":364},[91,1073,1074],{},"        }  \n",[91,1076,1077],{"class":93,"line":378},[91,1078,1079],{},"    }  \n",[91,1081,1082],{"class":93,"line":387},[91,1083,1084],{},"} catch (e: Exception) {  \n",[91,1086,1087],{"class":93,"line":402},[91,1088,1089],{},"    Log.e(TAG, \"EXIF 정보 읽기 실패\", e)  \n",[91,1091,1092],{"class":93,"line":422},[91,1093,137],{},[82,1095,1100],{"className":1096,"code":1098,"language":1099},[1097],"language-text","Single File EXIF Info:\n   DateTime: 2025:07:18 08:43:28\n   GPS Latitude: 37\u002F1,0\u002F1,0\u002F100000\n   GPS Longitude: 127\u002F1,0\u002F1,0\u002F00000\n   Make: samsung\n   Model: SM-N960N\n   Orientation: 6\n","text",[31,1101,1098],{"__ignoreMap":87},[16,1103,1104,1106],{},[31,1105,966],{}," 권한을 부여하면 GPS 정보가 정상적으로 기록된다. 그렇지 않으면 0\u002F1과 같은 형태로 기록된다. 따라서 사용자에게 권한을 명시적으로 받아야 한다.",[11,1108,1110],{"id":1109},"웹에서-exif-정보-가져오기","웹에서 exif 정보 가져오기",[1112,1113],"cardlink",{"description":1114,"host":1115,"title":1116,"url":1117,"favicon":1118},"온라인 메타데이터 및 EXIF는 동영상, 오디오, 이미지, 아카이브 및 문서 파일에서 비밀 메타데이터 및 EXIF 정보를 무료로 추출하는 온라인 도구입니다. 다양한 파일 및 메타데이터 형식을 지원합니다.","online-metadata.com","온라인 메타데이터 및 EXIF 무료 뷰어","https:\u002F\u002Fonline-metadata.com\u002Fko","\u002Ffavicon.ico",[16,1120,1121],{},"웹에서 파일 업로드를 했을 때 EXIF 정보가 누락되는 현상이 있다. 하지만 위 사이트에서는 정상적으로 작동한다. 무슨 차이가 있을까?",[16,1123,1124,1125,1128],{},"위 페이지는 파일을 ",[31,1126,1127],{},"\u003Cform>"," 태그를 통해 그대로 서버로 전달하기 때문에 EXIF 데이터의 손실 없이 전달되어 분석이 가능한 것이다. 반면 브라우저 JavaScript에서 파일 데이터에 직접 접근하려고 하면 브라우저 보안 정책상 일부 정보(EXIF 등)가 차단될 수 있다.",[49,1130,1132],{"id":1131},"웹뷰에서-native-로직을-통해-전달된-경우","웹뷰에서 native 로직을 통해 전달된 경우",[16,1134,1135],{},"앱이 OS 권한을 얻어서 브라우저 기본 정책이 아닌 앱의 권한으로 데이터를 직접 전달한다. 따라서 앱을 통해 파일을 선택한 경우 웹에서도 EXIF 데이터를 조회하고 다룰 수 있게 된다.",[16,1137,1138],{},"다만 EXIF 도 개인정보로 취급할 수 있기 때문에 저장과 노출에 주의를 해야한다. 서버에 저장할 경우 정말 필요한 만큼만 특정되지 않을 정도의 정보만 취급하거나, 저장하지 않는 게 좋다.",[1112,1140],{"description":1141,"host":1142,"title":1143,"url":1144},"정부혁신 보다나은정부","www.innovation.go.kr","혁신24 - 정부혁신 홈페이지","https:\u002F\u002Fwww.innovation.go.kr\u002Fucms\u002Fbbs\u002FB0000060\u002Fview.do?nttId=17555&menuNo=300240&searchType=4&pageIndex=1",[16,1146,1147],{},"정부 페이지에서 EXIF 데이터의 위험성과 대응법도 홍보하고 있다.",[757,1149,1151],{"id":1150},"데이터-형식","데이터 형식",[82,1153,1157],{"className":1154,"code":1155,"language":1156,"meta":87,"style":87},"language-ts shiki shiki-themes github-light github-dark","fileList.forEach((file) => {\n    exifr.parse(file)\n        .then((metadata: any) => {\n            console.log(`[EXIF] ${file.name}`, metadata);\n        })\n        .catch((error: any) => {\n            console.error(`[EXIF] Failed to parse EXIF for ${file.name}`, error);\n        });\n});\n","ts",[31,1158,1159,1182,1193,1218,1245,1250,1272,1294,1299],{"__ignoreMap":87},[91,1160,1161,1164,1167,1170,1174,1177,1180],{"class":93,"line":94},[91,1162,1163],{"class":101},"fileList.",[91,1165,1166],{"class":97},"forEach",[91,1168,1169],{"class":101},"((",[91,1171,1173],{"class":1172},"s4XuR","file",[91,1175,1176],{"class":101},") ",[91,1178,1179],{"class":566},"=>",[91,1181,102],{"class":101},[91,1183,1184,1187,1190],{"class":93,"line":105},[91,1185,1186],{"class":101},"    exifr.",[91,1188,1189],{"class":97},"parse",[91,1191,1192],{"class":101},"(file)\n",[91,1194,1195,1198,1201,1203,1206,1209,1212,1214,1216],{"class":93,"line":121},[91,1196,1197],{"class":101},"        .",[91,1199,1200],{"class":97},"then",[91,1202,1169],{"class":101},[91,1204,1205],{"class":1172},"metadata",[91,1207,1208],{"class":566},":",[91,1210,1211],{"class":108}," any",[91,1213,1176],{"class":101},[91,1215,1179],{"class":566},[91,1217,102],{"class":101},[91,1219,1220,1223,1226,1228,1231,1233,1236,1239,1242],{"class":93,"line":134},[91,1221,1222],{"class":101},"            console.",[91,1224,1225],{"class":97},"log",[91,1227,795],{"class":101},[91,1229,1230],{"class":169},"`[EXIF] ${",[91,1232,1173],{"class":101},[91,1234,1235],{"class":169},".",[91,1237,1238],{"class":101},"name",[91,1240,1241],{"class":169},"}`",[91,1243,1244],{"class":101},", metadata);\n",[91,1246,1247],{"class":93,"line":228},[91,1248,1249],{"class":101},"        })\n",[91,1251,1252,1254,1257,1259,1262,1264,1266,1268,1270],{"class":93,"line":250},[91,1253,1197],{"class":101},[91,1255,1256],{"class":97},"catch",[91,1258,1169],{"class":101},[91,1260,1261],{"class":1172},"error",[91,1263,1208],{"class":566},[91,1265,1211],{"class":108},[91,1267,1176],{"class":101},[91,1269,1179],{"class":566},[91,1271,102],{"class":101},[91,1273,1274,1276,1278,1280,1283,1285,1287,1289,1291],{"class":93,"line":260},[91,1275,1222],{"class":101},[91,1277,1261],{"class":97},[91,1279,795],{"class":101},[91,1281,1282],{"class":169},"`[EXIF] Failed to parse EXIF for ${",[91,1284,1173],{"class":101},[91,1286,1235],{"class":169},[91,1288,1238],{"class":101},[91,1290,1241],{"class":169},[91,1292,1293],{"class":101},", error);\n",[91,1295,1296],{"class":93,"line":274},[91,1297,1298],{"class":101},"        });\n",[91,1300,1301],{"class":93,"line":284},[91,1302,1303],{"class":101},"});\n",[16,1305,1306,1309],{},[31,1307,1308],{},"exifr"," 라이브러리를 활용해서 EXIF 데이터를 분석했다. parse 결과값에서 원하는 정보를 활용하면 된다.",[49,1311,1313],{"id":1312},"exif-데이터-삽입하기-piexif-라이브러리","exif 데이터 삽입하기 (piexif 라이브러리)",[1112,1315],{"description":1316,"host":1317,"title":1318,"url":1319,"favicon":1320,"image":1321},"Read and modify exif in client-side or server-side JavaScript. - hMatoba\u002Fpiexifjs","github.com","GitHub - hMatoba\u002Fpiexifjs: Read and modify exif in client-side or server-side JavaScript.","https:\u002F\u002Fgithub.com\u002FhMatoba\u002Fpiexifjs","https:\u002F\u002Fgithub.githubassets.com\u002Ffavicons\u002Ffavicon.svg","https:\u002F\u002Fopengraph.githubassets.com\u002F4d891948fb9214037064aa86f3e5d24d9852af2a18436ffb78fadfae5d6d1977\u002FhMatoba\u002Fpiexifjs",[16,1323,1324],{},"이미지를 후처리하다가 EXIF 데이터가 소실되는 경우도 있다. 예를 들어 캔버스(Canvas)에 이미지를 그리고 추가적인 처리를 한 뒤 다시 이미지로 추출했을 때는 EXIF 데이터가 없는 상태가 된다. 이러한 경우에는 미리 가지고 있던 EXIF 데이터를 저장해두었다가 결과 이미지에 주입하는 방법을 사용할 수 있다.",[16,1326,1327,1329,1330,1333],{},[31,1328,1308],{}," 라이브러리는 읽기 전용 라이브러리이므로, EXIF 데이터를 파일에 쓰는 기능은 없다. ",[31,1331,1332],{},"piexif"," 라이브러리를 사용해보자.",[82,1335,1337],{"className":1154,"code":1336,"language":1156,"meta":87,"style":87},"\u002F\u002F EXIF 저장\nlet exifStr: string | null = null;\ntry {\n    const originalDataURL = await fileToDataURL(origFile);\n    const exifObj = piexif.load(originalDataURL);\n    exifStr = piexif.dump(exifObj);\n} catch (e) { ... }\n\n\u002F\u002F EXIF 삽입\ntry {\n    finalDataURL = piexif.insert(exifStr, resizeResult.dataURL);\n} catch (e) { ... }\n",[31,1338,1339,1345,1371,1378,1397,1415,1430,1446,1451,1456,1462,1477],{"__ignoreMap":87},[91,1340,1341],{"class":93,"line":94},[91,1342,1344],{"class":1343},"sJ8bj","\u002F\u002F EXIF 저장\n",[91,1346,1347,1350,1353,1355,1358,1361,1364,1367,1369],{"class":93,"line":105},[91,1348,1349],{"class":566},"let",[91,1351,1352],{"class":101}," exifStr",[91,1354,1208],{"class":566},[91,1356,1357],{"class":108}," string",[91,1359,1360],{"class":566}," |",[91,1362,1363],{"class":108}," null",[91,1365,1366],{"class":566}," =",[91,1368,1363],{"class":108},[91,1370,118],{"class":101},[91,1372,1373,1376],{"class":93,"line":121},[91,1374,1375],{"class":566},"try",[91,1377,102],{"class":101},[91,1379,1380,1383,1386,1388,1391,1394],{"class":93,"line":134},[91,1381,1382],{"class":566},"    const",[91,1384,1385],{"class":108}," originalDataURL",[91,1387,1366],{"class":566},[91,1389,1390],{"class":566}," await",[91,1392,1393],{"class":97}," fileToDataURL",[91,1395,1396],{"class":101},"(origFile);\n",[91,1398,1399,1401,1404,1406,1409,1412],{"class":93,"line":228},[91,1400,1382],{"class":566},[91,1402,1403],{"class":108}," exifObj",[91,1405,1366],{"class":566},[91,1407,1408],{"class":101}," piexif.",[91,1410,1411],{"class":97},"load",[91,1413,1414],{"class":101},"(originalDataURL);\n",[91,1416,1417,1420,1422,1424,1427],{"class":93,"line":250},[91,1418,1419],{"class":101},"    exifStr ",[91,1421,166],{"class":566},[91,1423,1408],{"class":101},[91,1425,1426],{"class":97},"dump",[91,1428,1429],{"class":101},"(exifObj);\n",[91,1431,1432,1435,1437,1440,1443],{"class":93,"line":260},[91,1433,1434],{"class":101},"} ",[91,1436,1256],{"class":566},[91,1438,1439],{"class":101}," (e) { ",[91,1441,1442],{"class":566},"...",[91,1444,1445],{"class":101}," }\n",[91,1447,1448],{"class":93,"line":274},[91,1449,1450],{"emptyLinePlaceholder":846},"\n",[91,1452,1453],{"class":93,"line":284},[91,1454,1455],{"class":1343},"\u002F\u002F EXIF 삽입\n",[91,1457,1458,1460],{"class":93,"line":299},[91,1459,1375],{"class":566},[91,1461,102],{"class":101},[91,1463,1464,1467,1469,1471,1474],{"class":93,"line":319},[91,1465,1466],{"class":101},"    finalDataURL ",[91,1468,166],{"class":566},[91,1470,1408],{"class":101},[91,1472,1473],{"class":97},"insert",[91,1475,1476],{"class":101},"(exifStr, resizeResult.dataURL);\n",[91,1478,1479,1481,1483,1485,1487],{"class":93,"line":334},[91,1480,1434],{"class":101},[91,1482,1256],{"class":566},[91,1484,1439],{"class":101},[91,1486,1442],{"class":566},[91,1488,1445],{"class":101},[16,1490,1491],{},"원본의 exif 가 그대로 주입된다.",[829,1493,1494],{},"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);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":1496},[1497,1500],{"id":1131,"depth":105,"text":1132,"children":1498},[1499],{"id":1150,"depth":121,"text":1151},{"id":1312,"depth":105,"text":1313},"2025-08-19","웹과 안드로이드에서 사진의 EXIF 데이터를 다루는 방법. 브라우저의 보안 특성 상 웹에서는 EXIF 를 의도적으로 누락시킴.","exif",{},"\u002Fblog\u002F250819-exif",{"title":857,"description":1502},{"loc":1505},"blog\u002F250819-exif","System",[1511,1512],"android","mobile","oGkBVFAB5TzWv1pYwp9DKP4IgKktT29epNzkFnU-_Qc",{"id":1515,"title":1516,"body":1517,"created":1854,"description":1855,"extension":843,"filename":1856,"meta":1857,"navigation":846,"path":1858,"seo":1859,"sitemap":1860,"stem":1861,"subject":851,"tags":1862,"updated":1854,"volume":1863,"__hash__":1864},"blog\u002Fblog\u002F251211-max-height-transition-delay.md","max-height transition 딜레이",{"type":8,"value":1518,"toc":1852},[1519,1703,1708,1711,1718,1721,1745,1846,1849],[82,1520,1522],{"className":84,"code":1521,"language":86,"meta":87,"style":87},".memo-text {\n  word-break: break-word;\n  max-height: 48px;\n  transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n  overflow: hidden;\n  position: relative;\n  will-change: max-height;\n  \n  &.memo-text-expanded {\n    max-height: 1000px;\n    transition: max-height 1s ease-in-out;\n    \n    &::after {\n      opacity: 0;\n    }\n  }\n}\n",[31,1523,1524,1531,1543,1557,1595,1605,1617,1625,1630,1640,1654,1670,1675,1680,1689,1694,1699],{"__ignoreMap":87},[91,1525,1526,1529],{"class":93,"line":94},[91,1527,1528],{"class":97},".memo-text",[91,1530,102],{"class":101},[91,1532,1533,1536,1538,1541],{"class":93,"line":105},[91,1534,1535],{"class":108},"  word-break",[91,1537,112],{"class":101},[91,1539,1540],{"class":108},"break-word",[91,1542,118],{"class":101},[91,1544,1545,1548,1550,1553,1555],{"class":93,"line":121},[91,1546,1547],{"class":108},"  max-height",[91,1549,112],{"class":101},[91,1551,1552],{"class":108},"48",[91,1554,567],{"class":566},[91,1556,118],{"class":101},[91,1558,1559,1562,1565,1568,1571,1574,1576,1579,1581,1584,1586,1588,1590,1592],{"class":93,"line":134},[91,1560,1561],{"class":108},"  transition",[91,1563,1564],{"class":101},": max-height ",[91,1566,1567],{"class":108},"0.5",[91,1569,1570],{"class":566},"s",[91,1572,1573],{"class":108}," cubic-bezier",[91,1575,795],{"class":101},[91,1577,1578],{"class":108},"0",[91,1580,64],{"class":101},[91,1582,1583],{"class":108},"1",[91,1585,64],{"class":101},[91,1587,1578],{"class":108},[91,1589,64],{"class":101},[91,1591,1583],{"class":108},[91,1593,1594],{"class":101},");\n",[91,1596,1597,1599,1601,1603],{"class":93,"line":228},[91,1598,109],{"class":108},[91,1600,112],{"class":101},[91,1602,115],{"class":108},[91,1604,118],{"class":101},[91,1606,1607,1610,1612,1615],{"class":93,"line":250},[91,1608,1609],{"class":108},"  position",[91,1611,112],{"class":101},[91,1613,1614],{"class":108},"relative",[91,1616,118],{"class":101},[91,1618,1619,1622],{"class":93,"line":260},[91,1620,1621],{"class":108},"  will-change",[91,1623,1624],{"class":101},": max-height;\n",[91,1626,1627],{"class":93,"line":274},[91,1628,1629],{"class":101},"  \n",[91,1631,1632,1635,1638],{"class":93,"line":284},[91,1633,1634],{"class":101},"  &.",[91,1636,1637],{"class":108},"memo-text-expanded",[91,1639,102],{"class":101},[91,1641,1642,1645,1647,1650,1652],{"class":93,"line":299},[91,1643,1644],{"class":108},"    max-height",[91,1646,112],{"class":101},[91,1648,1649],{"class":108},"1000",[91,1651,567],{"class":566},[91,1653,118],{"class":101},[91,1655,1656,1659,1661,1663,1665,1668],{"class":93,"line":319},[91,1657,1658],{"class":108},"    transition",[91,1660,1564],{"class":101},[91,1662,1583],{"class":108},[91,1664,1570],{"class":566},[91,1666,1667],{"class":108}," ease-in-out",[91,1669,118],{"class":101},[91,1671,1672],{"class":93,"line":334},[91,1673,1674],{"class":101},"    \n",[91,1676,1677],{"class":93,"line":355},[91,1678,1679],{"class":101},"    &::after {\n",[91,1681,1682,1685,1687],{"class":93,"line":364},[91,1683,1684],{"class":101},"      opacity: ",[91,1686,1578],{"class":108},[91,1688,118],{"class":101},[91,1690,1691],{"class":93,"line":378},[91,1692,1693],{"class":101},"    }\n",[91,1695,1696],{"class":93,"line":387},[91,1697,1698],{"class":101},"  }\n",[91,1700,1701],{"class":93,"line":402},[91,1702,137],{"class":101},[16,1704,1705],{},[19,1706],{"alt":1516,"src":1707},"\u002Fblog\u002Fimg\u002F251211-max-height-transition-delay\u002Fimage.png",[16,1709,1710],{},"이렇게 2줄 이상일 때 아래 그라데이션이 생기고 (::after 부분) 접고 펼 수 있는 기능이다. max-height 를 조절해서 구현했는데, 펼칠 때는 너무 빠르고, 닫을 때는 너무 느린 현상이 발생했다.",[1112,1712],{"description":1713,"host":1714,"image":1715,"title":1716,"url":1717},"I'm having an issue with a transition I'm using to slide a panel in and out.Please take a look at the following jsbin http:\u002F\u002Fjsbin.com\u002Fuvejuj\u002F1\u002F Notice that when i click the toggle button the f...","stackoverflow.com","https:\u002F\u002Fstackoverflow.com\u002FContent\u002FSites\u002Fstackoverflow\u002FImg\u002Fapple-touch-icon@2.png?v=73d79a89bded","How to Remove Delay on Css3 Slide out transition which uses max-height transition","https:\u002F\u002Fstackoverflow.com\u002Fa\u002F39103903",[16,1719,1720],{},"여기에서 처럼 cubic-bezier 를 조절했다.",[1722,1723,1724],"blockquote",{},[16,1725,1726,1729,1730,1732,1733,1736,1737,1740,1741,1744],{},[91,1727,1728],{},"!hint","\nIt's because you're animating between ",[31,1731,1578],{}," and ",[31,1734,1735],{},"1000px"," ",[31,1738,1739],{},"max-height",", but your content is only about ",[31,1742,1743],{},"120px"," high. The delay is the animation happening on the 880 pixels you can't see.\nmax-height 가 1000px 에서 0으로 주는 동안 120px 짜리의 컨텐츠는 아무 동작을 안하는 것처럼 보이는 것이다.",[82,1746,1748],{"className":84,"code":1747,"language":86,"meta":87,"style":87},".text {\n  overflow: hidden;\n  max-height: 0;\n  transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n  &.full {\n    max-height: 1000px;\n    transition: max-height 1s ease-in-out;\n}\n",[31,1749,1750,1757,1767,1777,1807,1816,1828,1842],{"__ignoreMap":87},[91,1751,1752,1755],{"class":93,"line":94},[91,1753,1754],{"class":97},".text",[91,1756,102],{"class":101},[91,1758,1759,1761,1763,1765],{"class":93,"line":105},[91,1760,109],{"class":108},[91,1762,112],{"class":101},[91,1764,115],{"class":108},[91,1766,118],{"class":101},[91,1768,1769,1771,1773,1775],{"class":93,"line":121},[91,1770,1547],{"class":108},[91,1772,112],{"class":101},[91,1774,1578],{"class":108},[91,1776,118],{"class":101},[91,1778,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805],{"class":93,"line":134},[91,1780,1561],{"class":108},[91,1782,1564],{"class":101},[91,1784,1567],{"class":108},[91,1786,1570],{"class":566},[91,1788,1573],{"class":108},[91,1790,795],{"class":101},[91,1792,1578],{"class":108},[91,1794,64],{"class":101},[91,1796,1583],{"class":108},[91,1798,64],{"class":101},[91,1800,1578],{"class":108},[91,1802,64],{"class":101},[91,1804,1583],{"class":108},[91,1806,1594],{"class":101},[91,1808,1809,1811,1814],{"class":93,"line":228},[91,1810,1634],{"class":101},[91,1812,1813],{"class":108},"full",[91,1815,102],{"class":101},[91,1817,1818,1820,1822,1824,1826],{"class":93,"line":250},[91,1819,1644],{"class":108},[91,1821,112],{"class":101},[91,1823,1649],{"class":108},[91,1825,567],{"class":566},[91,1827,118],{"class":101},[91,1829,1830,1832,1834,1836,1838,1840],{"class":93,"line":260},[91,1831,1658],{"class":108},[91,1833,1564],{"class":101},[91,1835,1583],{"class":108},[91,1837,1570],{"class":566},[91,1839,1667],{"class":108},[91,1841,118],{"class":101},[91,1843,1844],{"class":93,"line":274},[91,1845,137],{"class":101},[16,1847,1848],{},"그래서 이렇게 극단적으로 애니메이션 동작 지점을 단축시키면서 해결한듯 하다.",[829,1850,1851],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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":87,"searchDepth":105,"depth":105,"links":1853},[],"2025-12-11","accordion 을 만들며 height 를 조정해 접고 펼침을 구현할 때, 애니메이션의 딜레이가 발생하는 이유와 헤결, 경험을 공유.","max-height-transition-delay",{},"\u002Fblog\u002F251211-max-height-transition-delay",{"title":1516,"description":1855},{"loc":1858},"blog\u002F251211-max-height-transition-delay",[86],"short","snbcl11KoQwTOKI0MLWQKgcfstWlDyqYA9qyWXaJ97A",{"id":1866,"title":1867,"body":1868,"created":2854,"description":2855,"extension":843,"filename":2856,"meta":2857,"navigation":846,"path":2858,"seo":2859,"sitemap":2860,"stem":2861,"subject":2862,"tags":2863,"updated":2854,"volume":1863,"__hash__":2866},"blog\u002Fblog\u002F260119-tracking-parent-the-time.md","부모 컴포넌트의 초기화 완료 시점 감지하기 (Promise.withResolvers)",{"type":8,"value":1869,"toc":2851},[1870,1877,1899,1902,1908,1914,1918,1932,2156,2170,2293,2299,2303,2319,2323,2333,2375,2380,2472,2480,2484,2490,2702,2714,2845,2848],[16,1871,1872,1873,1876],{},"일반적으로 Vue에서는 부모가 자식에게 값을 전달하고, 자식은 이벤트를 통해 부모에게 데이터를 전달하는 ",[792,1874,1875],{},"Props Down, Events Up"," 방식을 따른다. 부모가 자식의 내부 함수를 직접 호출하는 방식은 컴포넌트 간 결합도를 높이므로 지양하는 편이다. 하지만 부모 컴포넌트의 특정 비동기 작업이 완료된 시점을 자식 컴포넌트가 정확히 알아야 할 때가 있다. 예를 들어, 부모가 비동기로 초기화 데이터를 모두 가져온 후에만 자식 컴포넌트가 로직을 수행해야 하는 경우다.",[24,1878,1879,1886,1893],{},[27,1880,1881,1882,1885],{},"부모의 isInitialized 변수를 자식에게 전달하고, 자식은 ",[31,1883,1884],{},"watch"," 로 감지하기.",[27,1887,1888,1889,1892],{},"자식의 parentInitialized() 함수를 ",[31,1890,1891],{},"defineExpose"," 로 export 한 후 template ref 로 호출하기.",[27,1894,1895,1896,1898],{},"promise 를 전달해서 적절한 시점에 자식이 ",[31,1897,1200],{}," 블럭에서 기능 수행하기.",[16,1900,1901],{},"이 중 3번째 방법을 고안해냈다.",[16,1903,1904,1905,1907],{},"첫 번째 방법(",[31,1906,1884],{},")은 의도하지 않은 시점에 변수가 변경되어 사이드 이펙트가 발생할 가능성이 있다. 단순한 값이 아닌 복잡한 초기화 흐름을 제어하고 싶을 때, 예기치 않은 타이밍에 감지가 일어나 로직이 꼬일 수 있다. 또한 자식 컴포넌트가 마운트되기 전에 이미 부모의 초기화가 끝나버렸다면 감지가 불가능할 수도 있다.",[16,1909,1910,1911,1913],{},"두 번째 방법(",[31,1912,1891],{},")은 부모가 자식의 구현 상세(메서드명 등)를 알아야 하므로 결합도가 높아진다.",[11,1915,1917],{"id":1916},"promise-전달해서-자식도-초기화-시점-감지하기","Promise 전달해서 자식도 초기화 시점 감지하기",[16,1919,1920,1921,1924,1925,1927,1928,1931],{},"ECMAScript 2024 에 추가된 ",[31,1922,1923],{},"Promise.withResolvers","를 활용하면 완료 시점을 깔끔하게 싱크할 수 있다. 일반적인 비동기 함수는 실행과 동시에 Promise를 반환한다. 하지만 ",[31,1926,1923],{},"를 사용하면 Promise 객체와 이를 해결할 수 있는 ",[31,1929,1930],{},"resolve"," 함수를 분리하여 선언할 수 있다. 덕분에 부모는 원하는 복잡한 로직을 모두 수행한 뒤, 아주 정밀한 타이밍에 자식에게 신호를 보낸다.",[82,1933,1937],{"className":1934,"code":1935,"language":1936,"meta":87,"style":87},"language-vue shiki shiki-themes github-light github-dark","\u003Cscript setup lang=\"ts\">\n\u002F\u002F Promise와 resolve 함수를 외부로 추출하여 선언\nconst initReady = Promise.withResolvers\u003Cvoid>();\n\nasync function runInit() {\n  try {\n    \u002F\u002F API 호출, 로컬 스토리지 확인, 권한 체크 등 복잡한 초기화 수행\n    await doSomethingComplex();\n    \n    \u002F\u002F 모든 작업이 끝난 원하는 시점에 약속 이행\n    initReady.resolve();\n  } catch (error) {\n    initReady.reject(error);\n  }\n}\n\nonMounted(() => {\n  runInit();\n});\n\u003C\u002Fscript>\n\u003Ctemplate>\n  \u003CChild :init-ready=\"initReady.promise\" \u002F>\n\u003C\u002Ftemplate>\n","vue",[31,1938,1939,1959,1964,1990,1994,2008,2015,2020,2031,2035,2040,2049,2059,2069,2073,2077,2081,2093,2100,2104,2112,2121,2148],{"__ignoreMap":87},[91,1940,1941,1943,1946,1949,1952,1954,1957],{"class":93,"line":94},[91,1942,156],{"class":101},[91,1944,1945],{"class":159},"script",[91,1947,1948],{"class":97}," setup",[91,1950,1951],{"class":97}," lang",[91,1953,166],{"class":101},[91,1955,1956],{"class":169},"\"ts\"",[91,1958,173],{"class":101},[91,1960,1961],{"class":93,"line":105},[91,1962,1963],{"class":1343},"\u002F\u002F Promise와 resolve 함수를 외부로 추출하여 선언\n",[91,1965,1966,1969,1972,1974,1977,1979,1982,1984,1987],{"class":93,"line":121},[91,1967,1968],{"class":566},"const",[91,1970,1971],{"class":108}," initReady",[91,1973,1366],{"class":566},[91,1975,1976],{"class":108}," Promise",[91,1978,1235],{"class":101},[91,1980,1981],{"class":97},"withResolvers",[91,1983,156],{"class":101},[91,1985,1986],{"class":108},"void",[91,1988,1989],{"class":101},">();\n",[91,1991,1992],{"class":93,"line":134},[91,1993,1450],{"emptyLinePlaceholder":846},[91,1995,1996,1999,2002,2005],{"class":93,"line":228},[91,1997,1998],{"class":566},"async",[91,2000,2001],{"class":566}," function",[91,2003,2004],{"class":97}," runInit",[91,2006,2007],{"class":101},"() {\n",[91,2009,2010,2013],{"class":93,"line":250},[91,2011,2012],{"class":566},"  try",[91,2014,102],{"class":101},[91,2016,2017],{"class":93,"line":260},[91,2018,2019],{"class":1343},"    \u002F\u002F API 호출, 로컬 스토리지 확인, 권한 체크 등 복잡한 초기화 수행\n",[91,2021,2022,2025,2028],{"class":93,"line":274},[91,2023,2024],{"class":566},"    await",[91,2026,2027],{"class":97}," doSomethingComplex",[91,2029,2030],{"class":101},"();\n",[91,2032,2033],{"class":93,"line":284},[91,2034,1674],{"class":101},[91,2036,2037],{"class":93,"line":299},[91,2038,2039],{"class":1343},"    \u002F\u002F 모든 작업이 끝난 원하는 시점에 약속 이행\n",[91,2041,2042,2045,2047],{"class":93,"line":319},[91,2043,2044],{"class":101},"    initReady.",[91,2046,1930],{"class":97},[91,2048,2030],{"class":101},[91,2050,2051,2054,2056],{"class":93,"line":334},[91,2052,2053],{"class":101},"  } ",[91,2055,1256],{"class":566},[91,2057,2058],{"class":101}," (error) {\n",[91,2060,2061,2063,2066],{"class":93,"line":355},[91,2062,2044],{"class":101},[91,2064,2065],{"class":97},"reject",[91,2067,2068],{"class":101},"(error);\n",[91,2070,2071],{"class":93,"line":364},[91,2072,1698],{"class":101},[91,2074,2075],{"class":93,"line":378},[91,2076,137],{"class":101},[91,2078,2079],{"class":93,"line":387},[91,2080,1450],{"emptyLinePlaceholder":846},[91,2082,2083,2086,2089,2091],{"class":93,"line":402},[91,2084,2085],{"class":97},"onMounted",[91,2087,2088],{"class":101},"(() ",[91,2090,1179],{"class":566},[91,2092,102],{"class":101},[91,2094,2095,2098],{"class":93,"line":422},[91,2096,2097],{"class":97},"  runInit",[91,2099,2030],{"class":101},[91,2101,2102],{"class":93,"line":438},[91,2103,1303],{"class":101},[91,2105,2106,2108,2110],{"class":93,"line":458},[91,2107,493],{"class":101},[91,2109,1945],{"class":159},[91,2111,173],{"class":101},[91,2113,2114,2116,2119],{"class":93,"line":467},[91,2115,156],{"class":101},[91,2117,2118],{"class":159},"template",[91,2120,173],{"class":101},[91,2122,2123,2126,2129,2132,2135,2137,2140,2143,2145],{"class":93,"line":481},[91,2124,2125],{"class":101},"  \u003C",[91,2127,2128],{"class":159},"Child",[91,2130,2131],{"class":101}," :",[91,2133,2134],{"class":97},"init-ready",[91,2136,166],{"class":101},[91,2138,2139],{"class":169},"\"",[91,2141,2142],{"class":101},"initReady.promise",[91,2144,2139],{"class":169},[91,2146,2147],{"class":101}," \u002F>\n",[91,2149,2150,2152,2154],{"class":93,"line":490},[91,2151,493],{"class":101},[91,2153,2118],{"class":159},[91,2155,173],{"class":101},[16,2157,2158,2159,2162,2163,2166,2167,2169],{},"부모는 ",[31,2160,2161],{},"initReady","라는 통신 창구를 만들어둔다. ",[31,2164,2165],{},"initReady.resolve()","가 호출되는 순간 대기하고 있던 자식 컴포넌트들에게 신호가 전달된다. 자식에게는 ",[31,2168,2142],{}," 객체만 Props로 전달하면 된다.",[82,2171,2173],{"className":1934,"code":2172,"language":1936,"meta":87,"style":87},"\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{\n  initReady: Promise\u003Cvoid>\n}>();\n\nonMounted(async () => {\n  \u002F\u002F 부모의 초기화가 끝날 때까지 대기\n  await props.initReady;\n  \n  \u002F\u002F 이후 로직 실행\n  console.log(\"부모의 준비가 끝나 자식 로직을 시작합니다.\");\n});\n\u003C\u002Fscript>\n",[31,2174,2175,2191,2206,2221,2226,2230,2245,2250,2258,2262,2267,2281,2285],{"__ignoreMap":87},[91,2176,2177,2179,2181,2183,2185,2187,2189],{"class":93,"line":94},[91,2178,156],{"class":101},[91,2180,1945],{"class":159},[91,2182,1948],{"class":97},[91,2184,1951],{"class":97},[91,2186,166],{"class":101},[91,2188,1956],{"class":169},[91,2190,173],{"class":101},[91,2192,2193,2195,2198,2200,2203],{"class":93,"line":105},[91,2194,1968],{"class":566},[91,2196,2197],{"class":108}," props",[91,2199,1366],{"class":566},[91,2201,2202],{"class":97}," defineProps",[91,2204,2205],{"class":101},"\u003C{\n",[91,2207,2208,2211,2213,2215,2217,2219],{"class":93,"line":121},[91,2209,2210],{"class":1172},"  initReady",[91,2212,1208],{"class":566},[91,2214,1976],{"class":97},[91,2216,156],{"class":101},[91,2218,1986],{"class":108},[91,2220,173],{"class":101},[91,2222,2223],{"class":93,"line":134},[91,2224,2225],{"class":101},"}>();\n",[91,2227,2228],{"class":93,"line":228},[91,2229,1450],{"emptyLinePlaceholder":846},[91,2231,2232,2234,2236,2238,2241,2243],{"class":93,"line":250},[91,2233,2085],{"class":97},[91,2235,795],{"class":101},[91,2237,1998],{"class":566},[91,2239,2240],{"class":101}," () ",[91,2242,1179],{"class":566},[91,2244,102],{"class":101},[91,2246,2247],{"class":93,"line":260},[91,2248,2249],{"class":1343},"  \u002F\u002F 부모의 초기화가 끝날 때까지 대기\n",[91,2251,2252,2255],{"class":93,"line":274},[91,2253,2254],{"class":566},"  await",[91,2256,2257],{"class":101}," props.initReady;\n",[91,2259,2260],{"class":93,"line":284},[91,2261,1629],{"class":101},[91,2263,2264],{"class":93,"line":299},[91,2265,2266],{"class":1343},"  \u002F\u002F 이후 로직 실행\n",[91,2268,2269,2272,2274,2276,2279],{"class":93,"line":319},[91,2270,2271],{"class":101},"  console.",[91,2273,1225],{"class":97},[91,2275,795],{"class":101},[91,2277,2278],{"class":169},"\"부모의 준비가 끝나 자식 로직을 시작합니다.\"",[91,2280,1594],{"class":101},[91,2282,2283],{"class":93,"line":334},[91,2284,1303],{"class":101},[91,2286,2287,2289,2291],{"class":93,"line":355},[91,2288,493],{"class":101},[91,2290,1945],{"class":159},[91,2292,173],{"class":101},[16,2294,2295,2298],{},[31,2296,2297],{},"await props.initReady","를 통해 부모의 초기화가 완료된 이후에만 로직이 실행되도록 보장할 수 있다.",[11,2300,2302],{"id":2301},"자식이-v-if-로-마운트의-on-off-를-반복할-때","자식이 v-if 로 마운트의 on off 를 반복할 때",[16,2304,2305,2306,2309,2310,2312,2313,2315,2316,2318],{},"자식 컴포넌트가 ",[31,2307,2308],{},"v-if","에 의해 언마운트되었다가 다시 마운트되는 경우, ",[31,2311,2161],{}," 신호를 놓치지 않을까 걱정할 수 있다. 하지만 Promise는 한 번 ",[31,2314,1930],{}," 되면 그 상태(Fulfilled)가 유지된다. 따라서 자식 컴포넌트가 다시 생성되어 ",[31,2317,2297],{},"를 실행하더라도, 이미 완료된 Promise이므로 즉시 다음 로직이 실행된다. 매번 상태를 다시 확인할 필요 없이 안정적인 동작을 보장한다.",[11,2320,2322],{"id":2321},"provide-inject-로-깊은-여러-컴포넌트에-전달","provide, inject 로 깊은 여러 컴포넌트에 전달",[16,2324,2325,2326,34,2329,2332],{},"컴포넌트 계층이 깊거나(Prop Drilling 문제), 여러 자식 컴포넌트가 동시에 신호를 받아야 하는 경우 ",[31,2327,2328],{},"provide",[31,2330,2331],{},"inject","를 활용할 수 있다.",[82,2334,2336],{"className":1154,"code":2335,"language":1156,"meta":87,"style":87},"const initReady = Promise.withResolvers\u003Cvoid>();\n\u002F\u002F promise 를 provide\nprovide('initReady', initReady.promise);\n",[31,2337,2338,2358,2363],{"__ignoreMap":87},[91,2339,2340,2342,2344,2346,2348,2350,2352,2354,2356],{"class":93,"line":94},[91,2341,1968],{"class":566},[91,2343,1971],{"class":108},[91,2345,1366],{"class":566},[91,2347,1976],{"class":108},[91,2349,1235],{"class":101},[91,2351,1981],{"class":97},[91,2353,156],{"class":101},[91,2355,1986],{"class":108},[91,2357,1989],{"class":101},[91,2359,2360],{"class":93,"line":105},[91,2361,2362],{"class":1343},"\u002F\u002F promise 를 provide\n",[91,2364,2365,2367,2369,2372],{"class":93,"line":121},[91,2366,2328],{"class":97},[91,2368,795],{"class":101},[91,2370,2371],{"class":169},"'initReady'",[91,2373,2374],{"class":101},", initReady.promise);\n",[16,2376,2158,2377,2379],{},[31,2378,2328],{},"를 통해 Promise 객체를 하위 컴포넌트들에 공급한다.",[82,2381,2383],{"className":1154,"code":2382,"language":1156,"meta":87,"style":87},"\u002F\u002F promise 주입받기\nconst initReady = inject\u003CPromise\u003Cvoid>>('initReady');\n\nonMounted(async () => {\n  if (initReady) {\n    await initReady;\n    console.log(\"초기화 완료 후 자식 로직 실행\");\n  }\n});\n",[31,2384,2385,2390,2417,2421,2435,2443,2450,2464,2468],{"__ignoreMap":87},[91,2386,2387],{"class":93,"line":94},[91,2388,2389],{"class":1343},"\u002F\u002F promise 주입받기\n",[91,2391,2392,2394,2396,2398,2401,2403,2406,2408,2410,2413,2415],{"class":93,"line":105},[91,2393,1968],{"class":566},[91,2395,1971],{"class":108},[91,2397,1366],{"class":566},[91,2399,2400],{"class":97}," inject",[91,2402,156],{"class":101},[91,2404,2405],{"class":97},"Promise",[91,2407,156],{"class":101},[91,2409,1986],{"class":108},[91,2411,2412],{"class":101},">>(",[91,2414,2371],{"class":169},[91,2416,1594],{"class":101},[91,2418,2419],{"class":93,"line":121},[91,2420,1450],{"emptyLinePlaceholder":846},[91,2422,2423,2425,2427,2429,2431,2433],{"class":93,"line":134},[91,2424,2085],{"class":97},[91,2426,795],{"class":101},[91,2428,1998],{"class":566},[91,2430,2240],{"class":101},[91,2432,1179],{"class":566},[91,2434,102],{"class":101},[91,2436,2437,2440],{"class":93,"line":228},[91,2438,2439],{"class":566},"  if",[91,2441,2442],{"class":101}," (initReady) {\n",[91,2444,2445,2447],{"class":93,"line":250},[91,2446,2024],{"class":566},[91,2448,2449],{"class":101}," initReady;\n",[91,2451,2452,2455,2457,2459,2462],{"class":93,"line":260},[91,2453,2454],{"class":101},"    console.",[91,2456,1225],{"class":97},[91,2458,795],{"class":101},[91,2460,2461],{"class":169},"\"초기화 완료 후 자식 로직 실행\"",[91,2463,1594],{"class":101},[91,2465,2466],{"class":93,"line":274},[91,2467,1698],{"class":101},[91,2469,2470],{"class":93,"line":284},[91,2471,1303],{"class":101},[16,2473,2474,2476,2477,2479],{},[31,2475,2331],{},"를 통해 받아와서 사용하면 된다. 하지만 단순히 문자열 키(",[31,2478,2371],{},")로 주입받으면 타입 추론이 안 되거나, 데이터의 출처를 명확히 알기 어려워 유지보수가 힘들어질 수 있다.",[49,2481,2483],{"id":2482},"composable-를-활용해-추적을-용이하게-하기","composable 를 활용해 추적을 용이하게 하기",[16,2485,2486,2489],{},[31,2487,2488],{},"provide\u002Finject"," 패턴은 키 관리나 타입 정의가 번거로울 수 있으므로, Composable 함수(Hook)로 캡슐화하여 사용하는 것을 선호한다.",[82,2491,2493],{"className":1154,"code":2492,"language":1156,"meta":87,"style":87},"import { provide, inject, InjectionKey } from 'vue';\n\u002F\u002F 심볼을 사용하여 고유한 키 정의 \nconst InitReadyKey: InjectionKey\u003CPromise\u003Cvoid>> = Symbol('InitReady');\n\n\u002F**\n * 부모에서 호출할 provide 함수\n *\u002F\nexport function provideInit(promise: Promise\u003Cvoid>) {\n  provide(InitReadyKey, promise);\n}\n\n\u002F** \n * 자식에서 사용할 composable\n *\u002F\nexport function useInit() {\n  const initReady = inject(InitReadyKey);\n  \u002F\u002F provide 없으면 에러\n  if (!initReady) {\n    throw new Error('useInit()은 provideInit() 범위 내에서 사용해야 합니다.');\n  }\n  return initReady;\n}\n",[31,2494,2495,2511,2516,2551,2555,2560,2565,2570,2596,2604,2608,2612,2617,2622,2626,2637,2651,2656,2669,2687,2691,2698],{"__ignoreMap":87},[91,2496,2497,2500,2503,2506,2509],{"class":93,"line":94},[91,2498,2499],{"class":566},"import",[91,2501,2502],{"class":101}," { provide, inject, InjectionKey } ",[91,2504,2505],{"class":566},"from",[91,2507,2508],{"class":169}," 'vue'",[91,2510,118],{"class":101},[91,2512,2513],{"class":93,"line":105},[91,2514,2515],{"class":1343},"\u002F\u002F 심볼을 사용하여 고유한 키 정의 \n",[91,2517,2518,2520,2523,2525,2528,2530,2532,2534,2536,2539,2541,2544,2546,2549],{"class":93,"line":121},[91,2519,1968],{"class":566},[91,2521,2522],{"class":108}," InitReadyKey",[91,2524,1208],{"class":566},[91,2526,2527],{"class":97}," InjectionKey",[91,2529,156],{"class":101},[91,2531,2405],{"class":97},[91,2533,156],{"class":101},[91,2535,1986],{"class":108},[91,2537,2538],{"class":101},">> ",[91,2540,166],{"class":566},[91,2542,2543],{"class":97}," Symbol",[91,2545,795],{"class":101},[91,2547,2548],{"class":169},"'InitReady'",[91,2550,1594],{"class":101},[91,2552,2553],{"class":93,"line":134},[91,2554,1450],{"emptyLinePlaceholder":846},[91,2556,2557],{"class":93,"line":228},[91,2558,2559],{"class":1343},"\u002F**\n",[91,2561,2562],{"class":93,"line":250},[91,2563,2564],{"class":1343}," * 부모에서 호출할 provide 함수\n",[91,2566,2567],{"class":93,"line":260},[91,2568,2569],{"class":1343}," *\u002F\n",[91,2571,2572,2575,2577,2580,2582,2585,2587,2589,2591,2593],{"class":93,"line":274},[91,2573,2574],{"class":566},"export",[91,2576,2001],{"class":566},[91,2578,2579],{"class":97}," provideInit",[91,2581,795],{"class":101},[91,2583,2584],{"class":1172},"promise",[91,2586,1208],{"class":566},[91,2588,1976],{"class":97},[91,2590,156],{"class":101},[91,2592,1986],{"class":108},[91,2594,2595],{"class":101},">) {\n",[91,2597,2598,2601],{"class":93,"line":284},[91,2599,2600],{"class":97},"  provide",[91,2602,2603],{"class":101},"(InitReadyKey, promise);\n",[91,2605,2606],{"class":93,"line":299},[91,2607,137],{"class":101},[91,2609,2610],{"class":93,"line":319},[91,2611,1450],{"emptyLinePlaceholder":846},[91,2613,2614],{"class":93,"line":334},[91,2615,2616],{"class":1343},"\u002F** \n",[91,2618,2619],{"class":93,"line":355},[91,2620,2621],{"class":1343}," * 자식에서 사용할 composable\n",[91,2623,2624],{"class":93,"line":364},[91,2625,2569],{"class":1343},[91,2627,2628,2630,2632,2635],{"class":93,"line":378},[91,2629,2574],{"class":566},[91,2631,2001],{"class":566},[91,2633,2634],{"class":97}," useInit",[91,2636,2007],{"class":101},[91,2638,2639,2642,2644,2646,2648],{"class":93,"line":387},[91,2640,2641],{"class":566},"  const",[91,2643,1971],{"class":108},[91,2645,1366],{"class":566},[91,2647,2400],{"class":97},[91,2649,2650],{"class":101},"(InitReadyKey);\n",[91,2652,2653],{"class":93,"line":402},[91,2654,2655],{"class":1343},"  \u002F\u002F provide 없으면 에러\n",[91,2657,2658,2660,2663,2666],{"class":93,"line":422},[91,2659,2439],{"class":566},[91,2661,2662],{"class":101}," (",[91,2664,2665],{"class":566},"!",[91,2667,2668],{"class":101},"initReady) {\n",[91,2670,2671,2674,2677,2680,2682,2685],{"class":93,"line":438},[91,2672,2673],{"class":566},"    throw",[91,2675,2676],{"class":566}," new",[91,2678,2679],{"class":97}," Error",[91,2681,795],{"class":101},[91,2683,2684],{"class":169},"'useInit()은 provideInit() 범위 내에서 사용해야 합니다.'",[91,2686,1594],{"class":101},[91,2688,2689],{"class":93,"line":458},[91,2690,1698],{"class":101},[91,2692,2693,2696],{"class":93,"line":467},[91,2694,2695],{"class":566},"  return",[91,2697,2449],{"class":101},[91,2699,2700],{"class":93,"line":481},[91,2701,137],{"class":101},[16,2703,2704,2705,34,2707,2709,2710,2713],{},"구조는 간단하다. ",[31,2706,2328],{},[31,2708,2331],{}," 로직을 하나의 파일에서 관리하여 키(",[31,2711,2712],{},"InjectionKey",")와 타입의 일관성을 유지한다.",[82,2715,2717],{"className":1934,"code":2716,"language":1936,"meta":87,"style":87},"\u003Cscript setup lang=\"ts\">\nimport { provideInit } from '.\u002FuseInit';\nconst initReady = Promise.withResolvers\u003Cvoid>();\nprovideInit(initReady.promise); \u002F\u002F 추상화된 함수 호출\n\u003C\u002Fscript>\n\n\u003Cscript setup lang=\"ts\">\nimport { useInit } from '.\u002FuseInit';\nconst initReady = useInit(); \u002F\u002F 내부 로직을 몰라도 안전하게 주입받음\n\u003C\u002Fscript>\n",[31,2718,2719,2735,2749,2769,2780,2788,2792,2808,2821,2837],{"__ignoreMap":87},[91,2720,2721,2723,2725,2727,2729,2731,2733],{"class":93,"line":94},[91,2722,156],{"class":101},[91,2724,1945],{"class":159},[91,2726,1948],{"class":97},[91,2728,1951],{"class":97},[91,2730,166],{"class":101},[91,2732,1956],{"class":169},[91,2734,173],{"class":101},[91,2736,2737,2739,2742,2744,2747],{"class":93,"line":105},[91,2738,2499],{"class":566},[91,2740,2741],{"class":101}," { provideInit } ",[91,2743,2505],{"class":566},[91,2745,2746],{"class":169}," '.\u002FuseInit'",[91,2748,118],{"class":101},[91,2750,2751,2753,2755,2757,2759,2761,2763,2765,2767],{"class":93,"line":121},[91,2752,1968],{"class":566},[91,2754,1971],{"class":108},[91,2756,1366],{"class":566},[91,2758,1976],{"class":108},[91,2760,1235],{"class":101},[91,2762,1981],{"class":97},[91,2764,156],{"class":101},[91,2766,1986],{"class":108},[91,2768,1989],{"class":101},[91,2770,2771,2774,2777],{"class":93,"line":134},[91,2772,2773],{"class":97},"provideInit",[91,2775,2776],{"class":101},"(initReady.promise); ",[91,2778,2779],{"class":1343},"\u002F\u002F 추상화된 함수 호출\n",[91,2781,2782,2784,2786],{"class":93,"line":228},[91,2783,493],{"class":101},[91,2785,1945],{"class":159},[91,2787,173],{"class":101},[91,2789,2790],{"class":93,"line":250},[91,2791,1450],{"emptyLinePlaceholder":846},[91,2793,2794,2796,2798,2800,2802,2804,2806],{"class":93,"line":260},[91,2795,156],{"class":101},[91,2797,1945],{"class":159},[91,2799,1948],{"class":97},[91,2801,1951],{"class":97},[91,2803,166],{"class":101},[91,2805,1956],{"class":169},[91,2807,173],{"class":101},[91,2809,2810,2812,2815,2817,2819],{"class":93,"line":274},[91,2811,2499],{"class":566},[91,2813,2814],{"class":101}," { useInit } ",[91,2816,2505],{"class":566},[91,2818,2746],{"class":169},[91,2820,118],{"class":101},[91,2822,2823,2825,2827,2829,2831,2834],{"class":93,"line":284},[91,2824,1968],{"class":566},[91,2826,1971],{"class":108},[91,2828,1366],{"class":566},[91,2830,2634],{"class":97},[91,2832,2833],{"class":101},"(); ",[91,2835,2836],{"class":1343},"\u002F\u002F 내부 로직을 몰라도 안전하게 주입받음\n",[91,2838,2839,2841,2843],{"class":93,"line":299},[91,2840,493],{"class":101},[91,2842,1945],{"class":159},[91,2844,173],{"class":101},[16,2846,2847],{},"타입 추론도 제공하고, 단일 파일에서 파악이 가능하기 때문에 가독성도 높고 유지보수하기 좋다.",[829,2849,2850],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":87,"searchDepth":105,"depth":105,"links":2852},[2853],{"id":2482,"depth":105,"text":2483},"2026-01-19","Vue에서 부모 컴포넌트의 비동기 초기화 작업이 완료된 시점을 자식 컴포넌트에게 안전하게 전달하는 방법을 알아봅니다. Promise.withResolvers를 활용한 패턴을 소개","tracking-parent-the-time",{},"\u002Fblog\u002F260119-tracking-parent-the-time",{"title":1867,"description":2855},{"loc":2858},"blog\u002F260119-tracking-parent-the-time","Vue\u002FNuxt",[1936,2864,2865],"typescript","javascript","-VPIabQTNlTq85-JDK5clYXLf73_x9Qd7biy-BHA9bQ",{"id":2868,"title":2869,"body":2870,"created":4430,"description":4431,"extension":843,"filename":4432,"meta":4433,"navigation":846,"path":4434,"seo":4435,"sitemap":4436,"stem":4437,"subject":4438,"tags":4439,"updated":4430,"volume":4441,"__hash__":4442},"blog\u002Fblog\u002Fandroid-camera2-guideline-rotation.md","안드로이드 Camera2 API를 활용한 문서 촬영 가이드라인 화면 개발 및 이미지 회전(Exif) 트러블슈팅",{"type":8,"value":2871,"toc":4417},[2872,2875,2889,2893,2896,2899,2919,2926,2930,2933,2936,2942,2964,2970,2986,2990,2998,3046,3055,3067,3073,3089,3122,3125,3129,3136,3187,3195,3346,3349,3353,3363,3400,3407,3488,3498,3502,3513,3604,3611,3648,3655,3689,3692,3696,3699,3746,3761,3764,3834,3837,3917,3921,3924,3927,3963,3966,3970,3973,4026,4033,4109,4120,4144,4147,4151,4154,4160,4163,4169,4172,4281,4288,4294,4300,4321,4327,4337,4341,4344,4347,4385,4392,4411,4414],[16,2873,2874],{},"웹뷰 기반의 웹 개발을 하다가, 카메라를 활용한 UI 제작이 필요해졌다. 카메라 화면에 가이드라인을 띄우는 등의 커스텀 화면을 제작하게 됨. 그래서 네이티브 카메라 화면을 직접 띄우고, 미리보기 위에 문서 촬영 가이드라인을 표시하는 구조를 구성했다.",[16,2876,2877,2878,34,2881,2884,2885,2888],{},"Camera2 API의 미리보기와 캡처 파이프라인, ",[31,2879,2880],{},"TextureView",[31,2882,2883],{},"Surface",", 기기별 센서 회전값, JPEG EXIF 방향 정보, GPS 메타데이터, ",[31,2886,2887],{},"ImageReader"," 버퍼 관리까지 함께 다루었다.",[49,2890,2892],{"id":2891},"커스텀-카메라가-필요한-이유","커스텀 카메라가 필요한 이유",[16,2894,2895],{},"요구사항은 단순한 사진 촬영이 아니었다. 특정 문서 첨부 옵션에서 사진을 추가할 때 전용 카메라 화면을 열고, 카메라 미리보기 위에 사각형 가이드라인을 표시해야 했다. 카드 인식 화면에서 카드 모양의 틀을 제공하는 것과 비슷한 방식이다.",[16,2897,2898],{},"구체적인 화면 조건은 다음과 같았다.",[24,2900,2901,2904,2907,2910,2913,2916],{},[27,2902,2903],{},"웹뷰에서 파일 선택이 발생했을 때 특정 옵션이면 기본 선택기 대신 문서 촬영용 카메라 Activity를 실행한다.",[27,2905,2906],{},"카메라 미리보기는 가로가 화면에 꽉 차고 세로가 더 긴 3:4 비율에 가깝게 보인다.",[27,2908,2909],{},"문서가 들어가야 할 영역은 사각형 선으로 표시한다.",[27,2911,2912],{},"사각형 바깥 영역은 어둡고 반투명하게 처리한다.",[27,2914,2915],{},"촬영 결과는 기존 파일 선택 흐름과 동일하게 URI로 반환한다.",[27,2917,2918],{},"촬영 시점의 위치 정보가 필요하면 EXIF에 GPS 정보를 추가한다.",[16,2920,2921,2922,2925],{},"웹에서도 ",[31,2923,2924],{},"getUserMedia"," 등을 사용해 카메라를 띄울 수 있지만, 앱 안에서 파일 선택 흐름과 권한, 촬영 결과 URI, GPS EXIF를 일관되게 다루려면 네이티브 구현이 더 적합하다. 특히 Android 카메라의 회전과 EXIF 처리는 웹 레이어에서 뒤늦게 보정하기보다 촬영 시점에 제어하는 편이 안전하다.",[49,2927,2929],{"id":2928},"camera2-api의-기본-구조","Camera2 API의 기본 구조",[16,2931,2932],{},"Camera2 API는 카메라 하드웨어를 제어하는 프레임워크다. 기본 카메라 앱을 여는 방식보다 복잡하지만, 미리보기 화면, 캡처 설정, 초점, 줌, JPEG 품질, EXIF 방향, 출력 Surface를 직접 구성할 수 있다.",[16,2934,2935],{},"전체 흐름은 다음과 같다.",[82,2937,2940],{"className":2938,"code":2939,"language":1099,"meta":87},[1097],"CameraManager\n  -> cameraId 선택\n  -> openCamera()\n  -> CameraDevice.StateCallback\n  -> CameraDevice\n  -> CaptureRequest 생성\n  -> CameraCaptureSession 생성\n  -> Preview Surface와 ImageReader Surface로 출력\n",[31,2941,2939],{"__ignoreMap":87},[16,2943,2944,2947,2948,2951,2952,2955,2956,2959,2960,2963],{},[31,2945,2946],{},"CameraManager","는 기기의 카메라 목록을 제공한다. 사용할 카메라 ID를 고른 뒤 ",[31,2949,2950],{},"openCamera()","를 호출하면, ",[31,2953,2954],{},"CameraDevice.StateCallback","을 통해 실제 카메라 장치 객체를 얻는다. 이후 ",[31,2957,2958],{},"CameraDevice","로 미리보기 요청과 캡처 요청을 만들고, ",[31,2961,2962],{},"CameraCaptureSession","을 통해 해당 요청을 카메라 하드웨어로 전달한다.",[16,2965,2966],{},[19,2967],{"alt":2968,"src":2969},"Camera2 API의 카메라 출력 흐름","\u002Fblog\u002Fimg\u002Fandroid-camera2-guideline-rotation\u002Fcamera2-api-flow.png",[16,2971,2972,2973,2975,2976,2978,2979,2982,2983,2985],{},"Camera2는 화면에 직접 그리는 API가 아니라, 카메라 프레임을 어떤 ",[31,2974,2883],{},"로 보낼지 정하는 방식으로 동작한다. 미리보기는 ",[31,2977,2880],{}," 또는 ",[31,2980,2981],{},"SurfaceView","의 Surface로 보내고, 촬영 결과는 ",[31,2984,2887],{},"의 Surface로 보낸다.",[49,2987,2989],{"id":2988},"surfaceview와-textureview-선택","SurfaceView와 TextureView 선택",[16,2991,2992,2993,2978,2995,2997],{},"카메라 미리보기를 표시할 때는 주로 ",[31,2994,2981],{},[31,2996,2880],{},"를 사용한다.",[812,2999,3000,3016],{},[3001,3002,3003],"thead",{},[3004,3005,3006,3010,3013],"tr",{},[3007,3008,3009],"th",{},"구분",[3007,3011,3012],{},"장점",[3007,3014,3015],{},"단점",[3017,3018,3019,3032],"tbody",{},[3004,3020,3021,3026,3029],{},[3022,3023,3024],"td",{},[31,3025,2981],{},[3022,3027,3028],{},"하드웨어 오버레이를 사용해 성능과 배터리 효율이 좋다.",[3022,3030,3031],{},"뷰 변형, 회전, 투명도, 복잡한 오버레이 처리가 제한적이다.",[3004,3033,3034,3038,3041],{},[3022,3035,3036],{},[31,3037,2880],{},[3022,3039,3040],{},"일반 View처럼 회전, 크기 조절, Matrix 변환을 적용하기 쉽다.",[3022,3042,3043,3045],{},[31,3044,2981],{},"보다 성능과 배터리 측면에서 불리할 수 있다.",[16,3047,3048,3049,3051,3052,3054],{},"문서 촬영 화면에서는 미리보기 위에 가이드라인을 올리고, 기기 회전에 따라 미리보기 변환도 적용해야 했다. 따라서 단순 성능만 보면 ",[31,3050,2981],{},"가 유리하지만, 화면 변형과 오버레이 제어를 고려하면 ",[31,3053,2880],{},"가 더 다루기 쉽다.",[16,3056,3057,3059,3060,3063,3064,3066],{},[31,3058,2880],{},"를 사용할 때 주의할 점은 ",[31,3061,3062],{},"surfaceTexture","가 준비되기 전에는 ",[31,3065,2883],{},"를 만들 수 없다는 점이다. 실제 구현 중에도 다음과 같은 예외가 발생했다.",[82,3068,3071],{"className":3069,"code":3070,"language":1099,"meta":87},[1097],"java.lang.IllegalArgumentException: surfaceTexture must not be null\n    at android.view.Surface.\u003Cinit>(Surface.java:219)\n",[31,3072,3070],{"__ignoreMap":87},[16,3074,3075,3076,3078,3079,3081,3082,3084,3085,3088],{},"이 문제는 ",[31,3077,2880],{},"의 준비 시점을 확인하지 않고 바로 ",[31,3080,2883],{},"를 생성했을 때 발생한다. ",[31,3083,3062],{},"가 null이면 미리보기 세션 생성을 중단하고, ",[31,3086,3087],{},"SurfaceTextureListener","에서 준비 완료 시점에 카메라를 열도록 흐름을 맞추어야 한다.",[82,3090,3092],{"className":1000,"code":3091,"language":1002,"meta":87,"style":87},"val surfaceTexture = textureView.surfaceTexture ?: run {\n    Log.e(TAG, \"SurfaceTexture가 아직 준비되지 않았습니다\")\n    return\n}\n\nval previewSurface = Surface(surfaceTexture)\n",[31,3093,3094,3099,3104,3109,3113,3117],{"__ignoreMap":87},[91,3095,3096],{"class":93,"line":94},[91,3097,3098],{},"val surfaceTexture = textureView.surfaceTexture ?: run {\n",[91,3100,3101],{"class":93,"line":105},[91,3102,3103],{},"    Log.e(TAG, \"SurfaceTexture가 아직 준비되지 않았습니다\")\n",[91,3105,3106],{"class":93,"line":121},[91,3107,3108],{},"    return\n",[91,3110,3111],{"class":93,"line":134},[91,3112,137],{},[91,3114,3115],{"class":93,"line":228},[91,3116,1450],{"emptyLinePlaceholder":846},[91,3118,3119],{"class":93,"line":250},[91,3120,3121],{},"val previewSurface = Surface(surfaceTexture)\n",[16,3123,3124],{},"Camera2 구현은 카메라 장치보다 Surface 준비 시점이 더 늦을 수 있다는 점을 항상 고려해야 한다.",[49,3126,3128],{"id":3127},"카메라-열기와-상태-콜백","카메라 열기와 상태 콜백",[16,3130,3131,3132,3135],{},"카메라를 열기 위해서는 먼저 카메라 권한을 확인한 뒤 ",[31,3133,3134],{},"CameraManager.openCamera()","를 호출한다.",[82,3137,3139],{"className":1000,"code":3138,"language":1002,"meta":87,"style":87},"private lateinit var cameraManager: CameraManager\nprivate var cameraDevice: CameraDevice? = null\n\ncameraManager = getSystemService(CAMERA_SERVICE) as CameraManager\n\nfor (id in cameraManager.cameraIdList) {\n    \u002F\u002F 후면 카메라 등 사용할 cameraId를 선택한다.\n}\n\ncameraManager.openCamera(cameraId, stateCallback, backgroundHandler)\n",[31,3140,3141,3146,3151,3155,3160,3164,3169,3174,3178,3182],{"__ignoreMap":87},[91,3142,3143],{"class":93,"line":94},[91,3144,3145],{},"private lateinit var cameraManager: CameraManager\n",[91,3147,3148],{"class":93,"line":105},[91,3149,3150],{},"private var cameraDevice: CameraDevice? = null\n",[91,3152,3153],{"class":93,"line":121},[91,3154,1450],{"emptyLinePlaceholder":846},[91,3156,3157],{"class":93,"line":134},[91,3158,3159],{},"cameraManager = getSystemService(CAMERA_SERVICE) as CameraManager\n",[91,3161,3162],{"class":93,"line":228},[91,3163,1450],{"emptyLinePlaceholder":846},[91,3165,3166],{"class":93,"line":250},[91,3167,3168],{},"for (id in cameraManager.cameraIdList) {\n",[91,3170,3171],{"class":93,"line":260},[91,3172,3173],{},"    \u002F\u002F 후면 카메라 등 사용할 cameraId를 선택한다.\n",[91,3175,3176],{"class":93,"line":274},[91,3177,137],{},[91,3179,3180],{"class":93,"line":284},[91,3181,1450],{"emptyLinePlaceholder":846},[91,3183,3184],{"class":93,"line":299},[91,3185,3186],{},"cameraManager.openCamera(cameraId, stateCallback, backgroundHandler)\n",[16,3188,3189,3191,3192,3194],{},[31,3190,2950],{},"에는 ",[31,3193,2954],{},"을 넘겨야 한다. 카메라는 다른 앱에서 사용 중일 수도 있고, 시스템에서 회수될 수도 있으며, 권한 또는 하드웨어 오류가 발생할 수도 있다. 따라서 정상 연결뿐 아니라 연결 해제와 오류 상황을 모두 처리해야 한다.",[82,3196,3198],{"className":1000,"code":3197,"language":1002,"meta":87,"style":87},"private val stateCallback = object : CameraDevice.StateCallback() {\n    override fun onOpened(camera: CameraDevice) {\n        cameraDevice = camera\n        createPreviewSession()\n    }\n\n    override fun onDisconnected(camera: CameraDevice) {\n        camera.close()\n        cameraDevice = null\n    }\n\n    override fun onError(camera: CameraDevice, error: Int) {\n        camera.close()\n        cameraDevice = null\n\n        val errorMessage = when (error) {\n            ERROR_CAMERA_IN_USE -> \"카메라가 다른 앱에서 사용 중입니다\"\n            ERROR_MAX_CAMERAS_IN_USE -> \"최대 카메라 사용 개수를 초과했습니다\"\n            ERROR_CAMERA_DISABLED -> \"카메라가 비활성화되었습니다\"\n            ERROR_CAMERA_DEVICE -> \"카메라 장치 오류가 발생했습니다\"\n            ERROR_CAMERA_SERVICE -> \"카메라 서비스 오류가 발생했습니다\"\n            else -> \"알 수 없는 카메라 오류가 발생했습니다\"\n        }\n\n        runOnUiThread {\n            Toast.makeText(this@DocumentCameraActivity, errorMessage, Toast.LENGTH_LONG).show()\n            finish()\n        }\n    }\n}\n",[31,3199,3200,3205,3210,3215,3220,3224,3228,3233,3238,3243,3247,3251,3256,3260,3264,3268,3273,3278,3283,3288,3293,3298,3303,3308,3313,3319,3325,3331,3336,3341],{"__ignoreMap":87},[91,3201,3202],{"class":93,"line":94},[91,3203,3204],{},"private val stateCallback = object : CameraDevice.StateCallback() {\n",[91,3206,3207],{"class":93,"line":105},[91,3208,3209],{},"    override fun onOpened(camera: CameraDevice) {\n",[91,3211,3212],{"class":93,"line":121},[91,3213,3214],{},"        cameraDevice = camera\n",[91,3216,3217],{"class":93,"line":134},[91,3218,3219],{},"        createPreviewSession()\n",[91,3221,3222],{"class":93,"line":228},[91,3223,1693],{},[91,3225,3226],{"class":93,"line":250},[91,3227,1450],{"emptyLinePlaceholder":846},[91,3229,3230],{"class":93,"line":260},[91,3231,3232],{},"    override fun onDisconnected(camera: CameraDevice) {\n",[91,3234,3235],{"class":93,"line":274},[91,3236,3237],{},"        camera.close()\n",[91,3239,3240],{"class":93,"line":284},[91,3241,3242],{},"        cameraDevice = null\n",[91,3244,3245],{"class":93,"line":299},[91,3246,1693],{},[91,3248,3249],{"class":93,"line":319},[91,3250,1450],{"emptyLinePlaceholder":846},[91,3252,3253],{"class":93,"line":334},[91,3254,3255],{},"    override fun onError(camera: CameraDevice, error: Int) {\n",[91,3257,3258],{"class":93,"line":355},[91,3259,3237],{},[91,3261,3262],{"class":93,"line":364},[91,3263,3242],{},[91,3265,3266],{"class":93,"line":378},[91,3267,1450],{"emptyLinePlaceholder":846},[91,3269,3270],{"class":93,"line":387},[91,3271,3272],{},"        val errorMessage = when (error) {\n",[91,3274,3275],{"class":93,"line":402},[91,3276,3277],{},"            ERROR_CAMERA_IN_USE -> \"카메라가 다른 앱에서 사용 중입니다\"\n",[91,3279,3280],{"class":93,"line":422},[91,3281,3282],{},"            ERROR_MAX_CAMERAS_IN_USE -> \"최대 카메라 사용 개수를 초과했습니다\"\n",[91,3284,3285],{"class":93,"line":438},[91,3286,3287],{},"            ERROR_CAMERA_DISABLED -> \"카메라가 비활성화되었습니다\"\n",[91,3289,3290],{"class":93,"line":458},[91,3291,3292],{},"            ERROR_CAMERA_DEVICE -> \"카메라 장치 오류가 발생했습니다\"\n",[91,3294,3295],{"class":93,"line":467},[91,3296,3297],{},"            ERROR_CAMERA_SERVICE -> \"카메라 서비스 오류가 발생했습니다\"\n",[91,3299,3300],{"class":93,"line":481},[91,3301,3302],{},"            else -> \"알 수 없는 카메라 오류가 발생했습니다\"\n",[91,3304,3305],{"class":93,"line":490},[91,3306,3307],{},"        }\n",[91,3309,3311],{"class":93,"line":3310},24,[91,3312,1450],{"emptyLinePlaceholder":846},[91,3314,3316],{"class":93,"line":3315},25,[91,3317,3318],{},"        runOnUiThread {\n",[91,3320,3322],{"class":93,"line":3321},26,[91,3323,3324],{},"            Toast.makeText(this@DocumentCameraActivity, errorMessage, Toast.LENGTH_LONG).show()\n",[91,3326,3328],{"class":93,"line":3327},27,[91,3329,3330],{},"            finish()\n",[91,3332,3334],{"class":93,"line":3333},28,[91,3335,3307],{},[91,3337,3339],{"class":93,"line":3338},29,[91,3340,1693],{},[91,3342,3344],{"class":93,"line":3343},30,[91,3345,137],{},[16,3347,3348],{},"카메라 오류는 사용자의 행동과 무관하게 발생할 수 있으므로, 오류 메시지를 남기고 Activity를 정리하는 흐름을 두어야 한다. 카메라 리소스를 닫지 않으면 다음 실행에서 카메라를 다시 열지 못하는 상황이 생길 수 있다.",[49,3350,3352],{"id":3351},"미리보기-세션-만들기","미리보기 세션 만들기",[16,3354,3355,3356,3358,3359,3362],{},"카메라가 열리고 ",[31,3357,2880],{},"의 Surface가 준비되면 미리보기 요청을 만든다. 미리보기는 ",[31,3360,3361],{},"CameraDevice.TEMPLATE_PREVIEW"," 템플릿을 사용한다.",[82,3364,3366],{"className":1000,"code":3365,"language":1002,"meta":87,"style":87},"val surfaceTexture = textureView.surfaceTexture ?: return\nval previewSurface = Surface(surfaceTexture)\n\npreviewRequestBuilder =\n    cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)\n\npreviewRequestBuilder?.addTarget(previewSurface)\n",[31,3367,3368,3373,3377,3381,3386,3391,3395],{"__ignoreMap":87},[91,3369,3370],{"class":93,"line":94},[91,3371,3372],{},"val surfaceTexture = textureView.surfaceTexture ?: return\n",[91,3374,3375],{"class":93,"line":105},[91,3376,3121],{},[91,3378,3379],{"class":93,"line":121},[91,3380,1450],{"emptyLinePlaceholder":846},[91,3382,3383],{"class":93,"line":134},[91,3384,3385],{},"previewRequestBuilder =\n",[91,3387,3388],{"class":93,"line":228},[91,3389,3390],{},"    cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)\n",[91,3392,3393],{"class":93,"line":250},[91,3394,1450],{"emptyLinePlaceholder":846},[91,3396,3397],{"class":93,"line":260},[91,3398,3399],{},"previewRequestBuilder?.addTarget(previewSurface)\n",[16,3401,3402,3403,3406],{},"이후 ",[31,3404,3405],{},"createCaptureSession()","으로 미리보기 Surface와 캡처용 Surface를 묶어 세션을 구성한다.",[82,3408,3410],{"className":1000,"code":3409,"language":1002,"meta":87,"style":87},"cameraDevice?.createCaptureSession(\n    surfaces,\n    object : CameraCaptureSession.StateCallback() {\n        override fun onConfigured(session: CameraCaptureSession) {\n            captureSession = session\n\n            val previewRequest = previewRequestBuilder?.build() ?: return\n            session.setRepeatingRequest(previewRequest, null, backgroundHandler)\n        }\n\n        override fun onConfigureFailed(session: CameraCaptureSession) {\n            Log.e(TAG, \"CameraCaptureSession 구성 실패\")\n        }\n    },\n    backgroundHandler\n)\n",[31,3411,3412,3417,3422,3427,3432,3437,3441,3446,3451,3455,3459,3464,3469,3473,3478,3483],{"__ignoreMap":87},[91,3413,3414],{"class":93,"line":94},[91,3415,3416],{},"cameraDevice?.createCaptureSession(\n",[91,3418,3419],{"class":93,"line":105},[91,3420,3421],{},"    surfaces,\n",[91,3423,3424],{"class":93,"line":121},[91,3425,3426],{},"    object : CameraCaptureSession.StateCallback() {\n",[91,3428,3429],{"class":93,"line":134},[91,3430,3431],{},"        override fun onConfigured(session: CameraCaptureSession) {\n",[91,3433,3434],{"class":93,"line":228},[91,3435,3436],{},"            captureSession = session\n",[91,3438,3439],{"class":93,"line":250},[91,3440,1450],{"emptyLinePlaceholder":846},[91,3442,3443],{"class":93,"line":260},[91,3444,3445],{},"            val previewRequest = previewRequestBuilder?.build() ?: return\n",[91,3447,3448],{"class":93,"line":274},[91,3449,3450],{},"            session.setRepeatingRequest(previewRequest, null, backgroundHandler)\n",[91,3452,3453],{"class":93,"line":284},[91,3454,3307],{},[91,3456,3457],{"class":93,"line":299},[91,3458,1450],{"emptyLinePlaceholder":846},[91,3460,3461],{"class":93,"line":319},[91,3462,3463],{},"        override fun onConfigureFailed(session: CameraCaptureSession) {\n",[91,3465,3466],{"class":93,"line":334},[91,3467,3468],{},"            Log.e(TAG, \"CameraCaptureSession 구성 실패\")\n",[91,3470,3471],{"class":93,"line":355},[91,3472,3307],{},[91,3474,3475],{"class":93,"line":364},[91,3476,3477],{},"    },\n",[91,3479,3480],{"class":93,"line":378},[91,3481,3482],{},"    backgroundHandler\n",[91,3484,3485],{"class":93,"line":387},[91,3486,3487],{},")\n",[16,3489,3490,3493,3494,3497],{},[31,3491,3492],{},"setRepeatingRequest()","는 미리보기 프레임을 계속 갱신하는 요청이다. 이 요청이 유지되는 동안 사용자는 카메라 화면을 실시간으로 볼 수 있다. 반면 실제 사진 촬영은 ",[31,3495,3496],{},"capture()","로 일회성 요청을 보내는 방식이다. 미리보기와 캡처는 같은 카메라 장치를 사용하지만 요청 템플릿과 출력 Surface가 다르다.",[49,3499,3501],{"id":3500},"이미지-캡처와-결과-반환","이미지 캡처와 결과 반환",[16,3503,3504,3505,3508,3509,3512],{},"사진 촬영은 ",[31,3506,3507],{},"TEMPLATE_STILL_CAPTURE"," 요청을 사용한다. 미리보기와 동일한 카메라 장치에서 요청을 만들지만, 출력 대상은 화면 Surface가 아니라 ",[31,3510,3511],{},"ImageReader.surface","다.",[82,3514,3516],{"className":1000,"code":3515,"language":1002,"meta":87,"style":87},"private fun captureImage() {\n    val captureRequestBuilder =\n        cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)\n\n    captureRequestBuilder?.addTarget(imageReader?.surface!!)\n    captureRequestBuilder?.set(\n        CaptureRequest.CONTROL_AF_MODE,\n        CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE\n    )\n    captureRequestBuilder?.set(CaptureRequest.JPEG_QUALITY, 95.toByte())\n    captureRequestBuilder?.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation())\n\n    captureSession?.capture(\n        captureRequestBuilder?.build()!!,\n        null,\n        backgroundHandler\n    )\n}\n",[31,3517,3518,3523,3528,3533,3537,3542,3547,3552,3557,3562,3567,3572,3576,3581,3586,3591,3596,3600],{"__ignoreMap":87},[91,3519,3520],{"class":93,"line":94},[91,3521,3522],{},"private fun captureImage() {\n",[91,3524,3525],{"class":93,"line":105},[91,3526,3527],{},"    val captureRequestBuilder =\n",[91,3529,3530],{"class":93,"line":121},[91,3531,3532],{},"        cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)\n",[91,3534,3535],{"class":93,"line":134},[91,3536,1450],{"emptyLinePlaceholder":846},[91,3538,3539],{"class":93,"line":228},[91,3540,3541],{},"    captureRequestBuilder?.addTarget(imageReader?.surface!!)\n",[91,3543,3544],{"class":93,"line":250},[91,3545,3546],{},"    captureRequestBuilder?.set(\n",[91,3548,3549],{"class":93,"line":260},[91,3550,3551],{},"        CaptureRequest.CONTROL_AF_MODE,\n",[91,3553,3554],{"class":93,"line":274},[91,3555,3556],{},"        CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE\n",[91,3558,3559],{"class":93,"line":284},[91,3560,3561],{},"    )\n",[91,3563,3564],{"class":93,"line":299},[91,3565,3566],{},"    captureRequestBuilder?.set(CaptureRequest.JPEG_QUALITY, 95.toByte())\n",[91,3568,3569],{"class":93,"line":319},[91,3570,3571],{},"    captureRequestBuilder?.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation())\n",[91,3573,3574],{"class":93,"line":334},[91,3575,1450],{"emptyLinePlaceholder":846},[91,3577,3578],{"class":93,"line":355},[91,3579,3580],{},"    captureSession?.capture(\n",[91,3582,3583],{"class":93,"line":364},[91,3584,3585],{},"        captureRequestBuilder?.build()!!,\n",[91,3587,3588],{"class":93,"line":378},[91,3589,3590],{},"        null,\n",[91,3592,3593],{"class":93,"line":387},[91,3594,3595],{},"        backgroundHandler\n",[91,3597,3598],{"class":93,"line":402},[91,3599,3561],{},[91,3601,3602],{"class":93,"line":422},[91,3603,137],{},[16,3605,3606,3607,3610],{},"캡처 결과는 ",[31,3608,3609],{},"ImageReader.OnImageAvailableListener","에서 받는다. 이미지 저장은 파일 I\u002FO이므로 UI 스레드가 아니라 백그라운드 스레드에서 처리한다.",[82,3612,3614],{"className":1000,"code":3613,"language":1002,"meta":87,"style":87},"private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader ->\n    val image = reader.acquireLatestImage() ?: return@OnImageAvailableListener\n\n    backgroundHandler?.post {\n        saveImage(image)\n    }\n}\n",[31,3615,3616,3621,3626,3630,3635,3640,3644],{"__ignoreMap":87},[91,3617,3618],{"class":93,"line":94},[91,3619,3620],{},"private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader ->\n",[91,3622,3623],{"class":93,"line":105},[91,3624,3625],{},"    val image = reader.acquireLatestImage() ?: return@OnImageAvailableListener\n",[91,3627,3628],{"class":93,"line":121},[91,3629,1450],{"emptyLinePlaceholder":846},[91,3631,3632],{"class":93,"line":134},[91,3633,3634],{},"    backgroundHandler?.post {\n",[91,3636,3637],{"class":93,"line":228},[91,3638,3639],{},"        saveImage(image)\n",[91,3641,3642],{"class":93,"line":250},[91,3643,1693],{},[91,3645,3646],{"class":93,"line":260},[91,3647,137],{},[16,3649,3650,3651,3654],{},"저장 후에는 ",[31,3652,3653],{},"FileProvider","로 얻은 URI를 결과 Intent에 담아 Activity를 종료한다. 이렇게 하면 웹뷰의 파일 선택 흐름과 비슷하게, 호출한 쪽에서는 촬영된 이미지 URI를 받을 수 있다.",[82,3656,3658],{"className":1000,"code":3657,"language":1002,"meta":87,"style":87},"runOnUiThread {\n    val resultIntent = Intent()\n    resultIntent.data = imageUri\n    setResult(Activity.RESULT_OK, resultIntent)\n    finish()\n}\n",[31,3659,3660,3665,3670,3675,3680,3685],{"__ignoreMap":87},[91,3661,3662],{"class":93,"line":94},[91,3663,3664],{},"runOnUiThread {\n",[91,3666,3667],{"class":93,"line":105},[91,3668,3669],{},"    val resultIntent = Intent()\n",[91,3671,3672],{"class":93,"line":121},[91,3673,3674],{},"    resultIntent.data = imageUri\n",[91,3676,3677],{"class":93,"line":134},[91,3678,3679],{},"    setResult(Activity.RESULT_OK, resultIntent)\n",[91,3681,3682],{"class":93,"line":228},[91,3683,3684],{},"    finish()\n",[91,3686,3687],{"class":93,"line":250},[91,3688,137],{},[16,3690,3691],{},"이 구조에서는 촬영 전용 Activity가 카메라 세부 구현을 책임지고, 호출 측은 URI만 받는다. 웹뷰나 상위 화면에서 Camera2 세부 구현을 알 필요가 없기 때문에 책임이 분리된다.",[49,3693,3695],{"id":3694},"권한과-하드웨어-선언","권한과 하드웨어 선언",[16,3697,3698],{},"Camera2를 사용하려면 카메라 권한이 필요하다. 또한 앱이 카메라 하드웨어를 사용한다는 점을 Manifest에 선언해야 한다.",[82,3700,3702],{"className":970,"code":3701,"language":972,"meta":87,"style":87},"\u003Cuses-permission android:name=\"android.permission.CAMERA\" \u002F>\n\n\u003Cuses-feature\n    android:name=\"android.hardware.camera\"\n    android:required=\"true\" \u002F>\n\n\u003Cuses-feature\n    android:name=\"android.hardware.camera.autofocus\"\n    android:required=\"false\" \u002F>\n",[31,3703,3704,3709,3713,3718,3723,3728,3732,3736,3741],{"__ignoreMap":87},[91,3705,3706],{"class":93,"line":94},[91,3707,3708],{},"\u003Cuses-permission android:name=\"android.permission.CAMERA\" \u002F>\n",[91,3710,3711],{"class":93,"line":105},[91,3712,1450],{"emptyLinePlaceholder":846},[91,3714,3715],{"class":93,"line":121},[91,3716,3717],{},"\u003Cuses-feature\n",[91,3719,3720],{"class":93,"line":134},[91,3721,3722],{},"    android:name=\"android.hardware.camera\"\n",[91,3724,3725],{"class":93,"line":228},[91,3726,3727],{},"    android:required=\"true\" \u002F>\n",[91,3729,3730],{"class":93,"line":250},[91,3731,1450],{"emptyLinePlaceholder":846},[91,3733,3734],{"class":93,"line":260},[91,3735,3717],{},[91,3737,3738],{"class":93,"line":274},[91,3739,3740],{},"    android:name=\"android.hardware.camera.autofocus\"\n",[91,3742,3743],{"class":93,"line":284},[91,3744,3745],{},"    android:required=\"false\" \u002F>\n",[16,3747,3748,3749,3752,3753,3756,3757,3760],{},"카메라가 앱의 필수 기능이면 ",[31,3750,3751],{},"android.hardware.camera","를 ",[31,3754,3755],{},"required=\"true\"","로 둘 수 있다. 다만 자동초점은 모든 기기에서 보장되지 않을 수 있으므로 ",[31,3758,3759],{},"required=\"false\"","로 두는 편이 호환성에 유리하다.",[16,3762,3763],{},"런타임 권한은 Activity에서 확인하고 요청한다.",[82,3765,3767],{"className":1000,"code":3766,"language":1002,"meta":87,"style":87},"private fun checkCameraPermission(): Boolean {\n    return ContextCompat.checkSelfPermission(\n        this,\n        Manifest.permission.CAMERA\n    ) == PackageManager.PERMISSION_GRANTED\n}\n\nprivate fun requestCameraPermission() {\n    ActivityCompat.requestPermissions(\n        this,\n        arrayOf(Manifest.permission.CAMERA),\n        CAMERA_PERMISSION_REQUEST\n    )\n}\n",[31,3768,3769,3774,3779,3784,3789,3794,3798,3802,3807,3812,3816,3821,3826,3830],{"__ignoreMap":87},[91,3770,3771],{"class":93,"line":94},[91,3772,3773],{},"private fun checkCameraPermission(): Boolean {\n",[91,3775,3776],{"class":93,"line":105},[91,3777,3778],{},"    return ContextCompat.checkSelfPermission(\n",[91,3780,3781],{"class":93,"line":121},[91,3782,3783],{},"        this,\n",[91,3785,3786],{"class":93,"line":134},[91,3787,3788],{},"        Manifest.permission.CAMERA\n",[91,3790,3791],{"class":93,"line":228},[91,3792,3793],{},"    ) == PackageManager.PERMISSION_GRANTED\n",[91,3795,3796],{"class":93,"line":250},[91,3797,137],{},[91,3799,3800],{"class":93,"line":260},[91,3801,1450],{"emptyLinePlaceholder":846},[91,3803,3804],{"class":93,"line":274},[91,3805,3806],{},"private fun requestCameraPermission() {\n",[91,3808,3809],{"class":93,"line":284},[91,3810,3811],{},"    ActivityCompat.requestPermissions(\n",[91,3813,3814],{"class":93,"line":299},[91,3815,3783],{},[91,3817,3818],{"class":93,"line":319},[91,3819,3820],{},"        arrayOf(Manifest.permission.CAMERA),\n",[91,3822,3823],{"class":93,"line":334},[91,3824,3825],{},"        CAMERA_PERMISSION_REQUEST\n",[91,3827,3828],{"class":93,"line":355},[91,3829,3561],{},[91,3831,3832],{"class":93,"line":364},[91,3833,137],{},[16,3835,3836],{},"권한이 거부되면 카메라 화면을 유지할 이유가 없으므로 안내 후 종료한다.",[82,3838,3840],{"className":1000,"code":3839,"language":1002,"meta":87,"style":87},"override fun onRequestPermissionsResult(\n    requestCode: Int,\n    permissions: Array\u003CString>,\n    grantResults: IntArray\n) {\n    super.onRequestPermissionsResult(requestCode, permissions, grantResults)\n\n    if (requestCode == CAMERA_PERMISSION_REQUEST) {\n        if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {\n            openCamera()\n        } else {\n            Toast.makeText(this, \"카메라 권한이 필요합니다.\", Toast.LENGTH_SHORT).show()\n            finish()\n        }\n    }\n}\n",[31,3841,3842,3847,3852,3857,3862,3867,3872,3876,3881,3886,3891,3896,3901,3905,3909,3913],{"__ignoreMap":87},[91,3843,3844],{"class":93,"line":94},[91,3845,3846],{},"override fun onRequestPermissionsResult(\n",[91,3848,3849],{"class":93,"line":105},[91,3850,3851],{},"    requestCode: Int,\n",[91,3853,3854],{"class":93,"line":121},[91,3855,3856],{},"    permissions: Array\u003CString>,\n",[91,3858,3859],{"class":93,"line":134},[91,3860,3861],{},"    grantResults: IntArray\n",[91,3863,3864],{"class":93,"line":228},[91,3865,3866],{},") {\n",[91,3868,3869],{"class":93,"line":250},[91,3870,3871],{},"    super.onRequestPermissionsResult(requestCode, permissions, grantResults)\n",[91,3873,3874],{"class":93,"line":260},[91,3875,1450],{"emptyLinePlaceholder":846},[91,3877,3878],{"class":93,"line":274},[91,3879,3880],{},"    if (requestCode == CAMERA_PERMISSION_REQUEST) {\n",[91,3882,3883],{"class":93,"line":284},[91,3884,3885],{},"        if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {\n",[91,3887,3888],{"class":93,"line":299},[91,3889,3890],{},"            openCamera()\n",[91,3892,3893],{"class":93,"line":319},[91,3894,3895],{},"        } else {\n",[91,3897,3898],{"class":93,"line":334},[91,3899,3900],{},"            Toast.makeText(this, \"카메라 권한이 필요합니다.\", Toast.LENGTH_SHORT).show()\n",[91,3902,3903],{"class":93,"line":355},[91,3904,3330],{},[91,3906,3907],{"class":93,"line":364},[91,3908,3307],{},[91,3910,3911],{"class":93,"line":378},[91,3912,1693],{},[91,3914,3915],{"class":93,"line":387},[91,3916,137],{},[49,3918,3920],{"id":3919},"카메라-회전-문제의-본질","카메라 회전 문제의 본질",[16,3922,3923],{},"화면에서 보이는 미리보기 방향과 실제 저장되는 JPEG 방향은 같은 문제가 아니다. 미리보기는 사용자 눈에 똑바로 보이면 되지만, 캡처 결과는 갤러리나 서버에서 열었을 때도 올바른 방향이어야 한다.",[16,3925,3926],{},"안드로이드 카메라 센서는 보통 기기 안에 가로 방향으로 장착되어 있다. 사용자는 세로 화면으로 촬영하지만 센서의 자연 방향은 다를 수 있다. 예를 들어 후면 카메라 센서가 90도, 전면 카메라 센서가 270도인 식이다.",[812,3928,3929,3939],{},[3001,3930,3931],{},[3004,3932,3933,3936],{},[3007,3934,3935],{},"전면",[3007,3937,3938],{},"후면",[3017,3940,3941,3955],{},[3004,3942,3943,3949],{},[3022,3944,3945],{},[19,3946],{"alt":3947,"src":3948},"전면 카메라의 센서 방향","\u002Fblog\u002Fimg\u002Fandroid-camera2-guideline-rotation\u002Ffront-camera-orientation.png",[3022,3950,3951],{},[19,3952],{"alt":3953,"src":3954},"후면 카메라의 센서 방향","\u002Fblog\u002Fimg\u002Fandroid-camera2-guideline-rotation\u002Frear-camera-orientation.png",[3004,3956,3957,3960],{},[3022,3958,3959],{},"270도",[3022,3961,3962],{},"90도",[16,3964,3965],{},"기기가 어떤 방향으로 들려 있는지도 함께 고려해야 한다. 같은 후면 카메라라도 사용자가 기기를 세로로 들었는지, 왼쪽으로 눕혔는지, 오른쪽으로 눕혔는지에 따라 저장될 JPEG의 방향 보정값이 달라진다.",[49,3967,3969],{"id":3968},"미리보기-회전과-jpeg-회전은-다르다","미리보기 회전과 JPEG 회전은 다르다",[16,3971,3972],{},"미리보기와 캡처 방향 보정은 목적과 방법이 다르다.",[812,3974,3975,3987],{},[3001,3976,3977],{},[3004,3978,3979,3981,3984],{},[3007,3980,3009],{},[3007,3982,3983],{},"미리보기",[3007,3985,3986],{},"캡처 JPEG",[3017,3988,3989,4000,4015],{},[3004,3990,3991,3994,3997],{},[3022,3992,3993],{},"목표",[3022,3995,3996],{},"화면에서 사용자에게 똑바로 보이게 한다.",[3022,3998,3999],{},"저장된 파일이 뷰어에서 똑바로 보이게 한다.",[3004,4001,4002,4005,4010],{},[3022,4003,4004],{},"처리 위치",[3022,4006,4007,4009],{},[31,4008,2880],{},"의 Matrix 변환",[3022,4011,4012],{},[31,4013,4014],{},"CaptureRequest.JPEG_ORIENTATION",[3004,4016,4017,4020,4023],{},[3022,4018,4019],{},"데이터",[3022,4021,4022],{},"원본 프레임은 그대로 두고 표시만 회전한다.",[3022,4024,4025],{},"JPEG EXIF 방향 태그를 기록한다.",[16,4027,4028,4029,4032],{},"미리보기는 View의 표시 문제다. ",[31,4030,4031],{},"TextureView.setTransform(matrix)","를 사용해 회전과 스케일을 적용한다.",[82,4034,4036],{"className":1000,"code":4035,"language":1002,"meta":87,"style":87},"private fun configureTransform(viewWidth: Int, viewHeight: Int) {\n    val rotation = windowManager.defaultDisplay.rotation\n    val matrix = Matrix()\n    val viewRect = RectF(0f, 0f, viewWidth.toFloat(), viewHeight.toFloat())\n    val centerX = viewRect.centerX()\n    val centerY = viewRect.centerY()\n\n    if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {\n        \u002F\u002F 회전과 스케일 보정\n    } else if (Surface.ROTATION_180 == rotation) {\n        matrix.postRotate(180f, centerX, centerY)\n    }\n\n    textureView.setTransform(matrix)\n}\n",[31,4037,4038,4043,4048,4053,4058,4063,4068,4072,4077,4082,4087,4092,4096,4100,4105],{"__ignoreMap":87},[91,4039,4040],{"class":93,"line":94},[91,4041,4042],{},"private fun configureTransform(viewWidth: Int, viewHeight: Int) {\n",[91,4044,4045],{"class":93,"line":105},[91,4046,4047],{},"    val rotation = windowManager.defaultDisplay.rotation\n",[91,4049,4050],{"class":93,"line":121},[91,4051,4052],{},"    val matrix = Matrix()\n",[91,4054,4055],{"class":93,"line":134},[91,4056,4057],{},"    val viewRect = RectF(0f, 0f, viewWidth.toFloat(), viewHeight.toFloat())\n",[91,4059,4060],{"class":93,"line":228},[91,4061,4062],{},"    val centerX = viewRect.centerX()\n",[91,4064,4065],{"class":93,"line":250},[91,4066,4067],{},"    val centerY = viewRect.centerY()\n",[91,4069,4070],{"class":93,"line":260},[91,4071,1450],{"emptyLinePlaceholder":846},[91,4073,4074],{"class":93,"line":274},[91,4075,4076],{},"    if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {\n",[91,4078,4079],{"class":93,"line":284},[91,4080,4081],{},"        \u002F\u002F 회전과 스케일 보정\n",[91,4083,4084],{"class":93,"line":299},[91,4085,4086],{},"    } else if (Surface.ROTATION_180 == rotation) {\n",[91,4088,4089],{"class":93,"line":319},[91,4090,4091],{},"        matrix.postRotate(180f, centerX, centerY)\n",[91,4093,4094],{"class":93,"line":334},[91,4095,1693],{},[91,4097,4098],{"class":93,"line":355},[91,4099,1450],{"emptyLinePlaceholder":846},[91,4101,4102],{"class":93,"line":364},[91,4103,4104],{},"    textureView.setTransform(matrix)\n",[91,4106,4107],{"class":93,"line":378},[91,4108,137],{},[16,4110,4111,4112,4115,4116,4119],{},"반면 캡처는 저장 파일의 방향 문제다. ",[31,4113,4114],{},"CaptureRequest","에 ",[31,4117,4118],{},"JPEG_ORIENTATION"," 값을 넣어야 한다.",[82,4121,4123],{"className":1000,"code":4122,"language":1002,"meta":87,"style":87},"captureRequestBuilder?.set(\n    CaptureRequest.JPEG_ORIENTATION,\n    getJpegOrientation(cameraCharacteristics, displayRotation)\n)\n",[31,4124,4125,4130,4135,4140],{"__ignoreMap":87},[91,4126,4127],{"class":93,"line":94},[91,4128,4129],{},"captureRequestBuilder?.set(\n",[91,4131,4132],{"class":93,"line":105},[91,4133,4134],{},"    CaptureRequest.JPEG_ORIENTATION,\n",[91,4136,4137],{"class":93,"line":121},[91,4138,4139],{},"    getJpegOrientation(cameraCharacteristics, displayRotation)\n",[91,4141,4142],{"class":93,"line":134},[91,4143,3487],{},[16,4145,4146],{},"이 둘을 혼동하면 화면에서는 똑바로 보이는데 갤러리에서는 누워 있거나, 반대로 저장 파일은 맞지만 미리보기 화면이 회전되어 보이는 문제가 생긴다.",[49,4148,4150],{"id":4149},"jpeg_orientation-계산","JPEG_ORIENTATION 계산",[16,4152,4153],{},"JPEG 방향은 센서 각도와 기기 회전값을 조합해서 계산한다. 후면 카메라는 일반적으로 다음 공식을 사용한다.",[82,4155,4158],{"className":4156,"code":4157,"language":1099,"meta":87},[1097],"(sensorOrientation - deviceOrientationDegrees + 360) % 360\n",[31,4159,4157],{"__ignoreMap":87},[16,4161,4162],{},"전면 카메라는 거울 모드와 방향 차이 때문에 부호가 달라진다.",[82,4164,4167],{"className":4165,"code":4166,"language":1099,"meta":87},[1097],"(sensorOrientation + deviceOrientationDegrees) % 360\n",[31,4168,4166],{"__ignoreMap":87},[16,4170,4171],{},"Kotlin 코드로 정리하면 다음과 같다.",[82,4173,4175],{"className":1000,"code":4174,"language":1002,"meta":87,"style":87},"private fun getJpegOrientation(\n    characteristics: CameraCharacteristics,\n    deviceRotation: Int\n): Int {\n    val sensorOrientation =\n        characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION) ?: 0\n\n    val deviceOrientationDegrees = when (deviceRotation) {\n        Surface.ROTATION_90 -> 90\n        Surface.ROTATION_180 -> 180\n        Surface.ROTATION_270 -> 270\n        else -> 0\n    }\n\n    val lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING)\n\n    return if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {\n        (sensorOrientation + deviceOrientationDegrees) % 360\n    } else {\n        (sensorOrientation - deviceOrientationDegrees + 360) % 360\n    }\n}\n",[31,4176,4177,4182,4187,4192,4197,4202,4207,4211,4216,4221,4226,4231,4236,4240,4244,4249,4253,4258,4263,4268,4273,4277],{"__ignoreMap":87},[91,4178,4179],{"class":93,"line":94},[91,4180,4181],{},"private fun getJpegOrientation(\n",[91,4183,4184],{"class":93,"line":105},[91,4185,4186],{},"    characteristics: CameraCharacteristics,\n",[91,4188,4189],{"class":93,"line":121},[91,4190,4191],{},"    deviceRotation: Int\n",[91,4193,4194],{"class":93,"line":134},[91,4195,4196],{},"): Int {\n",[91,4198,4199],{"class":93,"line":228},[91,4200,4201],{},"    val sensorOrientation =\n",[91,4203,4204],{"class":93,"line":250},[91,4205,4206],{},"        characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION) ?: 0\n",[91,4208,4209],{"class":93,"line":260},[91,4210,1450],{"emptyLinePlaceholder":846},[91,4212,4213],{"class":93,"line":274},[91,4214,4215],{},"    val deviceOrientationDegrees = when (deviceRotation) {\n",[91,4217,4218],{"class":93,"line":284},[91,4219,4220],{},"        Surface.ROTATION_90 -> 90\n",[91,4222,4223],{"class":93,"line":299},[91,4224,4225],{},"        Surface.ROTATION_180 -> 180\n",[91,4227,4228],{"class":93,"line":319},[91,4229,4230],{},"        Surface.ROTATION_270 -> 270\n",[91,4232,4233],{"class":93,"line":334},[91,4234,4235],{},"        else -> 0\n",[91,4237,4238],{"class":93,"line":355},[91,4239,1693],{},[91,4241,4242],{"class":93,"line":364},[91,4243,1450],{"emptyLinePlaceholder":846},[91,4245,4246],{"class":93,"line":378},[91,4247,4248],{},"    val lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING)\n",[91,4250,4251],{"class":93,"line":387},[91,4252,1450],{"emptyLinePlaceholder":846},[91,4254,4255],{"class":93,"line":402},[91,4256,4257],{},"    return if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {\n",[91,4259,4260],{"class":93,"line":422},[91,4261,4262],{},"        (sensorOrientation + deviceOrientationDegrees) % 360\n",[91,4264,4265],{"class":93,"line":438},[91,4266,4267],{},"    } else {\n",[91,4269,4270],{"class":93,"line":458},[91,4271,4272],{},"        (sensorOrientation - deviceOrientationDegrees + 360) % 360\n",[91,4274,4275],{"class":93,"line":467},[91,4276,1693],{},[91,4278,4279],{"class":93,"line":481},[91,4280,137],{},[16,4282,4283,4284,4287],{},"예를 들어 후면 카메라 센서가 90도일 때, 기기를 오른쪽으로 눕힌 상태에서 ",[31,4285,4286],{},"Display.getRotation()","이 270도를 반환한다면 결과는 180도다.",[82,4289,4292],{"className":4290,"code":4291,"language":1099,"meta":87},[1097],"(90 - 270 + 360) % 360 = 180\n",[31,4293,4291],{"__ignoreMap":87},[16,4295,4296,4297,4299],{},"이 값을 ",[31,4298,4118],{},"에 넣으면 JPEG 파일에는 EXIF 방향 정보가 기록된다. 많은 이미지 뷰어는 이 EXIF 값을 보고 사진을 올바른 방향으로 표시한다.",[1112,4301,4302],{},[16,4303,4304,4305,4311,4312,4316,4317],{},"url: ",[4306,4307,4308],"a",{"href":4308,"rel":4309},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48406497\u002Fcamera2-understanding-the-sensor-and-device-orientations",[4310],"nofollow","\ntitle: \"Camera2 understanding the sensor and device orientations\"\ndescription: \"I bumped into an issue while trying to implement a touch to focus feature using the Android Camera2. The theory is easy:obtain the tap position in the preview surfacemap it to the dimensions of...\"\nhost: stackoverflow.com\nfavicon: ",[4306,4313,4314],{"href":4314,"rel":4315},"https:\u002F\u002Fstackoverflow.com\u002FContent\u002FSites\u002Fstackoverflow\u002FImg\u002Ffavicon.ico?v=562fb39d93c8",[4310],"\nimage: ",[4306,4318,4319],{"href":4319,"rel":4320},"https:\u002F\u002Fstackoverflow.com\u002FContent\u002FSites\u002Fstackoverflow\u002FImg\u002Fapple-touch-icon@2.png?v=0f0cab681579",[4310],[16,4322,4323],{},[19,4324],{"alt":4325,"src":4326},"기기 회전에 따른 카메라 센서 방향","\u002Fblog\u002Fimg\u002Fandroid-camera2-guideline-rotation\u002Fdevice-rotation-orientation.png",[16,4328,4329,4330,4332,4333,4336],{},"여기서 주의할 점은 회전 API마다 기준이 다를 수 있다는 것이다. ",[31,4331,4286],{},"은 화면 표시 회전을 기준으로 하고, ",[31,4334,4335],{},"OrientationEventListener","는 물리적인 기기 회전 각도를 더 직접적으로 다룬다. 두 값을 섞어 쓰면 방향 계산이 반대로 보일 수 있으므로, 하나의 기준을 정하고 로그로 센서 각도, 기기 각도, 결과 각도를 함께 확인해야 한다.",[49,4338,4340],{"id":4339},"gps-exif는-자동으로-들어가지-않는다","GPS EXIF는 자동으로 들어가지 않는다",[16,4342,4343],{},"위치 권한이 있다고 해서 촬영 이미지의 EXIF에 위경도가 자동으로 들어가지는 않는다. 카메라 요청에 GPS 위치 정보를 명시적으로 넣어야 한다.",[16,4345,4346],{},"먼저 촬영 시점에 사용할 위치를 가져온다.",[82,4348,4350],{"className":1000,"code":4349,"language":1002,"meta":87,"style":87},"fusedLocationProviderClient?.lastLocation\n    ?.addOnSuccessListener { location: Location? ->\n        callback(location)\n    }\n    ?.addOnFailureListener {\n        callback(null)\n    }\n",[31,4351,4352,4357,4362,4367,4371,4376,4381],{"__ignoreMap":87},[91,4353,4354],{"class":93,"line":94},[91,4355,4356],{},"fusedLocationProviderClient?.lastLocation\n",[91,4358,4359],{"class":93,"line":105},[91,4360,4361],{},"    ?.addOnSuccessListener { location: Location? ->\n",[91,4363,4364],{"class":93,"line":121},[91,4365,4366],{},"        callback(location)\n",[91,4368,4369],{"class":93,"line":134},[91,4370,1693],{},[91,4372,4373],{"class":93,"line":228},[91,4374,4375],{},"    ?.addOnFailureListener {\n",[91,4377,4378],{"class":93,"line":250},[91,4379,4380],{},"        callback(null)\n",[91,4382,4383],{"class":93,"line":260},[91,4384,1693],{},[16,4386,4387,4388,4391],{},"그 다음 캡처 요청에 ",[31,4389,4390],{},"JPEG_GPS_LOCATION","을 설정한다.",[82,4393,4395],{"className":1000,"code":4394,"language":1002,"meta":87,"style":87},"location?.let { loc ->\n    captureRequestBuilder?.set(CaptureRequest.JPEG_GPS_LOCATION, loc)\n}\n",[31,4396,4397,4402,4407],{"__ignoreMap":87},[91,4398,4399],{"class":93,"line":94},[91,4400,4401],{},"location?.let { loc ->\n",[91,4403,4404],{"class":93,"line":105},[91,4405,4406],{},"    captureRequestBuilder?.set(CaptureRequest.JPEG_GPS_LOCATION, loc)\n",[91,4408,4409],{"class":93,"line":121},[91,4410,137],{},[16,4412,4413],{},"이 설정을 추가해야 카메라 하드웨어 또는 프레임워크가 JPEG EXIF에 GPS 정보를 기록한다. 촬영 시점과 위치가 문서 데이터의 근거가 되는 경우 이 처리가 중요하다. 권한을 얻는 것과 EXIF에 기록하는 것은 별개의 단계다.",[829,4415,4416],{},"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":87,"searchDepth":105,"depth":105,"links":4418},[4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429],{"id":2891,"depth":105,"text":2892},{"id":2928,"depth":105,"text":2929},{"id":2988,"depth":105,"text":2989},{"id":3127,"depth":105,"text":3128},{"id":3351,"depth":105,"text":3352},{"id":3500,"depth":105,"text":3501},{"id":3694,"depth":105,"text":3695},{"id":3919,"depth":105,"text":3920},{"id":3968,"depth":105,"text":3969},{"id":4149,"depth":105,"text":4150},{"id":4339,"depth":105,"text":4340},"2025-08-11","안드로이드 Camera2 API로 업무 문서 촬영용 커스텀 카메라 화면을 구현하면서 정리한 미리보기 파이프라인, 가이드라인 오버레이, 줌, JPEG_ORIENTATION, GPS EXIF, ImageReader 안정화 방식을 설명한다.","android-camera2-guideline-rotation",{},"\u002Fblog\u002Fandroid-camera2-guideline-rotation",{"title":2869,"description":4431},{"loc":4434},"blog\u002Fandroid-camera2-guideline-rotation","Android",[1511,4440,1002,1503],"camera","long","KfTMIl_nCa8C8wKkPygAXawT0Yu9smp5Wi-KcVAnjFo",{"id":4444,"title":4445,"body":4446,"created":4560,"description":4561,"extension":843,"filename":4562,"meta":4563,"navigation":846,"path":4564,"seo":4565,"sitemap":4566,"stem":4567,"subject":4438,"tags":4568,"updated":4560,"volume":1863,"__hash__":4570},"blog\u002Fblog\u002Fandroid-noti-bundle.md","안드로이드 노티피케이션 번들 데이터 최신화 Android Notification Bundle Data",{"type":8,"value":4447,"toc":4558},[4448,4505,4516,4519,4526,4529,4544,4553,4556],[82,4449,4451],{"className":1000,"code":4450,"language":1002,"meta":87,"style":87},"fun sendNoti(title: String, message: String, data: Map\u003CString, String>) {  \n    val intent = Intent(this, MainActivity::class.java).apply {  \n        flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP\n        data.get(\"key\")?.let {value -> \n            this.putExtra(\"key\", value)\n        }\n    }\n    val pendingIntent = PendingIntent.getActivity(this, 0, intent, FLAG_MUTABLE) \n    val notificationBuilder = NotificationCompat.Builder(this, channelId)\n        .setContentIntent(pendingIntent)  \n}\n",[31,4452,4453,4458,4463,4468,4473,4478,4482,4486,4491,4496,4501],{"__ignoreMap":87},[91,4454,4455],{"class":93,"line":94},[91,4456,4457],{},"fun sendNoti(title: String, message: String, data: Map\u003CString, String>) {  \n",[91,4459,4460],{"class":93,"line":105},[91,4461,4462],{},"    val intent = Intent(this, MainActivity::class.java).apply {  \n",[91,4464,4465],{"class":93,"line":121},[91,4466,4467],{},"        flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP\n",[91,4469,4470],{"class":93,"line":134},[91,4471,4472],{},"        data.get(\"key\")?.let {value -> \n",[91,4474,4475],{"class":93,"line":228},[91,4476,4477],{},"            this.putExtra(\"key\", value)\n",[91,4479,4480],{"class":93,"line":250},[91,4481,3307],{},[91,4483,4484],{"class":93,"line":260},[91,4485,1693],{},[91,4487,4488],{"class":93,"line":274},[91,4489,4490],{},"    val pendingIntent = PendingIntent.getActivity(this, 0, intent, FLAG_MUTABLE) \n",[91,4492,4493],{"class":93,"line":284},[91,4494,4495],{},"    val notificationBuilder = NotificationCompat.Builder(this, channelId)\n",[91,4497,4498],{"class":93,"line":299},[91,4499,4500],{},"        .setContentIntent(pendingIntent)  \n",[91,4502,4503],{"class":93,"line":319},[91,4504,137],{},[16,4506,4507,4508,4511,4512,4515],{},"이렇게 넣어주었는데, 노티를 띄울 때는\n",[31,4509,4510],{},"intent Bundle[{key=newvalue}]","\n로 표시되고 onCreate 에서 노티 데이터를 받았을 때는\n",[31,4513,4514],{},"bundle Bundle[{key=oldvalue}]"," 로 표시된다.",[16,4517,4518],{},"가장 최근으로 띄운 노티의 데이터가 아닌, 이젠 노티의 데이터를 사용하는 듯 하다.",[16,4520,4521],{},[4306,4522,4525],{"href":4523,"rel":4524},"https:\u002F\u002Fstackoverflow.com\u002Fa\u002F3140497",[4310],"Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras? - Stack Overflow",[16,4527,4528],{},"가장 최신의 노티 데이터를 항상 덮어 쓰게끔 하면 된다!",[4530,4531,4532,4538],"ol",{},[27,4533,4534,4537],{},[31,4535,4536],{},"FLAG_UPDATE_CURRENT"," 플래그를 사용하고",[27,4539,4540,4543],{},[31,4541,4542],{},"requestCode"," 를 0 고정 값이 아니라 유니크한 값으로 지정해주면 된다.",[82,4545,4547],{"className":1000,"code":4546,"language":1002,"meta":87,"style":87},"val pendingIntent = PendingIntent.getActivity(this, System.currentTimeMillis().toInt(), intent, FLAG_MUTABLE)\n",[31,4548,4549],{"__ignoreMap":87},[91,4550,4551],{"class":93,"line":94},[91,4552,4546],{},[16,4554,4555],{},"우선은 별다른 규칙 없이 현재 타임스탬프를 지정해주니까, 내가 넣어준 마지막 값으로 잘 들어온다.",[829,4557,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":4559},[],"2023-09-07","안드로이드 노티피케이션을 터치해 액티비티를 진입할 때 onCreate 에서 전달받는 데이터가 원치 않는 값으로 들어온다. 해결 방법을 찾아보자.","android-noti-bundle",{},"\u002Fblog\u002Fandroid-noti-bundle",{"title":4445,"description":4561},{"loc":4564},"blog\u002Fandroid-noti-bundle",[4438,4569],"Android Notification","rMS4JxoK_Jc_DbpL5OUnDNKi-QRWJUcJWD-9iEkyLHY",{"id":4572,"title":4573,"body":4574,"created":4945,"description":4946,"extension":843,"filename":4947,"meta":4948,"navigation":846,"path":4949,"seo":4950,"sitemap":4951,"stem":4952,"subject":4438,"tags":4953,"updated":4945,"volume":853,"__hash__":4955},"blog\u002Fblog\u002Fandroid-sdk-15-edge-to-edge.md","안드로이드 SDK 15 (Target 35) 업데이트 대응 및 Edge-to-Edge UI, IME 인셋 처리",{"type":8,"value":4575,"toc":4937},[4576,4583,4588,4595,4599,4602,4648,4655,4659,4667,4672,4679,4784,4788,4791,4795,4806,4817,4821,4828,4843,4849,4921,4935],[1112,4577],{"description":4578,"host":4579,"image":4580,"title":4581,"url":4582},"Android 15 이상을 타겟팅하는 앱에 영향을 미치는 Android 15의 변경사항을 알아봅니다.","developer.android.com","https:\u002F\u002Fdeveloper.android.com\u002Fstatic\u002Fimages\u002Fsocial\u002Fandroid-developers.png?hl=ko","동작 변경사항: Android 15 이상을 타겟팅하는 앱  |  Android Developers","https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F15\u002Fbehavior-changes-15?hl=ko",[16,4584,4585],{},[19,4586],{"alt":87,"src":4587},"\u002Fblog\u002Fimg\u002Fandroid-sdk-15-edge-to-edge\u002Fandroid-sdk-15-overview.png",[16,4589,4590,4591,4594],{},"구글 플레이 스토어 배포 규격에 따라 ",[31,4592,4593],{},"targetSdkVersion","을 35(안드로이드 15)로 설정하면 운영체제 수준에서 시스템 동작 및 UI 정책이 크게 변경된다. 특히 기존 레이아웃 구성을 흔드는 화면 전체 렌더링 강제화 정책은 하이브리드 웹뷰 앱 등에서 다양한 오동작을 일으킬 수 있다.",[49,4596,4598],{"id":4597},"타겟-sdk-35-이상-앱의-주요-변경-사항","타겟 SDK 35 이상 앱의 주요 변경 사항",[16,4600,4601],{},"빌드 타겟 버전을 35 이상으로 올리면 다음 규칙들이 적용되므로, 영향 범위가 넓은 요소들을 점검해야 한다.",[24,4603,4604,4610,4620,4636,4642],{},[27,4605,4606,4609],{},[792,4607,4608],{},"OpenJDK 17 마이그레이션",": 안드로이드 15의 코어 런타임이 OpenJDK 17을 기반으로 하므로 관련 코어 자바\u002F코틀린 API 를 확인해야 함",[27,4611,4612,4619],{},[792,4613,4614,4615,4618],{},"정확한 알람 권한 제한 (",[31,4616,4617],{},"USE_EXACT_ALARM",")",": 백그라운드 스케줄링 등에 쓰이는 정확한 알람을 구성하려면 명시적인 승인을 얻도록 정책이 엄격화",[27,4621,4622,112,4625,4628,4629,64,4632,4635],{},[792,4623,4624],{},"포그라운드 서비스 유형 명시 선언 필수",[31,4626,4627],{},"AndroidManifest.xml"," 내에 포그라운드 서비스의 유형(",[31,4630,4631],{},"dataSync",[31,4633,4634],{},"mediaProcessing"," 등)을 선언하지 않으면 런타임 차단이 발생한다.",[27,4637,4638,4641],{},[792,4639,4640],{},"TextView elegantTextHeight 기본값 변환",": 한글이나 아랍어 등 획이 크고 복잡한 문자열의 가독성을 높이기 위해 세로 폰트 크기가 자동 확장되는데, 이로 인해 텍스트 영역 레이아웃이 미세하게 뒤틀릴 수 있음",[27,4643,4644,4647],{},[792,4645,4646],{},"Edge-to-Edge UI 기본 강제 적용",": 가장 눈에 띄는 변화로, 앱 화면 전체를 상하단 시스템 바(상태바 및 소프트웨어 내비게이션 바) 영역까지 전부 덮어버리는 레이아웃 전체 렌더링 모드가 기본으로 사용됨",[16,4649,4650,4651,4654],{},"안드로이드 스튜디오의 ",[31,4652,4653],{},"Tools -> Android SDK Upgrade Assistant"," 기능을 활용하면 프로젝트 마이그레이션 단계에서 권장되는 체크리스트 가이드를 참고하여 도움을 받을 수 있다.",[49,4656,4658],{"id":4657},"edge-to-edge-ui와-인셋의-이해","Edge-to-Edge UI와 인셋의 이해",[1112,4660],{"description":4661,"host":4662,"image":4663,"title":4664,"url":4665,"favicon":4666},"최신 안드로이드 기기에 대응하기 위하여 Edge-to-Edge를 대응하는 방법을 소개합니다.","haeti.palms.blog","https:\u002F\u002Fcdn.palms.blog\u002Fhaeti\u002Fimage\u002F9ef0faef-67db-48ed-837b-3ef6740e7f32.png","[Android] Edge-to-Edge 이해하고 적용해보기","https:\u002F\u002Fhaeti.palms.blog\u002Fedge-to-edge","https:\u002F\u002Fcdn.palms.blog\u002Fhaeti\u002Fimage\u002F52b692b4-362a-49a0-aacc-257ac4764cde.png",[16,4668,4669],{},[19,4670],{"alt":87,"src":4671},"\u002Fblog\u002Fimg\u002Fandroid-sdk-15-edge-to-edge\u002Fedge-to-edge-concept.png",[16,4673,4674,4675,4678],{},"Edge-to-Edge 모드가 켜지면 상태바나 기기 내비게이션 바가 반투명 또는 완전히 투명해지면서 앱 콘텐츠가 덮힌다.\n이를 제어하는 핵심 개념이 ",[792,4676,4677],{},"인셋 (Inset)"," 이다. Inset은 화면의 특정 영역이 시스템 UI(상태 바, 내비게이션 바)와 교차하는 부분을 나타낸다. 콘텐츠가 가려지는 것을 막기 위해 최상위 루트 뷰 컨테이너에 인셋의 물리 픽셀 크기만큼 패딩을 계산하여 적용해주어야 한다.",[82,4680,4682],{"className":1000,"code":4681,"language":1002,"meta":87,"style":87},"\u002F\u002F Activity onCreate 시점 적용 예시\noverride fun onCreate(savedInstanceState: Bundle?) {\n    super.onCreate(savedInstanceState)\n    val rootView = findViewById\u003CView>(R.id.rootView)  \n    \n    ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->  \n        \u002F\u002F 상태 표시줄, 내비게이션 바의 크기 픽셀 정보 수집\n        val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())  \n    \n        \u002F\u002F 수집한 크기만큼 패딩을 동적으로 적용하여 시스템 바 영역과 콘텐츠 분리\n        view.updatePadding(  \n            left = systemBars.left,  \n            top = systemBars.top,  \n            right = systemBars.right,  \n            bottom = systemBars.bottom  \n        )  \n    \n        \u002F\u002F 처리 완료 표시 반환\n        WindowInsetsCompat.CONSUMED  \n    }\n}\n",[31,4683,4684,4689,4694,4699,4704,4708,4713,4718,4723,4727,4732,4737,4742,4747,4752,4757,4762,4766,4771,4776,4780],{"__ignoreMap":87},[91,4685,4686],{"class":93,"line":94},[91,4687,4688],{},"\u002F\u002F Activity onCreate 시점 적용 예시\n",[91,4690,4691],{"class":93,"line":105},[91,4692,4693],{},"override fun onCreate(savedInstanceState: Bundle?) {\n",[91,4695,4696],{"class":93,"line":121},[91,4697,4698],{},"    super.onCreate(savedInstanceState)\n",[91,4700,4701],{"class":93,"line":134},[91,4702,4703],{},"    val rootView = findViewById\u003CView>(R.id.rootView)  \n",[91,4705,4706],{"class":93,"line":228},[91,4707,1674],{},[91,4709,4710],{"class":93,"line":250},[91,4711,4712],{},"    ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->  \n",[91,4714,4715],{"class":93,"line":260},[91,4716,4717],{},"        \u002F\u002F 상태 표시줄, 내비게이션 바의 크기 픽셀 정보 수집\n",[91,4719,4720],{"class":93,"line":274},[91,4721,4722],{},"        val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())  \n",[91,4724,4725],{"class":93,"line":284},[91,4726,1674],{},[91,4728,4729],{"class":93,"line":299},[91,4730,4731],{},"        \u002F\u002F 수집한 크기만큼 패딩을 동적으로 적용하여 시스템 바 영역과 콘텐츠 분리\n",[91,4733,4734],{"class":93,"line":319},[91,4735,4736],{},"        view.updatePadding(  \n",[91,4738,4739],{"class":93,"line":334},[91,4740,4741],{},"            left = systemBars.left,  \n",[91,4743,4744],{"class":93,"line":355},[91,4745,4746],{},"            top = systemBars.top,  \n",[91,4748,4749],{"class":93,"line":364},[91,4750,4751],{},"            right = systemBars.right,  \n",[91,4753,4754],{"class":93,"line":378},[91,4755,4756],{},"            bottom = systemBars.bottom  \n",[91,4758,4759],{"class":93,"line":387},[91,4760,4761],{},"        )  \n",[91,4763,4764],{"class":93,"line":402},[91,4765,1674],{},[91,4767,4768],{"class":93,"line":422},[91,4769,4770],{},"        \u002F\u002F 처리 완료 표시 반환\n",[91,4772,4773],{"class":93,"line":438},[91,4774,4775],{},"        WindowInsetsCompat.CONSUMED  \n",[91,4777,4778],{"class":93,"line":458},[91,4779,1693],{},[91,4781,4782],{"class":93,"line":467},[91,4783,137],{},[49,4785,4787],{"id":4786},"웹뷰-소프트-키보드-가림-현상-해결","웹뷰 소프트 키보드 가림 현상 해결",[16,4789,4790],{},"타겟 SDK 35 전환 후 하이브리드 웹뷰 Input 포커싱 시, 키보드가 입력 창을 완전히 덮어버려 사용자가 입력값을 알 수 없는 상황이 발생했다.",[757,4792,4794],{"id":4793},"오동작의-근본-원인-분석","오동작의 근본 원인 분석",[16,4796,4797,4798,4801,4802,4805],{},"기본적으로 웹뷰는 키보드가 열릴 때 ",[31,4799,4800],{},"adjustPan"," 방식으로 작동해 레이아웃 조정 없이 뷰가 화면 밖으로만 쏠리곤 한다. ",[31,4803,4804],{},"android:windowSoftInputMode=\"adjustResize\""," 속성을 추가하여 키보드가 띄워질 때 액티비티 전체 뷰 크기를 압축하여 상단으로 밀려 올라오게 만들어 주는 것이 기본 정석이다.",[16,4807,4808,4809,4812,4813,4816],{},"그러나 Edge-to-Edge 대응을 위해 인셋 리스너의 패딩 업데이트(",[31,4810,4811],{},"view.updatePadding",") 로직을 추가하며 문제가 발생했다. 시스템 인셋 패딩 조절 요청이 ",[31,4814,4815],{},"adjustResize"," 동작보다 더 높은 우선순위로 동작해서, 키보드가 상승해도 bottom 패딩이 시스템 내비게이션 바 고정 높이에 묶여버린 것. 뷰의 높이를 줄여주지 못해 레이아웃 리사이징이 막힌 것이다.",[757,4818,4820],{"id":4819},"동적-인셋-병합-해결책","동적 인셋 병합 해결책",[16,4822,4823,4824,4827],{},"이 문제를 해결하기 위해 시스템 바 인셋 리스너 내부에서 기기 소프트 키보드에 해당하는 IME 인셋 크기(",[31,4825,4826],{},"WindowInsetsCompat.Type.ime()",")까지 연계하여 bottom 패딩을 동적으로 연산하도록 Kotlin 코드를 개선했다.",[82,4829,4831],{"className":970,"code":4830,"language":972,"meta":87,"style":87},"\u003Cactivity\n    android:windowSoftInputMode=\"adjustResize\">\n",[31,4832,4833,4838],{"__ignoreMap":87},[91,4834,4835],{"class":93,"line":94},[91,4836,4837],{},"\u003Cactivity\n",[91,4839,4840],{"class":93,"line":105},[91,4841,4842],{},"    android:windowSoftInputMode=\"adjustResize\">\n",[16,4844,4845,4846,4848],{},"액티비티에 ",[31,4847,4804],{}," 추가.",[82,4850,4852],{"className":1000,"code":4851,"language":1002,"meta":87,"style":87},"ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->\n    val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())\n    \u002F\u002F 키보드 인셋 감지\n    val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime())\n\n    view.updatePadding(\n        left = systemBars.left,\n        top = systemBars.top,\n        right = systemBars.right,\n        \u002F\u002F 키보드가 켜졌을 때는 키보드 높이를, 꺼졌을 때는 기본 네비게이션 바 높이를 유연하게 선택 적용\n        bottom = maxOf(systemBars.bottom, imeInsets.bottom)\n    )\n    WindowInsetsCompat.CONSUMED\n}\n",[31,4853,4854,4859,4864,4869,4874,4878,4883,4888,4893,4898,4903,4908,4912,4917],{"__ignoreMap":87},[91,4855,4856],{"class":93,"line":94},[91,4857,4858],{},"ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->\n",[91,4860,4861],{"class":93,"line":105},[91,4862,4863],{},"    val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())\n",[91,4865,4866],{"class":93,"line":121},[91,4867,4868],{},"    \u002F\u002F 키보드 인셋 감지\n",[91,4870,4871],{"class":93,"line":134},[91,4872,4873],{},"    val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime())\n",[91,4875,4876],{"class":93,"line":228},[91,4877,1450],{"emptyLinePlaceholder":846},[91,4879,4880],{"class":93,"line":250},[91,4881,4882],{},"    view.updatePadding(\n",[91,4884,4885],{"class":93,"line":260},[91,4886,4887],{},"        left = systemBars.left,\n",[91,4889,4890],{"class":93,"line":274},[91,4891,4892],{},"        top = systemBars.top,\n",[91,4894,4895],{"class":93,"line":284},[91,4896,4897],{},"        right = systemBars.right,\n",[91,4899,4900],{"class":93,"line":299},[91,4901,4902],{},"        \u002F\u002F 키보드가 켜졌을 때는 키보드 높이를, 꺼졌을 때는 기본 네비게이션 바 높이를 유연하게 선택 적용\n",[91,4904,4905],{"class":93,"line":319},[91,4906,4907],{},"        bottom = maxOf(systemBars.bottom, imeInsets.bottom)\n",[91,4909,4910],{"class":93,"line":334},[91,4911,3561],{},[91,4913,4914],{"class":93,"line":355},[91,4915,4916],{},"    WindowInsetsCompat.CONSUMED\n",[91,4918,4919],{"class":93,"line":364},[91,4920,137],{},[16,4922,4923,4926,4927,4930,4931,4934],{},[31,4924,4925],{},"maxOf"," 연산식을 활용하여 키보드가 보이지 않을 때는 ",[31,4928,4929],{},"systemBars.bottom"," 크기만큼 시스템 내비게이션 패딩을 유지하고, 입력 활성화로 키보드가 위로 튀어나오면 키보드의 실시간 높이인 ",[31,4932,4933],{},"imeInsets.bottom","을 선택하여 패딩 크기를 늘려주도록 유도했다.",[829,4936,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":4938},[4939,4940,4941],{"id":4597,"depth":105,"text":4598},{"id":4657,"depth":105,"text":4658},{"id":4786,"depth":105,"text":4787,"children":4942},[4943,4944],{"id":4793,"depth":121,"text":4794},{"id":4819,"depth":121,"text":4820},"2025-07-02","안드로이드 15 (Target SDK 35) 업데이트 시 필수적으로 알아야 할 변경 사항과 Edge-to-Edge UI 강제화로 인해 발생하는 하이브리드 웹뷰 키보드 가림 버그 및 인셋 처리 해결책을 공유한다.","android-sdk-15-edge-to-edge",{},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge",{"title":4573,"description":4946},{"loc":4949},"blog\u002Fandroid-sdk-15-edge-to-edge",[1511,1002,4954],"webview","PqpuIB8WHkpUEQ1_l9UVVJGgJz5bxKU5U0lmEuzYt0s",{"id":4957,"title":4958,"body":4959,"created":5289,"description":5290,"extension":843,"filename":5291,"meta":5292,"navigation":846,"path":5293,"seo":5294,"sitemap":5295,"stem":5296,"subject":5297,"tags":5298,"updated":5289,"volume":1863,"__hash__":5299},"blog\u002Fblog\u002Fandroid-webview-blob-a-tag-download-issue.md","안드로이드 웹뷰에서 다운로드 구현",{"type":8,"value":4960,"toc":5284},[4961,4980,5123,5130,5136,5147,5183,5190,5194,5204,5208,5211,5270,5281],[16,4962,4963,4964,4967,4968,4971,4972,4975,4976,4979],{},"프론트엔드에서 비동기(Fetch, Axios)로 받아온 파일 데이터를 다운로드할 때, 데이터를 ",[31,4965,4966],{},"Blob"," 객체로 만들고 ",[31,4969,4970],{},"URL.createObjectURL()","을 이용해 가상의 URL을 생성한 뒤 ",[31,4973,4974],{},"\u003Ca>"," 태그의 ",[31,4977,4978],{},"download"," 속성으로 파일을 저장하게 하는 방식을 자주 사용한다.",[82,4981,4984],{"className":4982,"code":4983,"language":2864,"meta":87,"style":87},"language-typescript shiki shiki-themes github-light github-dark","\u002F\u002F 프론트엔드의 일반적인 Blob 다운로드 로직\nconst blob = new Blob([res.data], { type: res.headers['content-type'] });\nconst link = document.createElement('a');\n\nlink.href = window.URL.createObjectURL(blob);\nlink.target = '_blank';\nlink.download = getFileName(res); \u002F\u002F 직접 파싱한 파일 이름\n\ndocument.body.append(link);\nlink.click();\ndocument.body.removeChild(link);\n",[31,4985,4986,4991,5014,5036,5040,5061,5073,5089,5093,5104,5114],{"__ignoreMap":87},[91,4987,4988],{"class":93,"line":94},[91,4989,4990],{"class":1343},"\u002F\u002F 프론트엔드의 일반적인 Blob 다운로드 로직\n",[91,4992,4993,4995,4998,5000,5002,5005,5008,5011],{"class":93,"line":105},[91,4994,1968],{"class":566},[91,4996,4997],{"class":108}," blob",[91,4999,1366],{"class":566},[91,5001,2676],{"class":566},[91,5003,5004],{"class":97}," Blob",[91,5006,5007],{"class":101},"([res.data], { type: res.headers[",[91,5009,5010],{"class":169},"'content-type'",[91,5012,5013],{"class":101},"] });\n",[91,5015,5016,5018,5021,5023,5026,5029,5031,5034],{"class":93,"line":121},[91,5017,1968],{"class":566},[91,5019,5020],{"class":108}," link",[91,5022,1366],{"class":566},[91,5024,5025],{"class":101}," document.",[91,5027,5028],{"class":97},"createElement",[91,5030,795],{"class":101},[91,5032,5033],{"class":169},"'a'",[91,5035,1594],{"class":101},[91,5037,5038],{"class":93,"line":134},[91,5039,1450],{"emptyLinePlaceholder":846},[91,5041,5042,5045,5047,5050,5053,5055,5058],{"class":93,"line":228},[91,5043,5044],{"class":101},"link.href ",[91,5046,166],{"class":566},[91,5048,5049],{"class":101}," window.",[91,5051,5052],{"class":108},"URL",[91,5054,1235],{"class":101},[91,5056,5057],{"class":97},"createObjectURL",[91,5059,5060],{"class":101},"(blob);\n",[91,5062,5063,5066,5068,5071],{"class":93,"line":250},[91,5064,5065],{"class":101},"link.target ",[91,5067,166],{"class":566},[91,5069,5070],{"class":169}," '_blank'",[91,5072,118],{"class":101},[91,5074,5075,5078,5080,5083,5086],{"class":93,"line":260},[91,5076,5077],{"class":101},"link.download ",[91,5079,166],{"class":566},[91,5081,5082],{"class":97}," getFileName",[91,5084,5085],{"class":101},"(res); ",[91,5087,5088],{"class":1343},"\u002F\u002F 직접 파싱한 파일 이름\n",[91,5090,5091],{"class":93,"line":274},[91,5092,1450],{"emptyLinePlaceholder":846},[91,5094,5095,5098,5101],{"class":93,"line":284},[91,5096,5097],{"class":101},"document.body.",[91,5099,5100],{"class":97},"append",[91,5102,5103],{"class":101},"(link);\n",[91,5105,5106,5109,5112],{"class":93,"line":299},[91,5107,5108],{"class":101},"link.",[91,5110,5111],{"class":97},"click",[91,5113,2030],{"class":101},[91,5115,5116,5118,5121],{"class":93,"line":319},[91,5117,5097],{"class":101},[91,5119,5120],{"class":97},"removeChild",[91,5122,5103],{"class":101},[16,5124,5125,5126,5129],{},"브라우저 환경에서는 이 방식이 완벽하게 작동한다. 하지만 안드로이드 웹뷰(Android WebView) 기반 앱에서는 파일 다운로드에 제약이 있다. 기본적으로 파일 다운로드를 지원하지 않기 때문에, 네이티브 코드에서 ",[31,5127,5128],{},"setDownloadListener","를 설정해 다운로드 요청을 가로채서 처리해야 한다.",[16,5131,5132],{},[19,5133],{"alt":5134,"src":5135},"안드로이드 다운로드 실패 알림","\u002Fblog\u002Fimg\u002Fandroid-webview-blob-a-tag-download-issue\u002Fandroid-webview-blob-a-tag-download-issue.png",[16,5137,5138,5139,5142,5143,5146],{},"그런데 위와 같이 Javascript로 생성한 Blob URL(",[31,5140,5141],{},"blob:https:\u002F\u002F...",") 기반 다운로드가 발생할 때, 안드로이드 웹뷰의 ",[31,5144,5145],{},"DownloadListener","로 넘어오는 인자들이 그대로 넘어오지 않는다.",[4530,5148,5149,5159,5169],{},[27,5150,5151,5154,5155,5158],{},[792,5152,5153],{},"파일 이름 유실",": 프론트엔드에서 ",[31,5156,5157],{},"link.download"," 속성에 아무리 정교하게 파일 이름을 지정해 주더라도, 네이티브 웹뷰 콜백에는 그 이름이 넘어오지 않는다.",[27,5160,5161,5164,5165,5168],{},[792,5162,5163],{},"Content-Disposition 정보 부재",": HTTP 응답 헤더의 ",[31,5166,5167],{},"Content-Disposition"," 정보를 네이티브에서 알 길이 없다.",[27,5170,5171,5174,5175,5178,5179,5182],{},[792,5172,5173],{},"MIME 타입 의존",": 오직 전달받은 ",[31,5176,5177],{},"url","(blob 주소)과 임의의 ",[31,5180,5181],{},"mimetype","만으로 네이티브에서 파일을 만들어 내야 한다.",[16,5184,5185,5186,5189],{},"결국 네이티브 단에서는 \"어떤 이름으로 파일을 저장해야 할지\" 알 수 없어서, 알 수 없는 임의의 파일명(",[31,5187,5188],{},"bin"," 파일 등)으로 저장해 버리는 현상이 생긴다.",[49,5191,5193],{"id":5192},"대안과-해결-방법","대안과 해결 방법",[16,5195,5196,5197,5199,5200,5203],{},"안드로이드 웹뷰에서 ",[31,5198,4974],{}," 태그 클릭을 트리거하는 방식으로는 Blob 데이터를 올바른 이름으로 안전하게 다운로드하기 어렵다. 이를 해결하려면 다운로드 처리를 프론트엔드가 아닌 ",[792,5201,5202],{},"안드로이드 네이티브로 완전히 위임","해야 한다.",[757,5205,5207],{"id":5206},"javascript-interface-사용","Javascript Interface 사용",[16,5209,5210],{},"프론트엔드에서 Blob 다운로드를 발생시키는 대신, 안드로이드 네이티브 브릿지(Javascript Interface) 함수를 직접 호출한다.",[82,5212,5215],{"className":5213,"code":5214,"language":2865,"meta":87,"style":87},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F 프론트엔드\nif (window.AndroidBridge && window.AndroidBridge.downloadFile) {\n    \u002F\u002F 파일 다운로드에 필요한 파라미터(URL, 파일명 등)를 직접 네이티브로 전달\n    window.AndroidBridge.downloadFile(fileUrl, fileName);\n} else {\n    \u002F\u002F 브라우저용 일반 Blob 다운로드 실행\n}\n",[31,5216,5217,5222,5236,5241,5252,5261,5266],{"__ignoreMap":87},[91,5218,5219],{"class":93,"line":94},[91,5220,5221],{"class":1343},"\u002F\u002F 프론트엔드\n",[91,5223,5224,5227,5230,5233],{"class":93,"line":105},[91,5225,5226],{"class":566},"if",[91,5228,5229],{"class":101}," (window.AndroidBridge ",[91,5231,5232],{"class":566},"&&",[91,5234,5235],{"class":101}," window.AndroidBridge.downloadFile) {\n",[91,5237,5238],{"class":93,"line":121},[91,5239,5240],{"class":1343},"    \u002F\u002F 파일 다운로드에 필요한 파라미터(URL, 파일명 등)를 직접 네이티브로 전달\n",[91,5242,5243,5246,5249],{"class":93,"line":134},[91,5244,5245],{"class":101},"    window.AndroidBridge.",[91,5247,5248],{"class":97},"downloadFile",[91,5250,5251],{"class":101},"(fileUrl, fileName);\n",[91,5253,5254,5256,5259],{"class":93,"line":228},[91,5255,1434],{"class":101},[91,5257,5258],{"class":566},"else",[91,5260,102],{"class":101},[91,5262,5263],{"class":93,"line":250},[91,5264,5265],{"class":1343},"    \u002F\u002F 브라우저용 일반 Blob 다운로드 실행\n",[91,5267,5268],{"class":93,"line":260},[91,5269,137],{"class":101},[16,5271,5272,5273,5276,5277,5280],{},"이 방식을 사용하면 네이티브의 ",[31,5274,5275],{},"DownloadManager","가 주어진 ",[31,5278,5279],{},"fileUrl","로 실제 HTTP 요청을 직접 수행하여 올바른 파일명으로 안정적인 다운로드를 처리할 수 있다. 웹 환경과 앱 환경을 명확히 구분하여 다운로드 방식을 이원화하는 것이 가장 확실한 해결책이다.",[829,5282,5283],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .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":87,"searchDepth":105,"depth":105,"links":5285},[5286],{"id":5192,"depth":105,"text":5193,"children":5287},[5288],{"id":5206,"depth":121,"text":5207},"2026-05-21","프론트엔드에서 Blob과 Object URL을 이용해 a태그로 파일을 다운로드할 때, 안드로이드 웹뷰 환경에서 겪을 수 있는 한계와 대안을 알아본다.","android-webview-blob-a-tag-download-issue",{},"\u002Fblog\u002Fandroid-webview-blob-a-tag-download-issue",{"title":4958,"description":5290},{"loc":5293},"blog\u002Fandroid-webview-blob-a-tag-download-issue","Android \u002F Webview",[2865,1511,4954],"pLQ3DuyIqL5iIhn0msy5nVrbUx2dqm47dkP5WiLHs_E",{"id":5301,"title":5302,"body":5303,"created":5436,"description":5437,"extension":843,"filename":5438,"meta":5439,"navigation":846,"path":5440,"seo":5441,"sitemap":5442,"stem":5443,"subject":5444,"tags":5445,"updated":5436,"volume":1863,"__hash__":5448},"blog\u002Fblog\u002Faxios-compromised-incident-response.md","3월 31일 axios 악성 코드 배포 사태와 대응 절차",{"type":8,"value":5304,"toc":5432},[5305,5312,5326,5337,5348,5352,5369,5373,5376,5423],[16,5306,5307,5308,5311],{},"2026년 3월 31일, 가장 널리 사용되는 HTTP 클라이언트 라이브러리인 ",[31,5309,5310],{},"axios","의 특정 버전에 악성 코드가 삽입되어 npm에 배포되는 사태가 일어났다.",[16,5313,5314,5315,5317,5318,5321,5322,5325],{},"공격자는 ",[31,5316,5310],{},"의 주요 유지관리자 계정 자격 증명을 탈취해 GitHub Actions CI\u002FCD 파이프라인을 우회하고 수동으로 악성 패키지를 게시했다. 배포된 악성 버전은 ",[31,5319,5320],{},"axios@1.14.1","과 ",[31,5323,5324],{},"axios@0.30.4"," 두 가지다.",[16,5327,5328,5329,5332,5333,5336],{},"두 버전 모두 ",[31,5330,5331],{},"plain-crypto-js@4.2.1","이라는 가짜 의존성을 삽입하고 있었다. 이 가짜 패키지는 ",[31,5334,5335],{},"postinstall"," 스크립트를 통해 원격 접근 트로이목마(RAT, Remote Access Trojan)를 시스템에 설치한다.",[16,5338,5339,5340,5343,5344,5347],{},"RAT는 macOS, Windows, Linux를 모두 대상으로 동작하며, 설치된 후 C2(Command and Control) 서버(",[31,5341,5342],{},"sfrclak.com:8000",")와 통신하여 2단계 페이로드를 내려받는다. 특히, 설치를 마치면 악성 코드와 흔적을 삭제하고 깨끗한 ",[31,5345,5346],{},"package.json","으로 교체해 포렌식 탐지를 교묘하게 회피한다는 특징이 있다.",[49,5349,5351],{"id":5350},"영향을-받은-패키지-정보","영향을 받은 패키지 정보",[24,5353,5354,5359,5364],{},[27,5355,5356,5358],{},[31,5357,5320],{}," (shasum: 2553649f232204966871cea80a5d0d6adc700ca)",[27,5360,5361,5363],{},[31,5362,5324],{}," (shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)",[27,5365,5366,5368],{},[31,5367,5331],{}," (shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766)",[49,5370,5372],{"id":5371},"영향-확인-및-대응-절차","영향 확인 및 대응 절차",[16,5374,5375],{},"현재 관리 중인 프로젝트가 감염되었는지 확인하고 대응하려면 다음 절차를 따른다.",[4530,5377,5378,5399,5408,5414],{},[27,5379,5380,5383,5384,5387,5388,5391,5392,2978,5395,5398],{},[792,5381,5382],{},"버전 점검",": 프로젝트 루트에서 ",[31,5385,5386],{},"npm list axios"," 명령을 실행하거나 ",[31,5389,5390],{},"package-lock.json","을 검사해 ",[31,5393,5394],{},"1.14.1",[31,5396,5397],{},"0.30.4"," 버전이 설치되어 있는지 확인.",[27,5400,5401,112,5404,5407],{},[792,5402,5403],{},"의존성 확인",[31,5405,5406],{},"node_modules\u002Fplain-crypto-js"," 가 있는지 확인.",[27,5409,5410,5413],{},[792,5411,5412],{},"감염 여부 판단",": 운영 체제별 RAT 파일이 발견된다면, 시스템이 이미 완전히 감염된 것..",[27,5415,5416,5419,5420,5203],{},[792,5417,5418],{},"비밀키 교체",": CI\u002FCD 로그 등에서 해당 버전을 설치한 이력이 확인된다면, 공격자에게 환경 변수와 자격 증명이 유출되었을 가능성이 매우 높다. 즉시 ",[792,5421,5422],{},"모든 비밀키, 토큰, 액세스 토큰, 암호, 인증서를 새 것으로 교체",[16,5424,5425,5427,5428,5431],{},[31,5426,5390],{},"이나 ",[31,5429,5430],{},"pnpm-lock.yaml","을 철저히 관리하여 오픈소스 패키지 사용 시 자동 업데이트 범위를 제한해야 한다. 무지성으로 업데이트하다가는 걸리기 딱 좋다. 신뢰하지 않은 버전이 설치되는 것을 방지하는 것이 핵심인듯.",{"title":87,"searchDepth":105,"depth":105,"links":5433},[5434,5435],{"id":5350,"depth":105,"text":5351},{"id":5371,"depth":105,"text":5372},"2026-04-01","널리 사용되는 axios 패키지에 원격 접근 트로이목마(RAT)가 포함된 사태의 개요와 대응 방법을 정리한다.","axios-compromised-incident-response",{},"\u002Fblog\u002Faxios-compromised-incident-response",{"title":5302,"description":5437},{"loc":5440},"blog\u002Faxios-compromised-incident-response","Javascript",[5446,2865,5447],"security","node","MOLsTY96rKbM79iWJkeQ30sYw9GCH_MUWtBZOQ0Uzr0",{"id":5450,"title":5451,"body":5452,"created":5712,"description":5713,"extension":843,"filename":5714,"meta":5715,"navigation":846,"path":5716,"seo":5717,"sitemap":5718,"stem":5719,"subject":851,"tags":5720,"updated":5712,"volume":1863,"__hash__":5722},"blog\u002Fblog\u002Fcolor-mix-hash-value-transparency.md","css variables 에 투명도 조절 (color-mix 함수)",{"type":8,"value":5453,"toc":5708},[5454,5468,5471,5509,5512,5532,5535,5538,5546,5564,5567,5575,5578,5584,5589,5592,5596,5604,5699,5705],[82,5455,5457],{"className":84,"code":5456,"language":86,"meta":87,"style":87},"--color-base-20: #ddd;\n",[31,5458,5459],{"__ignoreMap":87},[91,5460,5461,5464],{"class":93,"line":94},[91,5462,5463],{"class":101},"--color-base-20: ",[91,5465,5467],{"class":5466},"s7hpK","#ddd;\n",[16,5469,5470],{},"이런식으로 정의한 컬러 코드 값의 변수로 배경에 투명도를 섞어서 사용할 일이 생겼다.",[82,5472,5474],{"className":84,"code":5473,"language":86,"meta":87,"style":87},"background-color: rgba(--color-base-20, 0.5);\nbackground-color: rgba(var(--color-base-20), 0.5);\nbackground: var(--color-base-20) rgba(0, 0, 0, 0.5);\n",[31,5475,5476,5489,5500],{"__ignoreMap":87},[91,5477,5478,5481,5484,5487],{"class":93,"line":94},[91,5479,5480],{"class":159},"background-color",[91,5482,5483],{"class":101},": rgba(--color-base-20, 0",[91,5485,5486],{"class":97},".5",[91,5488,1594],{"class":101},[91,5490,5491,5493,5496,5498],{"class":93,"line":105},[91,5492,5480],{"class":159},[91,5494,5495],{"class":101},": rgba(var(--color-base-20), 0",[91,5497,5486],{"class":97},[91,5499,1594],{"class":101},[91,5501,5502,5505,5507],{"class":93,"line":121},[91,5503,5504],{"class":101},"background: var(--color-base-20) rgba(0, 0, 0, 0",[91,5506,5486],{"class":97},[91,5508,1594],{"class":101},[16,5510,5511],{},"등 다양한 형태로 사용해봤지만, 모두 작동하지 않는다. hex 형태의 컬러코드는 rgba 에서 사용이 불가능하다.",[82,5513,5515],{"className":84,"code":5514,"language":86,"meta":87,"style":87},"--color-base-20: 240, 240, 240;\nbackground-color: rgba(var(--color-base-20), 0.5);\n",[31,5516,5517,5522],{"__ignoreMap":87},[91,5518,5519],{"class":93,"line":94},[91,5520,5521],{"class":101},"--color-base-20: 240, 240, 240;\n",[91,5523,5524,5526,5528,5530],{"class":93,"line":105},[91,5525,5480],{"class":159},[91,5527,5495],{"class":101},[91,5529,5486],{"class":97},[91,5531,1594],{"class":101},[16,5533,5534],{},"변수를 rgb 값을 찢어놓는 방법도 있다. 그런데 기존 변수들은 건들고 싶지 않았다.",[49,5536,5537],{"id":5537},"color-mix",[1112,5539],{"favicon":5540,"host":5541,"title":5542,"url":5543,"description":5544,"image":5545},"https:\u002F\u002Fdeveloper.mozilla.org\u002Ffavicon-48x48.bc390275e955dacb2e65.png","developer.mozilla.org","color-mix() - CSS: Cascading Style Sheets | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fcolor_value\u002Fcolor-mix","The color-mix() functional notation takes two \u003Ccolor> values and returns the result of mixing them in a given colorspace by a given amount.","https:\u002F\u002Fdeveloper.mozilla.org\u002Fmdn-social-share.d893525a4fb5fb1f67a2.png",[82,5547,5549],{"className":84,"code":5548,"language":86,"meta":87,"style":87},"background-color: color-mix(in srgb, var(--color-base-20), #0000 50%);\n",[31,5550,5551],{"__ignoreMap":87},[91,5552,5553,5555,5558,5561],{"class":93,"line":94},[91,5554,5480],{"class":159},[91,5556,5557],{"class":101},": color-mix(in srgb, var(--color-base-20), ",[91,5559,5560],{"class":5466},"#0000",[91,5562,5563],{"class":101}," 50%);\n",[16,5565,5566],{},"이렇게 색상을 섞을 수 있는 mixin 이 있다.",[4530,5568,5569,5572],{},[27,5570,5571],{},"타입 : hsl, lch, srgb, lab, custom-color-space",[27,5573,5574],{},"색상 : 색상 %",[16,5576,5577],{},"투명도만 주고 싶은 경우이기 때문에, 첫번째 색상은 원본 색상을 주고, 두번째는 완전 투명한 색상에 투명도를 50%로 주어서 섞었다. 그럼 rgba(--var, 0.5) 와 동일한 효과가 된다.",[1112,5579],{"favicon":5580,"host":5581,"title":5582,"url":5583},"https:\u002F\u002Fcaniuse.com\u002Fimg\u002Ffavicon-128.png","caniuse.com","\"color-mix\" | Can I use... Support tables for HTML5, CSS3, etc","https:\u002F\u002Fcaniuse.com\u002F?search=color-mix",[16,5585,5586],{},[19,5587],{"alt":21,"src":5588},"\u002Fblog\u002Fimg\u002Fcolor-mix-hash-value-transparency\u002Fimage.png",[16,5590,5591],{},"웬만하면 다 쓸 수 있는듯~",[49,5593,5595],{"id":5594},"tailwindcss-를-사용하면-alpha-를-사용할-수-있다","tailwindcss 를 사용하면 --alpha() 를 사용할 수 있다",[1112,5597],{"favicon":5598,"host":5599,"title":5600,"url":5601,"description":5602,"image":5603},"https:\u002F\u002Ftailwindcss.com\u002Ffavicons\u002Ffavicon-32x32.png?v=4","tailwindcss.com","Functions and directives - Core concepts","https:\u002F\u002Ftailwindcss.com\u002Fdocs\u002Ffunctions-and-directives#alpha-function","A reference for the custom functions and directives Tailwind exposes to your CSS.","https:\u002F\u002Ftailwindcss.com\u002Fapi\u002Fog?path=\u002Fdocs\u002Ffunctions-and-directives",[82,5605,5607],{"className":84,"code":5606,"language":86,"meta":87,"style":87},".my-element {\n  color: --alpha(var(--color-lime-300) \u002F 50%);\n}\n\u002F* compiled css *\u002F\n.my-element {\n  color: color-mix(in oklab, var(--color-lime-300) 50%, transparent);\n}\n",[31,5608,5609,5616,5643,5647,5652,5658,5695],{"__ignoreMap":87},[91,5610,5611,5614],{"class":93,"line":94},[91,5612,5613],{"class":97},".my-element",[91,5615,102],{"class":101},[91,5617,5618,5621,5624,5627,5629,5632,5635,5638,5641],{"class":93,"line":105},[91,5619,5620],{"class":108},"  color",[91,5622,5623],{"class":101},": --alpha(",[91,5625,5626],{"class":108},"var",[91,5628,795],{"class":101},[91,5630,5631],{"class":1172},"--color-lime-300",[91,5633,5634],{"class":101},") \u002F ",[91,5636,5637],{"class":108},"50",[91,5639,5640],{"class":566},"%",[91,5642,1594],{"class":101},[91,5644,5645],{"class":93,"line":121},[91,5646,137],{"class":101},[91,5648,5649],{"class":93,"line":134},[91,5650,5651],{"class":1343},"\u002F* compiled css *\u002F\n",[91,5653,5654,5656],{"class":93,"line":228},[91,5655,5613],{"class":97},[91,5657,102],{"class":101},[91,5659,5660,5662,5664,5666,5668,5671,5674,5676,5678,5680,5682,5684,5686,5688,5690,5693],{"class":93,"line":250},[91,5661,5620],{"class":108},[91,5663,112],{"class":101},[91,5665,5537],{"class":108},[91,5667,795],{"class":101},[91,5669,5670],{"class":1172},"in",[91,5672,5673],{"class":1172}," oklab",[91,5675,64],{"class":101},[91,5677,5626],{"class":108},[91,5679,795],{"class":101},[91,5681,5631],{"class":1172},[91,5683,1176],{"class":101},[91,5685,5637],{"class":108},[91,5687,5640],{"class":566},[91,5689,64],{"class":101},[91,5691,5692],{"class":108},"transparent",[91,5694,1594],{"class":101},[91,5696,5697],{"class":93,"line":260},[91,5698,137],{"class":101},[16,5700,5701,5702,5704],{},"결국 css 로 컴파일되면 ",[31,5703,5537],{}," 이긴 하다.",[829,5706,5707],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":5709},[5710,5711],{"id":5537,"depth":105,"text":5537},{"id":5594,"depth":105,"text":5595},"2025-03-26","CSS 변수의 투명도를 조절하는 방법을 자세히 다루고, color-mix 함수를 통해 배경에 효과적인 투명도를 적용하는 기법을 소개한다. 다양한 컬러 코드 및 변수를 활용하여 디자인에 깊이를 더하는 방법을 배울 수 있다","color-mix-hash-value-transparency",{},"\u002Fblog\u002Fcolor-mix-hash-value-transparency",{"title":5451,"description":5713},{"loc":5716},"blog\u002Fcolor-mix-hash-value-transparency",[86,5721],"tailwindcss","A-V06knhF8Le2ML9uimMyuVUWUR0LsL_b3oFzxxlYfU",{"id":5724,"title":5725,"body":5726,"created":6033,"description":6034,"extension":843,"filename":6035,"meta":6036,"navigation":846,"path":6037,"seo":6038,"sitemap":6039,"stem":6040,"subject":6041,"tags":6042,"updated":6033,"volume":853,"__hash__":6044},"blog\u002Fblog\u002Fcontent-disposition-browser-display-download.md","Content-Disposition으로 브라우저 표시와 다운로드 제어하기",{"type":8,"value":5727,"toc":6025},[5728,5744,5748,5770,5779,5789,5798,5802,5816,5824,5839,5850,5854,5874,5883,5898,5902,5946,5956,5965,5976,5980,5989,6002,6006,6016,6022],[16,5729,5730,5733,5734,5737,5738,5321,5740,5743],{},[31,5731,5732],{},"\u003Cobject>","나 ",[31,5735,5736],{},"\u003Cembed>","로 PDF를 표시하려고 했는데 브라우저가 파일을 바로 다운로드했다. 태그의 문제가 아니라 파일 응답에 설정된 ",[31,5739,5167],{},[31,5741,5742],{},"Content-Type","이 원인이었다.",[49,5745,5747],{"id":5746},"inline과-attachment의-차이","inline과 attachment의 차이",[82,5749,5753],{"className":5750,"code":5751,"language":5752,"meta":87,"style":87},"language-http shiki shiki-themes github-light github-dark","Content-Disposition: inline\nContent-Disposition: attachment\nContent-Disposition: attachment; filename=\"report.pdf\"\n","http",[31,5754,5755,5760,5765],{"__ignoreMap":87},[91,5756,5757],{"class":93,"line":94},[91,5758,5759],{},"Content-Disposition: inline\n",[91,5761,5762],{"class":93,"line":105},[91,5763,5764],{},"Content-Disposition: attachment\n",[91,5766,5767],{"class":93,"line":121},[91,5768,5769],{},"Content-Disposition: attachment; filename=\"report.pdf\"\n",[16,5771,5772,5775,5776,5778],{},[31,5773,5774],{},"inline","은 응답을 미디어 타입에 맞게 기본 처리하라는 뜻이다. 브라우저가 해당 형식을 표시할 수 있다면 PDF 뷰어나 이미지 화면처럼 브라우저 안에서 처리한다. 헤더를 생략했을 때의 기본 처리와 가깝기 때문에 ",[31,5777,5774],{},"만으로 화면 표시를 강제하지는 않는다.",[16,5780,5781,5784,5785,5788],{},[31,5782,5783],{},"attachment","는 응답을 현재 화면에서 처리하기보다 로컬 파일로 저장하도록 안내한다. ",[31,5786,5787],{},"filename","을 함께 보내면 저장할 때 사용할 기본 파일명을 제안할 수 있다.",[16,5790,5791,5792,5794,5795,5797],{},"브라우저가 최종적으로 어떻게 처리할지는 ",[31,5793,5167],{}," 하나로만 정해지지 않는다. ",[31,5796,5742],{},"과 브라우저가 해당 미디어 타입을 표시할 수 있는지도 함께 영향을 준다.",[49,5799,5801],{"id":5800},"object나-embed에-넣은-pdf가-다운로드된-이유","object나 embed에 넣은 PDF가 다운로드된 이유",[82,5803,5805],{"className":5750,"code":5804,"language":5752,"meta":87,"style":87},"Content-Type: application\u002Fpdf\nContent-Disposition: inline\n",[31,5806,5807,5812],{"__ignoreMap":87},[91,5808,5809],{"class":93,"line":94},[91,5810,5811],{},"Content-Type: application\u002Fpdf\n",[91,5813,5814],{"class":93,"line":105},[91,5815,5759],{},[16,5817,5818,5819,5733,5821,5823],{},"PDF를 브라우저 안에서 표시하려면 응답이 PDF라는 사실과 화면에서 처리할 대상이라는 사실이 함께 전달돼야 한다. ",[31,5820,5732],{},[31,5822,5736],{},"는 응답 헤더를 덮어쓰지 않는다.",[16,5825,5826,5827,5830,5831,5834,5835,5838],{},"응답에 ",[31,5828,5829],{},"Content-Disposition: attachment","가 설정돼 있으면 브라우저는 PDF 뷰어보다 저장 동작을 우선한다. ",[31,5832,5833],{},"Content-Disposition: inline","이어도 ",[31,5836,5837],{},"Content-Type: application\u002Foctet-stream","처럼 범용 바이너리 타입을 보내면 브라우저가 PDF로 판단하지 못해 다운로드할 수 있다.",[16,5840,5841,5842,5844,5845,5321,5847,5849],{},"스토리지 URL을 직접 사용한다면 객체 메타데이터도 확인해야 한다. 애플리케이션 코드에서 ",[31,5843,5732],{},"를 바꾸는 것보다 저장소가 반환하는 ",[31,5846,5742],{},[31,5848,5167],{},"을 바로잡는 것이 우선이다.",[49,5851,5853],{"id":5852},"한글-파일명은-filename으로-전달","한글 파일명은 filename*으로 전달",[82,5855,5857],{"className":5750,"code":5856,"language":5752,"meta":87,"style":87},"Content-Disposition: attachment;\n  filename=\"report.pdf\";\n  filename*=UTF-8''%EB%B3%B4%EA%B3%A0%EC%84%9C.pdf\n",[31,5858,5859,5864,5869],{"__ignoreMap":87},[91,5860,5861],{"class":93,"line":94},[91,5862,5863],{},"Content-Disposition: attachment;\n",[91,5865,5866],{"class":93,"line":105},[91,5867,5868],{},"  filename=\"report.pdf\";\n",[91,5870,5871],{"class":93,"line":121},[91,5872,5873],{},"  filename*=UTF-8''%EB%B3%B4%EA%B3%A0%EC%84%9C.pdf\n",[16,5875,5876,5878,5879,5882],{},[31,5877,5787],{},"은 오래된 클라이언트에서도 사용할 수 있는 기본 파일명이다. 한글처럼 ASCII 범위를 벗어나는 문자는 ",[31,5880,5881],{},"filename*","에 UTF-8과 퍼센트 인코딩을 사용해 전달한다.",[16,5884,5885,5886,5888,5889,5891,5892,5894,5895,5897],{},"두 값이 함께 있으면 ",[31,5887,5881],{},"을 지원하는 클라이언트는 해당 값을 우선하고, 지원하지 않는 클라이언트는 ",[31,5890,5787],{},"을 대체 값으로 사용한다. 호환성을 고려할 때 ",[31,5893,5787],{},"을 먼저 두고 ",[31,5896,5881],{},"을 뒤에 두는 게 좋다.",[49,5899,5901],{"id":5900},"프론트엔드에서-응답-헤더를-읽을-때","프론트엔드에서 응답 헤더를 읽을 때",[82,5903,5905],{"className":1154,"code":5904,"language":1156,"meta":87,"style":87},"const response = await fetch(fileUrl)\nconst disposition = response.headers.get('Content-Disposition')\n",[31,5906,5907,5924],{"__ignoreMap":87},[91,5908,5909,5911,5914,5916,5918,5921],{"class":93,"line":94},[91,5910,1968],{"class":566},[91,5912,5913],{"class":108}," response",[91,5915,1366],{"class":566},[91,5917,1390],{"class":566},[91,5919,5920],{"class":97}," fetch",[91,5922,5923],{"class":101},"(fileUrl)\n",[91,5925,5926,5928,5931,5933,5936,5939,5941,5944],{"class":93,"line":105},[91,5927,1968],{"class":566},[91,5929,5930],{"class":108}," disposition",[91,5932,1366],{"class":566},[91,5934,5935],{"class":101}," response.headers.",[91,5937,5938],{"class":97},"get",[91,5940,795],{"class":101},[91,5942,5943],{"class":169},"'Content-Disposition'",[91,5945,3487],{"class":101},[16,5947,5948,5949,5952,5953,5955],{},"같은 출처의 응답이라면 ",[31,5950,5951],{},"Headers","에서 값을 읽을 수 있다. 다른 출처에 요청할 때는 ",[31,5954,5167],{},"이 CORS 안전 목록에 포함되지 않으므로 서버가 이 헤더를 명시적으로 노출해야 한다.",[82,5957,5959],{"className":5750,"code":5958,"language":5752,"meta":87,"style":87},"Access-Control-Expose-Headers: Content-Disposition\n",[31,5960,5961],{"__ignoreMap":87},[91,5962,5963],{"class":93,"line":94},[91,5964,5958],{},[16,5966,5967,5968,5971,5972,5975],{},"이 설정이 없으면 네트워크 응답에 헤더가 보여도 JavaScript에서 ",[31,5969,5970],{},"response.headers.get()","을 호출했을 때 ",[31,5973,5974],{},"null","이 나온다. 인증 정보를 포함한 요청에서는 와일드카드보다 읽을 헤더 이름을 직접 나열하는 게 확실하다.",[49,5977,5979],{"id":5978},"multipartform-data의-content-disposition","multipart\u002Fform-data의 Content-Disposition",[82,5981,5983],{"className":5750,"code":5982,"language":5752,"meta":87,"style":87},"Content-Disposition: form-data; name=\"attachment\"; filename=\"report.pdf\"\n",[31,5984,5985],{"__ignoreMap":87},[91,5986,5987],{"class":93,"line":94},[91,5988,5982],{},[16,5990,5991,5992,5994,5995,5998,5999,6001],{},"HTTP 응답 헤더의 ",[31,5993,5167],{},"은 응답 본문을 표시하거나 저장하는 방식을 설명한다. ",[31,5996,5997],{},"multipart\u002Fform-data","의 각 파트에 들어가는 ",[31,6000,5167],{},"은 폼 필드의 이름과 업로드한 파일 정보를 나타낸다. 이름은 같지만 적용 위치와 목적이 다르므로 구분해야 한다.",[49,6003,6005],{"id":6004},"참고한-페이지","참고한 페이지",[16,6007,6008,6012],{},[4306,6009,6010],{"href":6010,"rel":6011},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc6266.html",[4310],[4306,6013,6014],{"href":6014,"rel":6015},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8187.html",[4310],[1112,6017],{"favicon":6018,"host":6019,"title":6020,"url":6021},"https:\u002F\u002Fresources.whatwg.org\u002Flogo-fetch.svg","fetch.spec.whatwg.org","Fetch Standard","https:\u002F\u002Ffetch.spec.whatwg.org\u002F#cors-safelisted-response-header-name",[829,6023,6024],{},"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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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}",{"title":87,"searchDepth":105,"depth":105,"links":6026},[6027,6028,6029,6030,6031,6032],{"id":5746,"depth":105,"text":5747},{"id":5800,"depth":105,"text":5801},{"id":5852,"depth":105,"text":5853},{"id":5900,"depth":105,"text":5901},{"id":5978,"depth":105,"text":5979},{"id":6004,"depth":105,"text":6005},"2026-07-13","Content-Disposition의 inline과 attachment가 브라우저의 파일 처리 방식에 미치는 영향과 filename·filename* 사용법, 교차 출처에서 헤더를 읽을 때의 조건을 정리한다.","content-disposition-browser-display-download",{},"\u002Fblog\u002Fcontent-disposition-browser-display-download",{"title":5725,"description":6034},{"loc":6037},"blog\u002Fcontent-disposition-browser-display-download","HTTP",[5752,6043,4978],"content-disposition","-OFnLJwHJvRiQUaQ5mhC1N9nvne3kx3G377qZqEH8oU",{"id":6046,"title":6047,"body":6048,"created":6807,"description":6808,"extension":843,"filename":6809,"meta":6810,"navigation":846,"path":6811,"seo":6812,"sitemap":6813,"stem":6814,"subject":851,"tags":6815,"updated":6807,"volume":853,"__hash__":6817},"blog\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align.md","웹 타이포그래피 심연: 폰트 매트릭스와 line-height, vertical-align의 원리",{"type":8,"value":6049,"toc":6798},[6050,6058,6061,6074,6078,6084,6090,6096,6099,6131,6137,6143,6150,6156,6160,6167,6256,6262,6265,6281,6287,6297,6309,6315,6333,6337,6343,6351,6353,6359,6384,6390,6410,6421,6425,6731,6744,6763,6769,6772,6780,6783,6787,6795],[1112,6051],{"description":6052,"favicon":6053,"host":6054,"image":6055,"title":6056,"url":6057},"An introduction to the inline formatting context. Explores line-height and vertical-align properties, as well as the font metrics. Understand how text is rendered on screen, and how to control it with CSS.","https:\u002F\u002Fiamvdo.me\u002Fimages\u002Ffavicon.png","iamvdo.me","http:\u002F\u002Fiamvdo.me\u002Fimages\u002Fapple-touch-152.png","Deep dive CSS: font metrics, line-height and vertical-align - Vincent De Oliveira","http:\u002F\u002Fiamvdo.me\u002Fen\u002Fblog\u002Fcss-font-metrics-line-height-and-vertical-align",[16,6059,6060],{},"참고한 글",[16,6062,6063,34,6066,6069,6070,6073],{},[31,6064,6065],{},"line-height",[31,6067,6068],{},"vertical-align","을 사용할 때 텍스트가 미세하게 위아래로 치우치거나, 같은 ",[31,6071,6072],{},"font-size","여도 폰트 종류를 바꾸면 높이와 정렬이 완전히 어그러지는 문제가 있었다. 브라우저가 글자를 렌더링할 때 사용하는 폰트 매트릭스의 동작 방식이 있었고 찾아봤다.",[49,6075,6077],{"id":6076},"폰트-매트릭스font-metrics와-em-square","폰트 매트릭스(Font Metrics)와 em-square",[16,6079,6080],{},[19,6081],{"alt":6082,"src":6083},"폰트 매트릭스 다이어그램","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align.png",[16,6085,6086,6087,6089],{},"웹에서 ",[31,6088,6072],{},"는 실제 글자의 픽셀 크기가 아니었다. 폰트 디자이너가 만든 보이지 않는 상자(em-square 또는 UPM)가 있는데, 이 박스의 크기를 의미한다.",[16,6091,6092],{},[19,6093],{"alt":6094,"src":6095},"폰트 구조 매트릭스","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002Fc641666aa6314e618ab9e6fda50960e6.png",[16,6097,6098],{},"폰트 내부에는 글자를 그리기 위한 수치 정보가 들어 있다.",[24,6100,6101,6107,6113,6119,6125],{},[27,6102,6103,6106],{},[792,6104,6105],{},"Ascender",": 기준선(Baseline) 위로 솟아오른 영역의 높이",[27,6108,6109,6112],{},[792,6110,6111],{},"Descender",": 기준선 아래로 내려간 영역의 높이(소문자 g, p, y 등의 꼬리)",[27,6114,6115,6118],{},[792,6116,6117],{},"Capital Height",": 대문자의 순수한 높이",[27,6120,6121,6124],{},[792,6122,6123],{},"x-height",": 소문자 x의 높이",[27,6126,6127,6130],{},[792,6128,6129],{},"Line Gap",": 폰트 디자이너가 권장하는 기본 줄 간격",[16,6132,6133,6134,6136],{},"폰트 디자이너마다 Ascender와 Descender 비율을 다르게 설계한다. 따라서 ",[31,6135,6072],{},"가 같아도 폰트가 다르면 화면에 렌더링되는 실제 글자 높이와 기준선이 모두 달라진다.",[16,6138,6139],{},[19,6140],{"alt":6141,"src":6142},"Ascender와 Descender 비율 수치","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-1.png",[16,6144,6145,6146,6149],{},"폰트의 정보를 보면 ",[31,6147,6148],{},"em-squre"," 1000에서 ascender 1100 + descender 540 을 더해 1640 \u002F 10 을 font-size 100px 에서 크기를 정의한다.",[16,6151,6152],{},[19,6153],{"alt":6154,"src":6155},"폰트 영역 비교","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-2.png",[49,6157,6159],{"id":6158},"line-height와-높이-계산","line-height와 높이 계산",[16,6161,6162],{},[4306,6163,6166],{"href":6164,"rel":6165},"https:\u002F\u002Fwww.w3.org\u002FTR\u002FCSS2\u002Fvisudet.html#line-height",[4310],"line-height 와 vertical-align 계산에 대해서",[82,6168,6170],{"className":147,"code":6169,"language":149,"meta":87,"style":87},"\u003Cp>\n    Good design will be better.\n    \u003Cspan class=\"a\">Ba\u003C\u002Fspan>\n    \u003Cspan class=\"b\">Ba\u003C\u002Fspan>\n    \u003Cspan class=\"c\">Ba\u003C\u002Fspan>\n    We get to make a consequence.\n\u003C\u002Fp>\n",[31,6171,6172,6180,6185,6205,6224,6243,6248],{"__ignoreMap":87},[91,6173,6174,6176,6178],{"class":93,"line":94},[91,6175,156],{"class":101},[91,6177,16],{"class":159},[91,6179,173],{"class":101},[91,6181,6182],{"class":93,"line":105},[91,6183,6184],{"class":101},"    Good design will be better.\n",[91,6186,6187,6189,6191,6193,6195,6198,6201,6203],{"class":93,"line":121},[91,6188,178],{"class":101},[91,6190,91],{"class":159},[91,6192,163],{"class":97},[91,6194,166],{"class":101},[91,6196,6197],{"class":169},"\"a\"",[91,6199,6200],{"class":101},">Ba\u003C\u002F",[91,6202,91],{"class":159},[91,6204,173],{"class":101},[91,6206,6207,6209,6211,6213,6215,6218,6220,6222],{"class":93,"line":134},[91,6208,178],{"class":101},[91,6210,91],{"class":159},[91,6212,163],{"class":97},[91,6214,166],{"class":101},[91,6216,6217],{"class":169},"\"b\"",[91,6219,6200],{"class":101},[91,6221,91],{"class":159},[91,6223,173],{"class":101},[91,6225,6226,6228,6230,6232,6234,6237,6239,6241],{"class":93,"line":228},[91,6227,178],{"class":101},[91,6229,91],{"class":159},[91,6231,163],{"class":97},[91,6233,166],{"class":101},[91,6235,6236],{"class":169},"\"c\"",[91,6238,6200],{"class":101},[91,6240,91],{"class":159},[91,6242,173],{"class":101},[91,6244,6245],{"class":93,"line":250},[91,6246,6247],{"class":101},"    We get to make a consequence.\n",[91,6249,6250,6252,6254],{"class":93,"line":260},[91,6251,493],{"class":101},[91,6253,16],{"class":159},[91,6255,173],{"class":101},[16,6257,6258],{},[19,6259],{"alt":6260,"src":6261},"Content-area와 Line-box","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-3.png",[16,6263,6264],{},"텍스트 영역은 두 가지 박스로 나뉜다.",[24,6266,6267,6273],{},[27,6268,6269,6272],{},[792,6270,6271],{},"Content-area",": 폰트 매트릭스(Ascender + Descender)로 인해 글자가 차지하는 눈에 보이지 않는 높이.",[27,6274,6275,112,6278,6280],{},[792,6276,6277],{},"Line-box",[31,6279,6065],{}," 만큼 차지하는 박스이고 실제 텍스트 줄의 최종 높이를 결정한다.",[16,6282,6283],{},[19,6284],{"alt":6285,"src":6286},"line-box 높이 계산","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F41ee097c688942f9b09348710f1d486a.png",[16,6288,6289,6290,6292,6293,6296],{},"line-boxes 는 같은 줄의 글자 중 가장 큰 ",[31,6291,6065],{}," 로 높이가 설정된다. ",[31,6294,6295],{},"c class"," 의 Ba 때문에, 두번째줄의 line-box 높이가 다른 애들보다 커진 것.",[16,6298,6299,6301,6302,6305,6306,6308],{},[31,6300,6065],{},"에서 ",[31,6303,6304],{},"content-area","를 뺀 나머지 공간을 행간(Leading)이라고 한다. 이 여분의 공간은 ",[31,6307,6304],{}," 위와 아래에 반씩 공평하게 분배된다.",[16,6310,6311],{},[19,6312],{"alt":6313,"src":6314},"인라인 요소의 padding과 line-box","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-4.png",[16,6316,6317,6318,64,6320,64,6322,6324,6325,6328,6329,6332],{},"인라인 요소의 ",[31,6319,805],{},[31,6321,798],{},[31,6323,802],{},"는 시각적인 배경 영역은 늘려주지만 ",[31,6326,6327],{},"line-box","의 높이와는 상관 없다. 레이아웃 높이에 여백을 반영하려면 요소를 ",[31,6330,6331],{},"inline-block","으로 선언해야 함.",[757,6334,6336],{"id":6335},"line-height-normal","line-height : normal",[16,6338,6339],{},[19,6340],{"alt":6341,"src":6342},"line-height normal 계산","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-5.png",[16,6344,6345,6347,6348,6350],{},[31,6346,6336],{},"은 ",[31,6349,6304],{},"와 동일한 값이다. 보통 1640 단위 또는 1.64라고 보면 된다.",[49,6352,6068],{"id":6068},[16,6354,6355],{},[19,6356],{"alt":6357,"src":6358},"vertical-align baseline 정렬","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-6.png",[16,6360,6361,6363,6364,6367,6368,64,6371,6373,6374,6377,6378,6380,6381,6383],{},[31,6362,6068],{},"의 기본값은 ",[31,6365,6366],{},"baseline","이다. 텍스트는 이 기준선에 맞춰 정렬된다. 같은 ",[31,6369,6370],{},"font-family",[31,6372,6072],{},",",[31,6375,6376],{}," line-height"," 를 가진 경우에는 line-box와 line-height가 완전히 일치하고, 배치에도 문제가 없다. 하지만 위 값들이 달라졌을 때, 위 사진은 두번째 요소의 font-size를 반토막냈을 때 결과이다. ",[31,6379,6065],{}," 보다도 line-box의 크기가 커져버렸다. ",[31,6382,6065],{}," 는 동일한 상태로, 정렬이 baseline에 맞춰져서 아래행간이 증가했기 때문이다.",[16,6385,6386],{},[19,6387],{"alt":6388,"src":6389},"font-size 변경에 따른 baseline 변화","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F33097167d3df439ab8832155ae334578.png",[16,6391,6392,6393,6396,6397,6400,6401,6403,6404,6406,6407,6409],{},"가운데 정렬을 위해 ",[31,6394,6395],{},"vertical-align: middle","을 주로 사용하지만, 실제로는 정확한 중앙에 위치하지 않는다. W3C 스펙에 따르면 ",[31,6398,6399],{},"middle","은 부모 박스의 ",[31,6402,6366],{},"에 부모 폰트의 ",[31,6405,6123],{}," 절반을 더한 지점에 자식 박스의 중간점을 정렬한다. 폰트마다 ",[31,6408,6123],{}," 비율이 다르기 때문에 우리가 생각하는 절대적인 중앙과 오차가 생긴다.",[16,6411,6412,6413,6416,6417,6420],{},"이 오차를 보정하기 위해 CSS 커스텀 속성(",[31,6414,6415],{},"calc",")으로 폰트의 Ascender와 Descender 수치를 역산하는 방법도 있지만, 폰트 로드 실패로 폴백(Fallback) 폰트가 적용될 때 계산이 모두 틀어지는 문제가 있다. 따라서 정확한 수직 중앙 정렬이 필요할 때는 Flexbox(",[31,6418,6419],{},"align-items: center",")를 사용하는 것이 안전하다.",[49,6422,6424],{"id":6423},"정확히-높이가-100px인-글자-표현","정확히 높이가 100px인 글자 표현",[82,6426,6428],{"className":84,"code":6427,"language":86,"meta":87,"style":87},"p {\n  \u002F* 폰트 매트릭스 수치 (예: Catamaran) *\u002F\n  --font: Catamaran;\n  --fm-capitalHeight: 0.68;\n  --fm-descender: 0.54;\n  --fm-ascender: 1.1;\n  --fm-linegap: 0;\n\n  \u002F* 목표 대문자 높이 *\u002F\n  --capital-height: 100;\n  font-family: var(--font);\n\n  \u002F* 대문자 높이 100px 기준 font-size 계산 *\u002F\n  --computedFontSize: (var(--capital-height) \u002F var(--fm-capitalHeight));\n  font-size: calc(var(--computedFontSize) * 1px);\n\n  \u002F* 수직 중앙 정렬을 위한 여백 계산 *\u002F\n  --distanceBottom: var(--fm-descender);\n  --distanceTop: (var(--fm-ascender) - var(--fm-capitalHeight));\n  --valign: ((var(--distanceBottom) - var(--distanceTop)) * var(--computedFontSize));\n}\n\nspan {\n  vertical-align: calc(var(--valign) * -1px);\n}\n",[31,6429,6430,6436,6441,6449,6461,6473,6485,6496,6500,6505,6517,6533,6537,6542,6569,6599,6603,6608,6624,6649,6684,6688,6692,6698,6727],{"__ignoreMap":87},[91,6431,6432,6434],{"class":93,"line":94},[91,6433,16],{"class":159},[91,6435,102],{"class":101},[91,6437,6438],{"class":93,"line":105},[91,6439,6440],{"class":1343},"  \u002F* 폰트 매트릭스 수치 (예: Catamaran) *\u002F\n",[91,6442,6443,6446],{"class":93,"line":121},[91,6444,6445],{"class":1172},"  --font",[91,6447,6448],{"class":101},": Catamaran;\n",[91,6450,6451,6454,6456,6459],{"class":93,"line":134},[91,6452,6453],{"class":1172},"  --fm-capitalHeight",[91,6455,112],{"class":101},[91,6457,6458],{"class":108},"0.68",[91,6460,118],{"class":101},[91,6462,6463,6466,6468,6471],{"class":93,"line":228},[91,6464,6465],{"class":1172},"  --fm-descender",[91,6467,112],{"class":101},[91,6469,6470],{"class":108},"0.54",[91,6472,118],{"class":101},[91,6474,6475,6478,6480,6483],{"class":93,"line":250},[91,6476,6477],{"class":1172},"  --fm-ascender",[91,6479,112],{"class":101},[91,6481,6482],{"class":108},"1.1",[91,6484,118],{"class":101},[91,6486,6487,6490,6492,6494],{"class":93,"line":260},[91,6488,6489],{"class":1172},"  --fm-linegap",[91,6491,112],{"class":101},[91,6493,1578],{"class":108},[91,6495,118],{"class":101},[91,6497,6498],{"class":93,"line":274},[91,6499,1450],{"emptyLinePlaceholder":846},[91,6501,6502],{"class":93,"line":284},[91,6503,6504],{"class":1343},"  \u002F* 목표 대문자 높이 *\u002F\n",[91,6506,6507,6510,6512,6515],{"class":93,"line":299},[91,6508,6509],{"class":1172},"  --capital-height",[91,6511,112],{"class":101},[91,6513,6514],{"class":108},"100",[91,6516,118],{"class":101},[91,6518,6519,6522,6524,6526,6528,6531],{"class":93,"line":319},[91,6520,6521],{"class":108},"  font-family",[91,6523,112],{"class":101},[91,6525,5626],{"class":108},[91,6527,795],{"class":101},[91,6529,6530],{"class":1172},"--font",[91,6532,1594],{"class":101},[91,6534,6535],{"class":93,"line":334},[91,6536,1450],{"emptyLinePlaceholder":846},[91,6538,6539],{"class":93,"line":355},[91,6540,6541],{"class":1343},"  \u002F* 대문자 높이 100px 기준 font-size 계산 *\u002F\n",[91,6543,6544,6547,6550,6552,6554,6557,6559,6561,6563,6566],{"class":93,"line":364},[91,6545,6546],{"class":1172},"  --computedFontSize",[91,6548,6549],{"class":101},": (",[91,6551,5626],{"class":108},[91,6553,795],{"class":101},[91,6555,6556],{"class":1172},"--capital-height",[91,6558,5634],{"class":101},[91,6560,5626],{"class":108},[91,6562,795],{"class":101},[91,6564,6565],{"class":1172},"--fm-capitalHeight",[91,6567,6568],{"class":101},"));\n",[91,6570,6571,6574,6576,6578,6580,6582,6584,6587,6589,6592,6595,6597],{"class":93,"line":378},[91,6572,6573],{"class":108},"  font-size",[91,6575,112],{"class":101},[91,6577,6415],{"class":108},[91,6579,795],{"class":101},[91,6581,5626],{"class":108},[91,6583,795],{"class":101},[91,6585,6586],{"class":1172},"--computedFontSize",[91,6588,1176],{"class":101},[91,6590,6591],{"class":566},"*",[91,6593,6594],{"class":108}," 1",[91,6596,567],{"class":566},[91,6598,1594],{"class":101},[91,6600,6601],{"class":93,"line":387},[91,6602,1450],{"emptyLinePlaceholder":846},[91,6604,6605],{"class":93,"line":402},[91,6606,6607],{"class":1343},"  \u002F* 수직 중앙 정렬을 위한 여백 계산 *\u002F\n",[91,6609,6610,6613,6615,6617,6619,6622],{"class":93,"line":422},[91,6611,6612],{"class":1172},"  --distanceBottom",[91,6614,112],{"class":101},[91,6616,5626],{"class":108},[91,6618,795],{"class":101},[91,6620,6621],{"class":1172},"--fm-descender",[91,6623,1594],{"class":101},[91,6625,6626,6629,6631,6633,6635,6638,6641,6643,6645,6647],{"class":93,"line":438},[91,6627,6628],{"class":1172},"  --distanceTop",[91,6630,6549],{"class":101},[91,6632,5626],{"class":108},[91,6634,795],{"class":101},[91,6636,6637],{"class":1172},"--fm-ascender",[91,6639,6640],{"class":101},") - ",[91,6642,5626],{"class":108},[91,6644,795],{"class":101},[91,6646,6565],{"class":1172},[91,6648,6568],{"class":101},[91,6650,6651,6654,6657,6659,6661,6664,6666,6668,6670,6673,6676,6678,6680,6682],{"class":93,"line":458},[91,6652,6653],{"class":1172},"  --valign",[91,6655,6656],{"class":101},": ((",[91,6658,5626],{"class":108},[91,6660,795],{"class":101},[91,6662,6663],{"class":1172},"--distanceBottom",[91,6665,6640],{"class":101},[91,6667,5626],{"class":108},[91,6669,795],{"class":101},[91,6671,6672],{"class":1172},"--distanceTop",[91,6674,6675],{"class":101},")) * ",[91,6677,5626],{"class":108},[91,6679,795],{"class":101},[91,6681,6586],{"class":1172},[91,6683,6568],{"class":101},[91,6685,6686],{"class":93,"line":467},[91,6687,137],{"class":101},[91,6689,6690],{"class":93,"line":481},[91,6691,1450],{"emptyLinePlaceholder":846},[91,6693,6694,6696],{"class":93,"line":490},[91,6695,91],{"class":159},[91,6697,102],{"class":101},[91,6699,6700,6703,6705,6707,6709,6711,6713,6716,6718,6720,6723,6725],{"class":93,"line":3310},[91,6701,6702],{"class":108},"  vertical-align",[91,6704,112],{"class":101},[91,6706,6415],{"class":108},[91,6708,795],{"class":101},[91,6710,5626],{"class":108},[91,6712,795],{"class":101},[91,6714,6715],{"class":1172},"--valign",[91,6717,1176],{"class":101},[91,6719,6591],{"class":566},[91,6721,6722],{"class":108}," -1",[91,6724,567],{"class":566},[91,6726,1594],{"class":101},[91,6728,6729],{"class":93,"line":3315},[91,6730,137],{"class":101},[16,6732,6733,6734,6737,6738,6740,6741,6743],{},"대문자의 순수한 높이를 정확히 100px로 맞추려면 ",[31,6735,6736],{},"font-size: 100px","을 지정하는 것이 아니라, 폰트 매트릭스의 ",[31,6739,6117],{}," 비율로 100px을 나눈 ",[31,6742,6072],{},"를 역산해야 한다.",[16,6745,6746,6748,6749,6751,6752,6754,6755,5321,6757,6759,6760,6762],{},[31,6747,6556],{}," 변수에 원하는 대문자 높이(100)를 입력하고 폰트 고유의 Capital Height 비율(",[31,6750,6565],{},")로 나누면 필요한 ",[31,6753,6072],{},"가 구해진다. 상하 여백의 차이(",[31,6756,6663],{},[31,6758,6672],{},")를 계산해 ",[31,6761,6068],{},"까지 수식으로 보정하면, 글자 상하 여백을 완벽하게 등분할 수 있다.",[16,6764,6765],{},[19,6766],{"alt":6767,"src":6768},"100px 글자 수치 계산","\u002Fblog\u002Fimg\u002Fdeep-dive-css-font-metrics-line-height-vertical-align\u002F72-260713-%EC%99%84%EB%A3%8C-%EC%9B%B9-%ED%83%80%EC%9D%B4%ED%8F%AC%EA%B7%B8%EB%9E%98%ED%94%BC-%ED%8F%B0%ED%8A%B8-%EB%A7%A4%ED%8A%B8%EB%A6%AD%EC%8A%A4%EC%99%80-line-height-vertical-align-8.png",[16,6770,6771],{},"다만 이 방식은 몇 가지 한계가 있다.",[24,6773,6774,6777],{},[27,6775,6776],{},"폰트 파일이 로드되지 않아 폴백 폰트로 바뀔 때 매트릭스 수치가 어긋나면서 계산된 레이아웃이 모두 틀어질 수 있음",[27,6778,6779],{},"브라우저나 운영체제 렌더링 엔진마다 미세하게 다를 수 있음.. 이건 어쩔 수 없는듯",[16,6781,6782],{},"추천하는 방법인 아니고, 글자 단독 수직 중앙 정렬은 flex, grid 의 중앙 정렬을 사용하는 게 편함!",[49,6784,6786],{"id":6785},"참고-자료","참고 자료",[24,6788,6789],{},[27,6790,6791],{},[4306,6792,6794],{"href":6057,"rel":6793},[4310],"Deep dive CSS: font metrics, line-height and vertical-align",[829,6796,6797],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":87,"searchDepth":105,"depth":105,"links":6799},[6800,6801,6804,6805,6806],{"id":6076,"depth":105,"text":6077},{"id":6158,"depth":105,"text":6159,"children":6802},[6803],{"id":6335,"depth":121,"text":6336},{"id":6068,"depth":105,"text":6068},{"id":6423,"depth":105,"text":6424},{"id":6785,"depth":105,"text":6786},"2026-07-21","font-size와 line-height가 실제로 그려지는 원리인 폰트 매트릭스(Ascender, Descender)를 이해하고, vertical-align의 동작 원리와 다국어 폰트(unicode-range) 적용 방법을 정리한다.","deep-dive-css-font-metrics-line-height-vertical-align",{},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align",{"title":6047,"description":6808},{"loc":6811},"blog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align",[86,6816,149],"typography","aH9OxE_AYWH3KoqM0s3gO-ZoHnrt4kZfa2bznaEXJ-g",{"id":6819,"title":6820,"body":6821,"created":7192,"description":7193,"extension":843,"filename":7194,"meta":7195,"navigation":846,"path":7196,"seo":7197,"sitemap":7198,"stem":7199,"subject":7200,"tags":7201,"updated":7192,"volume":853,"__hash__":7206},"blog\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity.md","Git 다중 계정 환경에서 SSH 인증과 커밋 작성자 관리하기",{"type":8,"value":6822,"toc":7185},[6823,6826,6830,6837,6854,6860,6871,6877,6883,6907,6910,6925,6928,6932,6935,6979,6989,6996,7013,7027,7031,7038,7041,7070,7076,7082,7097,7101,7107,7116,7126,7146,7149,7151,7157,7162,7167,7173,7178,7183],[16,6824,6825],{},"계정을 두개 섞어서 쓰면서 설정한 것들 정리.",[49,6827,6829],{"id":6828},"계정마다-ssh-키를-만들고-host-별칭을-분리하기","계정마다 SSH 키를 만들고 Host 별칭을 분리하기",[16,6831,6832,6833,6836],{},"각 GitHub 계정에는 서로 다른 SSH 공개키를 등록한다. 기존 키를 덮어쓰지 않도록 파일명을 명시해 ",[31,6834,6835],{},"ed25519"," 키를 만든다.",[82,6838,6842],{"className":6839,"code":6840,"language":6841,"meta":87,"style":87},"language-sh shiki shiki-themes github-light github-dark","ssh-keygen -t ed25519 -C \"personal@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_personal\nssh-keygen -t ed25519 -C \"work@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_work\n","sh",[31,6843,6844,6849],{"__ignoreMap":87},[91,6845,6846],{"class":93,"line":94},[91,6847,6848],{},"ssh-keygen -t ed25519 -C \"personal@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_personal\n",[91,6850,6851],{"class":93,"line":105},[91,6852,6853],{},"ssh-keygen -t ed25519 -C \"work@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_work\n",[16,6855,6856],{},[19,6857],{"alt":6858,"src":6859},"개인·회사 GitHub 계정의 SSH 키 설정 화면","\u002Fblog\u002Fimg\u002Fgit-multiple-accounts-ssh-commit-identity\u002Fmultiple-github-accounts-ssh-config.png",[16,6861,6862,6863,6866,6867,6870],{},"생성한 ",[31,6864,6865],{},".pub"," 파일의 내용을 각 계정의 GitHub SSH keys 화면에 등록한다. 이후 ",[31,6868,6869],{},"~\u002F.ssh\u002Fconfig","에서 GitHub 주소에 별칭을 주고, 별칭마다 사용할 키를 지정한다. 개인용이랑 회사용으로 나눴다.",[82,6872,6875],{"className":6873,"code":6874,"language":1099,"meta":87},[1097],"# 개인 계정\nHost github-personal\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_personal\n  IdentitiesOnly yes\n\n# 회사 계정\nHost github-work\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_work\n  IdentitiesOnly yes\n",[31,6876,6874],{"__ignoreMap":87},[16,6878,6879,6882],{},[31,6880,6881],{},"IdentitiesOnly yes","를 넣으면 SSH 에이전트에 여러 키가 등록돼 있어도 이 Host에 지정한 키만 사용한다. 저장소를 처음 복제하거나 기존 원격 주소를 바꿀 때는 실제 도메인 대신 별칭을 사용한다.",[82,6884,6886],{"className":6839,"code":6885,"language":6841,"meta":87,"style":87},"git clone git@github-personal:personal-account\u002Fsample-repository.git\n\ncd sample-repository\ngit remote set-url origin git@github-personal:personal-account\u002Fsample-repository.git\n",[31,6887,6888,6893,6897,6902],{"__ignoreMap":87},[91,6889,6890],{"class":93,"line":94},[91,6891,6892],{},"git clone git@github-personal:personal-account\u002Fsample-repository.git\n",[91,6894,6895],{"class":93,"line":105},[91,6896,1450],{"emptyLinePlaceholder":846},[91,6898,6899],{"class":93,"line":121},[91,6900,6901],{},"cd sample-repository\n",[91,6903,6904],{"class":93,"line":134},[91,6905,6906],{},"git remote set-url origin git@github-personal:personal-account\u002Fsample-repository.git\n",[16,6908,6909],{},"클론할 때 URL 앞에 별칭을 넣어주면 된다. 별칭별 인증 결과는 아래처럼 확인한다. 성공 메시지에 표시되는 사용자명이 기대한 계정인지 확인해야 한다.",[82,6911,6913],{"className":6839,"code":6912,"language":6841,"meta":87,"style":87},"ssh -T git@github-personal\nssh -T git@github-work\n",[31,6914,6915,6920],{"__ignoreMap":87},[91,6916,6917],{"class":93,"line":94},[91,6918,6919],{},"ssh -T git@github-personal\n",[91,6921,6922],{"class":93,"line":105},[91,6923,6924],{},"ssh -T git@github-work\n",[16,6926,6927],{},"GitHub SSH 테스트 명령은 성공하더라도 원격 셸을 제공하지 않기 때문에 종료 코드가 1일 수 있다. 메시지에 인증된 사용자명이 나타나는지를 기준으로 확인한다.",[49,6929,6931],{"id":6930},"원격-인증과-커밋-작성자는-별도로-고정하기","원격 인증과 커밋 작성자는 별도로 고정하기",[16,6933,6934],{},"SSH 키는 push 권한을 확인하지만, 커밋의 작성자 정보는 Git 설정에서 읽는다. 전역 설정은 기본값으로만 두고, 계정을 구분해야 하는 레포에서는 로컬 설정을 명시하는 것이 안전하다.",[82,6936,6938],{"className":6839,"code":6937,"language":6841,"meta":87,"style":87},"# 현재 레포에서 사용할 커밋 정보\ngit config user.name \"Personal Name\"\ngit config user.email \"personal@example.com\"\n\n# 적용된 작성자와 원격 주소를 함께 확인한다.\ngit config --get user.name\ngit config --get user.email\ngit remote get-url origin\n",[31,6939,6940,6945,6950,6955,6959,6964,6969,6974],{"__ignoreMap":87},[91,6941,6942],{"class":93,"line":94},[91,6943,6944],{},"# 현재 레포에서 사용할 커밋 정보\n",[91,6946,6947],{"class":93,"line":105},[91,6948,6949],{},"git config user.name \"Personal Name\"\n",[91,6951,6952],{"class":93,"line":121},[91,6953,6954],{},"git config user.email \"personal@example.com\"\n",[91,6956,6957],{"class":93,"line":134},[91,6958,1450],{"emptyLinePlaceholder":846},[91,6960,6961],{"class":93,"line":228},[91,6962,6963],{},"# 적용된 작성자와 원격 주소를 함께 확인한다.\n",[91,6965,6966],{"class":93,"line":250},[91,6967,6968],{},"git config --get user.name\n",[91,6970,6971],{"class":93,"line":260},[91,6972,6973],{},"git config --get user.email\n",[91,6975,6976],{"class":93,"line":274},[91,6977,6978],{},"git remote get-url origin\n",[16,6980,6981,6982,6985,6986,6988],{},"GitHub 계정에 연결된 이메일이나 GitHub가 제공하는 ",[31,6983,6984],{},"noreply"," 이메일을 사용해야 커밋이 해당 계정에 정상적으로 연결된다. 이메일 공개를 피해야 한다면 GitHub의 이메일 개인정보 보호 설정과 ",[31,6987,6984],{}," 주소를 먼저 확인한다.",[16,6990,6991,6992,6995],{},"새 저장소를 만들 때마다 설정을 반복하기 싫다면 디렉터리별 조건부 설정도 가능하다. 예를 들어 개인 프로젝트를 ",[31,6993,6994],{},"~\u002FProjects\u002Fpersonal\u002F"," 아래에 모아 둔 경우 전역 설정 파일에 다음을 추가한다.",[82,6997,7001],{"className":6998,"code":6999,"language":7000,"meta":87,"style":87},"language-ini shiki shiki-themes github-light github-dark","[includeIf \"gitdir:~\u002FProjects\u002Fpersonal\u002F\"]\n  path = ~\u002F.gitconfig-personal\n","ini",[31,7002,7003,7008],{"__ignoreMap":87},[91,7004,7005],{"class":93,"line":94},[91,7006,7007],{},"[includeIf \"gitdir:~\u002FProjects\u002Fpersonal\u002F\"]\n",[91,7009,7010],{"class":93,"line":105},[91,7011,7012],{},"  path = ~\u002F.gitconfig-personal\n",[16,7014,7015,7016,7019,7020,64,7023,7026],{},"그리고 ",[31,7017,7018],{},"~\u002F.gitconfig-personal","에는 개인 계정의 ",[31,7021,7022],{},"user.name",[31,7024,7025],{},"user.email","을 둔다. 단, 원격 URL의 SSH Host 별칭은 저장소마다 따로 확인해야 한다.",[49,7028,7030],{"id":7029},"android-termux에서도-같은-방식으로-인증하기","Android Termux에서도 같은 방식으로 인증하기",[16,7032,7033,7034,7037],{},"Android에서 Git 작업을 할 때도 원칙은 같다. ",[31,7035,7036],{},"Termux"," 로 터미널을 사용할 수 있다. 노트북 구매 전, 갤탭으로 접근할 때 이 방법을 사용했다! 그런데 결국 노트북을 사긴 함...",[16,7039,7040],{},"Git과 OpenSSH를 설치하고, 모바일 단말에서 별도의 키를 만들어 해당 GitHub 계정에 등록한다. PC의 개인키를 단말로 복사하지 않는 편이 노출 범위를 줄이는 데 유리하다.",[82,7042,7044],{"className":6839,"code":7043,"language":6841,"meta":87,"style":87},"pkg update\npkg install git openssh\n\nssh-keygen -t ed25519 -C \"mobile@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_mobile\ncat ~\u002F.ssh\u002Fid_ed25519_github_mobile.pub\n",[31,7045,7046,7051,7056,7060,7065],{"__ignoreMap":87},[91,7047,7048],{"class":93,"line":94},[91,7049,7050],{},"pkg update\n",[91,7052,7053],{"class":93,"line":105},[91,7054,7055],{},"pkg install git openssh\n",[91,7057,7058],{"class":93,"line":121},[91,7059,1450],{"emptyLinePlaceholder":846},[91,7061,7062],{"class":93,"line":134},[91,7063,7064],{},"ssh-keygen -t ed25519 -C \"mobile@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_mobile\n",[91,7066,7067],{"class":93,"line":228},[91,7068,7069],{},"cat ~\u002F.ssh\u002Fid_ed25519_github_mobile.pub\n",[16,7071,7072,7073,7075],{},"출력한 공개키를 GitHub에 등록한 뒤 ",[31,7074,6869],{},"를 만든다. PC와 달리 키 파일명만 모바일용으로 바꾸면 된다.",[82,7077,7080],{"className":7078,"code":7079,"language":1099,"meta":87},[1097],"Host github-mobile\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_mobile\n  IdentitiesOnly yes\n",[31,7081,7079],{"__ignoreMap":87},[16,7083,7084,7085,7088,7089,7092,7093,7096],{},"저장소는 ",[31,7086,7087],{},"git@github-mobile:account\u002Frepository.git"," 형태로 복제하고, ",[31,7090,7091],{},"ssh -T git@github-mobile","로 계정을 확인한다. 공유 저장소에서 파일을 다뤄야 할 때만 ",[31,7094,7095],{},"termux-setup-storage","를 실행해 Android 저장 공간 접근 권한을 부여한다. SSH 개인키와 Git 설정 파일은 기본 홈 디렉터리에 두고 공유 저장 공간에는 두지 않는 편이 좋다.",[49,7098,7100],{"id":7099},"이미-섞인-커밋-작성자-이력은-별도의-작업으로-정리하기","이미 섞인 커밋 작성자 이력은 별도의 작업으로 정리하기",[16,7102,7103,7106],{},[31,7104,7105],{},"git config","를 바꿔도 이후 커밋에만 적용된다. 과거 커밋의 작성자와 커밋터 정보를 고쳐야 한다면 커밋 해시가 전부 바뀌기 때문에 주의해야한다. 개인 레포이기 때문에 적용한 것이다. vercel 의 hobby 플랜을 사용중인데, 커밋 계정이 섞여 있다면 pro 플랜을 사용해야하기 때문에 해야했다.",[82,7108,7110],{"className":6839,"code":7109,"language":6841,"meta":87,"style":87},"git filter-repo --mailmap ..\u002Fauthor-mailmap\n",[31,7111,7112],{"__ignoreMap":87},[91,7113,7114],{"class":93,"line":94},[91,7115,7109],{},[16,7117,7118,7121,7122,7125],{},[31,7119,7120],{},"git-filter-repo","는 author뿐 아니라 committer와 tagger의 이름·이메일도 mailmap 기준으로 재작성할 수 있다. 실행 뒤에는 ",[31,7123,7124],{},"git log --all --format='%an \u003C%ae> | %cn \u003C%ce>' | sort -u","로 결과를 다시 검증하고, 원격 주소와 브랜치 보호 규칙을 확인한다.",[82,7127,7129],{"className":6839,"code":7128,"language":6841,"meta":87,"style":87},"git remote add origin git@github-personal:personal-account\u002Fsample-repository.git\ngit push --force --all origin\ngit push --force --tags origin\n",[31,7130,7131,7136,7141],{"__ignoreMap":87},[91,7132,7133],{"class":93,"line":94},[91,7134,7135],{},"git remote add origin git@github-personal:personal-account\u002Fsample-repository.git\n",[91,7137,7138],{"class":93,"line":105},[91,7139,7140],{},"git push --force --all origin\n",[91,7142,7143],{"class":93,"line":121},[91,7144,7145],{},"git push --force --tags origin\n",[16,7147,7148],{},"이 작업을 현업에서는 사용할 일이 없고, 사용하지 말아야 하니 주의!",[49,7150,6005],{"id":6004},[1112,7152],{"description":7153,"host":7154,"title":7155,"url":7156},"GitHub Docs의 SSH 다중 계정과 SSH config 설정 가이드","docs.github.com","Managing multiple accounts","https:\u002F\u002Fdocs.github.com\u002Fen\u002Faccount-and-profile\u002Fhow-tos\u002Faccount-management\u002Fmanaging-multiple-accounts",[1112,7158],{"description":7159,"host":7154,"title":7160,"url":7161},"저장소별 Git 커밋 이메일 설정과 GitHub 계정 연결 방법","Setting your commit email address","https:\u002F\u002Fdocs.github.com\u002Fen\u002Faccount-and-profile\u002Fhow-tos\u002Femail-preferences\u002Fsetting-your-commit-email-address",[1112,7163],{"description":7164,"host":7154,"title":7165,"url":7166},"GitHub SSH 인증 결과를 확인하는 방법","Testing your SSH connection","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fauthentication\u002Fconnecting-to-github-with-ssh\u002Ftesting-your-ssh-connection?platform=linux",[1112,7168],{"description":7169,"host":7170,"title":7171,"url":7172},"git filter-branch의 안전성 문제와 git-filter-repo 대안에 대한 Git 공식 문서","git-scm.com","git-filter-branch Documentation","https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-filter-branch",[1112,7174],{"description":7175,"host":1317,"title":7176,"url":7177},"mailmap을 이용해 작성자와 커밋터 정보를 재작성하는 git-filter-repo 예시","Converting from filter-branch","https:\u002F\u002Fgithub.com\u002Fnewren\u002Fgit-filter-repo\u002Fblob\u002Fmain\u002FDocumentation\u002Fconverting-from-filter-branch.md",[1112,7179],{"description":7180,"host":1317,"title":7181,"url":7182},"Android용 터미널 및 Linux 환경인 Termux 공식 저장소","Termux application","https:\u002F\u002Fgithub.com\u002Ftermux\u002Ftermux-app",[829,7184,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":7186},[7187,7188,7189,7190,7191],{"id":6828,"depth":105,"text":6829},{"id":6930,"depth":105,"text":6931},{"id":7029,"depth":105,"text":7030},{"id":7099,"depth":105,"text":7100},{"id":6004,"depth":105,"text":6005},"2026-01-18","한 PC와 Android Termux에서 여러 GitHub 계정을 안전하게 구분하는 SSH 설정, 저장소별 커밋 작성자 설정, 이미 섞인 과거 커밋 이력 정리 방법을 정리한다.","git-multiple-accounts-ssh-commit-identity",{},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity",{"title":6820,"description":7193},{"loc":7196},"blog\u002Fgit-multiple-accounts-ssh-commit-identity","Git",[7202,7203,7204,7205,1511],"git","github","ssh","termux","5Mpf94SBqmFo9eWLLTkVwVXTHS4Jx344s00AgKaXYxw",{"id":7208,"title":7209,"body":7210,"created":7400,"description":7401,"extension":843,"filename":7402,"meta":7403,"navigation":846,"path":7404,"seo":7405,"sitemap":7406,"stem":7407,"subject":7200,"tags":7408,"updated":7400,"volume":1863,"__hash__":7410},"blog\u002Fblog\u002Fgithub-env.md","Github Environments 환경변수 관리",{"type":8,"value":7211,"toc":7398},[7212,7215,7223,7228,7231,7239,7331,7338,7380,7387,7392,7395],[16,7213,7214],{},"Github Actions 에서는 환경변수를 관리할 수 있는 기능을 제공한다. Secrets 와 Variables 로 나뉜다.",[24,7216,7217,7220],{},[27,7218,7219],{},"Secrets : 민감 정보로, 한번 지정하고서는 암호화되며 워크 플로우에서 활용 시 마스킹 되어서 확인할 수 없다. API 키, 토큰, 비밀번호, 인증서 데이터 등에 활용할 수 있겠다.",[27,7221,7222],{},"Variables : 단순 변수로 공개돼도 괜찮은 값. 서버 주소, 사용자 이름, 포트 번호 등 덜 민감한 값.",[16,7224,7225],{},[19,7226],{"alt":87,"src":7227},"\u002Fblog\u002Fimg\u002Fgithub-env\u002Fgithub-environments.png",[16,7229,7230],{},"variables 나 secrets 의 경우 두가지 유형이 있다.",[24,7232,7233,7236],{},[27,7234,7235],{},"Environment : 특정 환경으로 묶어둔 변수들",[27,7237,7238],{},"Repository : 저장소 단위의 공통 변수들",[82,7240,7244],{"className":7241,"code":7242,"language":7243,"meta":87,"style":87},"language-yml shiki shiki-themes github-light github-dark","- name: Build Dev\n        env:\n            NODE_OPTIONS: \"--max_old_space_size=4096\"\n            VITE_SAMPLE_APP_ID: ${{ secrets.VITE_SAMPLE_APP_ID }}\n            VITE_SAMPLE_CLIENT_TOKEN: ${{ secrets.VITE_SAMPLE_CLIENT_TOKEN }}\n            VITE_SAMPLE_LOG_TOKEN: ${{ secrets.VITE_SAMPLE_LOG_TOKEN }}\n            VITE_SAMPLE_PUBLIC_KEY: ${{ secrets.VITE_SAMPLE_PUBLIC_KEY }}\n        run: |\n            yarn build:dev\n","yml",[31,7245,7246,7258,7266,7276,7286,7296,7306,7316,7326],{"__ignoreMap":87},[91,7247,7248,7251,7253,7255],{"class":93,"line":94},[91,7249,7250],{"class":101},"- ",[91,7252,1238],{"class":159},[91,7254,112],{"class":101},[91,7256,7257],{"class":169},"Build Dev\n",[91,7259,7260,7263],{"class":93,"line":105},[91,7261,7262],{"class":159},"        env",[91,7264,7265],{"class":101},":\n",[91,7267,7268,7271,7273],{"class":93,"line":121},[91,7269,7270],{"class":159},"            NODE_OPTIONS",[91,7272,112],{"class":101},[91,7274,7275],{"class":169},"\"--max_old_space_size=4096\"\n",[91,7277,7278,7281,7283],{"class":93,"line":134},[91,7279,7280],{"class":159},"            VITE_SAMPLE_APP_ID",[91,7282,112],{"class":101},[91,7284,7285],{"class":169},"${{ secrets.VITE_SAMPLE_APP_ID }}\n",[91,7287,7288,7291,7293],{"class":93,"line":228},[91,7289,7290],{"class":159},"            VITE_SAMPLE_CLIENT_TOKEN",[91,7292,112],{"class":101},[91,7294,7295],{"class":169},"${{ secrets.VITE_SAMPLE_CLIENT_TOKEN }}\n",[91,7297,7298,7301,7303],{"class":93,"line":250},[91,7299,7300],{"class":159},"            VITE_SAMPLE_LOG_TOKEN",[91,7302,112],{"class":101},[91,7304,7305],{"class":169},"${{ secrets.VITE_SAMPLE_LOG_TOKEN }}\n",[91,7307,7308,7311,7313],{"class":93,"line":260},[91,7309,7310],{"class":159},"            VITE_SAMPLE_PUBLIC_KEY",[91,7312,112],{"class":101},[91,7314,7315],{"class":169},"${{ secrets.VITE_SAMPLE_PUBLIC_KEY }}\n",[91,7317,7318,7321,7323],{"class":93,"line":274},[91,7319,7320],{"class":159},"        run",[91,7322,112],{"class":101},[91,7324,7325],{"class":566},"|\n",[91,7327,7328],{"class":93,"line":284},[91,7329,7330],{"class":169},"            yarn build:dev\n",[16,7332,7333,7334,7337],{},"secrets 는 actions 에서 ",[31,7335,7336],{},"secrets"," 객체를 접근하면 사용할 수 있다. repository secrets 는 조건 없이 사용 가능하다.",[82,7339,7341],{"className":7241,"code":7340,"language":7243,"meta":87,"style":87},"jobs:\n  build:\n    environment: dev # 이부분 \n    runs-on: ubuntu-latest\n",[31,7342,7343,7350,7357,7370],{"__ignoreMap":87},[91,7344,7345,7348],{"class":93,"line":94},[91,7346,7347],{"class":159},"jobs",[91,7349,7265],{"class":101},[91,7351,7352,7355],{"class":93,"line":105},[91,7353,7354],{"class":159},"  build",[91,7356,7265],{"class":101},[91,7358,7359,7362,7364,7367],{"class":93,"line":121},[91,7360,7361],{"class":159},"    environment",[91,7363,112],{"class":101},[91,7365,7366],{"class":169},"dev",[91,7368,7369],{"class":1343}," # 이부분 \n",[91,7371,7372,7375,7377],{"class":93,"line":134},[91,7373,7374],{"class":159},"    runs-on",[91,7376,112],{"class":101},[91,7378,7379],{"class":169},"ubuntu-latest\n",[16,7381,7382,7383,7386],{},"environment secrets 는 ",[31,7384,7385],{},"environment"," 에다가 사용할 환경을 지정해주면, 그 환경에 맞는 환경변수를 사용할 수 있다.",[16,7388,7389],{},[19,7390],{"alt":87,"src":7391},"\u002Fblog\u002Fimg\u002Fgithub-env\u002Fgithub-environments-protection-rule.png",[16,7393,7394],{},"특정 브랜치 혹은 보호 규칙을 지정해서 조건을 추가할 수 있고, 사용할 secrets 을 지정하면 된다. 환경 지정 시 그 환경에 등록된 변수를 사용한다.",[829,7396,7397],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":7399},[],"2025-06-13","Github Environment 에서 환경변수를 관리하고, 배포 시 환경을 지정해서 CICD를 수행한다.","github-env",{},"\u002Fblog\u002Fgithub-env",{"title":7209,"description":7401},{"loc":7404},"blog\u002Fgithub-env",[7409,7203],"github\u002Factions","TvAjFPhju4_JHVOfrPrRNx185Pbkx4wNaNGStJG9CTU",{"id":7412,"title":7413,"body":7414,"created":8606,"description":8607,"extension":843,"filename":8608,"meta":8609,"navigation":846,"path":8610,"seo":8611,"sitemap":8612,"stem":8613,"subject":8614,"tags":8615,"updated":8606,"volume":853,"__hash__":8619},"blog\u002Fblog\u002Fgoogle-apps-script-simple-server.md","Google Apps Script로 간단한 서버 기능 만들기",{"type":8,"value":7415,"toc":8598},[7416,7426,7430,7446,7460,7580,7587,7591,7598,7603,7606,7610,8089,8092,8098,8105,8389,8399,8414,8418,8425,8468,8475,8512,8520,8524,8530,8537,8540,8543,8554,8562,8572,8574,8580,8585,8590,8595],[16,7417,7418,7419,5321,7422,7425],{},"간단한 기능 때문에 별도 서버와 데이터베이스를 준비하는 것은 부담스럽고 Google Apps Script를 작은 서버처럼 사용할 수 있다. ",[31,7420,7421],{},"doGet()",[31,7423,7424],{},"doPost()","로 간단하게 HTTP 요청을 받고, 구글 시트에 데이터를 쌓는 것. 서버 인스턴스나 배포 파이프라인을 직접 관리하지 않아도 웹 앱 URL 하나를 API 엔드포인트로 사용할 수 있다.",[49,7427,7429],{"id":7428},"apps-script-웹-앱이-서버-역할을-하는-방식","Apps Script 웹 앱이 서버 역할을 하는 방식",[16,7431,7432,7433,2978,7436,7439,7440,7442,7443,7445],{},"Apps Script 프로젝트를 웹 앱으로 배포하려면 루트에 ",[31,7434,7435],{},"doGet(e)",[31,7437,7438],{},"doPost(e)"," 함수가 있어야 한다. 클라이언트가 배포 URL로 GET 요청을 보내면 ",[31,7441,7421],{},"이, POST 요청을 보내면 ",[31,7444,7424],{},"가 실행된다.",[16,7447,7448,7449,2978,7452,7455,7456,7459],{},"각 함수는 ",[31,7450,7451],{},"HtmlOutput",[31,7453,7454],{},"TextOutput","을 반환해야 한다. JSON API를 만들 때는 ",[31,7457,7458],{},"ContentService.createTextOutput()","으로 문자열을 만들고 MIME 타입을 JSON으로 지정하면 된다.",[82,7461,7465],{"className":7462,"code":7463,"language":7464,"meta":87,"style":87},"language-js shiki shiki-themes github-light github-dark","function jsonResponse(body) {\n  return ContentService\n    .createTextOutput(JSON.stringify(body))\n    .setMimeType(ContentService.MimeType.JSON);\n}\n\nfunction doGet() {\n  return jsonResponse({\n    ok: true,\n    service: 'feedback-api',\n  });\n}\n","js",[31,7466,7467,7482,7489,7510,7524,7528,7532,7541,7550,7561,7571,7576],{"__ignoreMap":87},[91,7468,7469,7472,7475,7477,7480],{"class":93,"line":94},[91,7470,7471],{"class":566},"function",[91,7473,7474],{"class":97}," jsonResponse",[91,7476,795],{"class":101},[91,7478,7479],{"class":1172},"body",[91,7481,3866],{"class":101},[91,7483,7484,7486],{"class":93,"line":105},[91,7485,2695],{"class":566},[91,7487,7488],{"class":101}," ContentService\n",[91,7490,7491,7494,7497,7499,7502,7504,7507],{"class":93,"line":121},[91,7492,7493],{"class":101},"    .",[91,7495,7496],{"class":97},"createTextOutput",[91,7498,795],{"class":101},[91,7500,7501],{"class":108},"JSON",[91,7503,1235],{"class":101},[91,7505,7506],{"class":97},"stringify",[91,7508,7509],{"class":101},"(body))\n",[91,7511,7512,7514,7517,7520,7522],{"class":93,"line":134},[91,7513,7493],{"class":101},[91,7515,7516],{"class":97},"setMimeType",[91,7518,7519],{"class":101},"(ContentService.MimeType.",[91,7521,7501],{"class":108},[91,7523,1594],{"class":101},[91,7525,7526],{"class":93,"line":228},[91,7527,137],{"class":101},[91,7529,7530],{"class":93,"line":250},[91,7531,1450],{"emptyLinePlaceholder":846},[91,7533,7534,7536,7539],{"class":93,"line":260},[91,7535,7471],{"class":566},[91,7537,7538],{"class":97}," doGet",[91,7540,2007],{"class":101},[91,7542,7543,7545,7547],{"class":93,"line":274},[91,7544,2695],{"class":566},[91,7546,7474],{"class":97},[91,7548,7549],{"class":101},"({\n",[91,7551,7552,7555,7558],{"class":93,"line":284},[91,7553,7554],{"class":101},"    ok: ",[91,7556,7557],{"class":108},"true",[91,7559,7560],{"class":101},",\n",[91,7562,7563,7566,7569],{"class":93,"line":299},[91,7564,7565],{"class":101},"    service: ",[91,7567,7568],{"class":169},"'feedback-api'",[91,7570,7560],{"class":101},[91,7572,7573],{"class":93,"line":319},[91,7574,7575],{"class":101},"  });\n",[91,7577,7578],{"class":93,"line":334},[91,7579,137],{"class":101},[16,7581,7582,7583,7586],{},"이 코드만 배포해도 URL을 열어 서비스 상태를 확인하는 간단한 GET 엔드포인트가 된다. Express의 라우터처럼 경로별 기능이 자동으로 분리되지는 않으므로 기능이 늘어나면 ",[31,7584,7585],{},"e.parameter.action"," 같은 요청 값을 기준으로 직접 분기해야 한다.",[49,7588,7590],{"id":7589},"google-sheets에서-apps-script-프로젝트-열기","Google Sheets에서 Apps Script 프로젝트 열기",[16,7592,7593,7594,7597],{},"시트를 데이터 저장소로 사용할 때는 Google Sheets의 ",[31,7595,7596],{},"확장 프로그램 > Apps Script"," 메뉴에서 시트에 연결된 프로젝트를 만들 수 있다.",[16,7599,7600],{},[19,7601],{"alt":7590,"src":7602},"\u002Fblog\u002Fimg\u002Fgoogle-apps-script-simple-server\u002Fapps-script-menu.png",[16,7604,7605],{},"독립 실행형 Apps Script 프로젝트도 같은 기능을 구현할 수 있다. 시트에 연결된 프로젝트는 대상 문서와 코드를 함께 찾기 쉽고, 독립 실행형 프로젝트는 여러 문서나 서비스를 다루는 기능을 분리하기 좋다.",[49,7607,7609],{"id":7608},"post-요청을-받아-한-행으로-저장하기","POST 요청을 받아 한 행으로 저장하기",[82,7611,7613],{"className":7462,"code":7612,"language":7464,"meta":87,"style":87},"const SHEET_ID = 'YOUR_SPREADSHEET_ID';\nconst SHEET_NAME = 'responses';\n\nfunction doPost(e) {\n  try {\n    const data = parseRequestBody(e);\n    const feedback = validateFeedback(data);\n\n    appendFeedback(feedback);\n\n    return jsonResponse({\n      ok: true,\n      message: 'saved',\n    });\n  } catch (error) {\n    console.error(error);\n\n    return jsonResponse({\n      ok: false,\n      message: error.message,\n    });\n  }\n}\n\nfunction parseRequestBody(e) {\n  if (!e || !e.postData || !e.postData.contents) {\n    throw new Error('request body is required');\n  }\n\n  return JSON.parse(e.postData.contents);\n}\n\nfunction validateFeedback(data) {\n  const rating = Number(data.rating);\n\n  if (!Number.isInteger(rating) || rating \u003C 1 || rating > 5) {\n    throw new Error('rating must be an integer from 1 to 5');\n  }\n\n  return {\n    name: String(data.name || '').trim().slice(0, 50),\n    rating,\n    description: String(data.description || '').trim().slice(0, 500),\n  };\n}\n",[31,7614,7615,7629,7643,7647,7661,7667,7682,7697,7701,7709,7713,7722,7731,7741,7746,7754,7762,7766,7774,7783,7788,7792,7796,7800,7804,7816,7843,7858,7862,7866,7880,7885,7890,7904,7920,7925,7965,7981,7986,7991,7998,8038,8044,8078,8084],{"__ignoreMap":87},[91,7616,7617,7619,7622,7624,7627],{"class":93,"line":94},[91,7618,1968],{"class":566},[91,7620,7621],{"class":108}," SHEET_ID",[91,7623,1366],{"class":566},[91,7625,7626],{"class":169}," 'YOUR_SPREADSHEET_ID'",[91,7628,118],{"class":101},[91,7630,7631,7633,7636,7638,7641],{"class":93,"line":105},[91,7632,1968],{"class":566},[91,7634,7635],{"class":108}," SHEET_NAME",[91,7637,1366],{"class":566},[91,7639,7640],{"class":169}," 'responses'",[91,7642,118],{"class":101},[91,7644,7645],{"class":93,"line":121},[91,7646,1450],{"emptyLinePlaceholder":846},[91,7648,7649,7651,7654,7656,7659],{"class":93,"line":134},[91,7650,7471],{"class":566},[91,7652,7653],{"class":97}," doPost",[91,7655,795],{"class":101},[91,7657,7658],{"class":1172},"e",[91,7660,3866],{"class":101},[91,7662,7663,7665],{"class":93,"line":228},[91,7664,2012],{"class":566},[91,7666,102],{"class":101},[91,7668,7669,7671,7674,7676,7679],{"class":93,"line":250},[91,7670,1382],{"class":566},[91,7672,7673],{"class":108}," data",[91,7675,1366],{"class":566},[91,7677,7678],{"class":97}," parseRequestBody",[91,7680,7681],{"class":101},"(e);\n",[91,7683,7684,7686,7689,7691,7694],{"class":93,"line":260},[91,7685,1382],{"class":566},[91,7687,7688],{"class":108}," feedback",[91,7690,1366],{"class":566},[91,7692,7693],{"class":97}," validateFeedback",[91,7695,7696],{"class":101},"(data);\n",[91,7698,7699],{"class":93,"line":274},[91,7700,1450],{"emptyLinePlaceholder":846},[91,7702,7703,7706],{"class":93,"line":284},[91,7704,7705],{"class":97},"    appendFeedback",[91,7707,7708],{"class":101},"(feedback);\n",[91,7710,7711],{"class":93,"line":299},[91,7712,1450],{"emptyLinePlaceholder":846},[91,7714,7715,7718,7720],{"class":93,"line":319},[91,7716,7717],{"class":566},"    return",[91,7719,7474],{"class":97},[91,7721,7549],{"class":101},[91,7723,7724,7727,7729],{"class":93,"line":334},[91,7725,7726],{"class":101},"      ok: ",[91,7728,7557],{"class":108},[91,7730,7560],{"class":101},[91,7732,7733,7736,7739],{"class":93,"line":355},[91,7734,7735],{"class":101},"      message: ",[91,7737,7738],{"class":169},"'saved'",[91,7740,7560],{"class":101},[91,7742,7743],{"class":93,"line":364},[91,7744,7745],{"class":101},"    });\n",[91,7747,7748,7750,7752],{"class":93,"line":378},[91,7749,2053],{"class":101},[91,7751,1256],{"class":566},[91,7753,2058],{"class":101},[91,7755,7756,7758,7760],{"class":93,"line":387},[91,7757,2454],{"class":101},[91,7759,1261],{"class":97},[91,7761,2068],{"class":101},[91,7763,7764],{"class":93,"line":402},[91,7765,1450],{"emptyLinePlaceholder":846},[91,7767,7768,7770,7772],{"class":93,"line":422},[91,7769,7717],{"class":566},[91,7771,7474],{"class":97},[91,7773,7549],{"class":101},[91,7775,7776,7778,7781],{"class":93,"line":438},[91,7777,7726],{"class":101},[91,7779,7780],{"class":108},"false",[91,7782,7560],{"class":101},[91,7784,7785],{"class":93,"line":458},[91,7786,7787],{"class":101},"      message: error.message,\n",[91,7789,7790],{"class":93,"line":467},[91,7791,7745],{"class":101},[91,7793,7794],{"class":93,"line":481},[91,7795,1698],{"class":101},[91,7797,7798],{"class":93,"line":490},[91,7799,137],{"class":101},[91,7801,7802],{"class":93,"line":3310},[91,7803,1450],{"emptyLinePlaceholder":846},[91,7805,7806,7808,7810,7812,7814],{"class":93,"line":3315},[91,7807,7471],{"class":566},[91,7809,7678],{"class":97},[91,7811,795],{"class":101},[91,7813,7658],{"class":1172},[91,7815,3866],{"class":101},[91,7817,7818,7820,7822,7824,7827,7830,7833,7836,7838,7840],{"class":93,"line":3321},[91,7819,2439],{"class":566},[91,7821,2662],{"class":101},[91,7823,2665],{"class":566},[91,7825,7826],{"class":101},"e ",[91,7828,7829],{"class":566},"||",[91,7831,7832],{"class":566}," !",[91,7834,7835],{"class":101},"e.postData ",[91,7837,7829],{"class":566},[91,7839,7832],{"class":566},[91,7841,7842],{"class":101},"e.postData.contents) {\n",[91,7844,7845,7847,7849,7851,7853,7856],{"class":93,"line":3327},[91,7846,2673],{"class":566},[91,7848,2676],{"class":566},[91,7850,2679],{"class":97},[91,7852,795],{"class":101},[91,7854,7855],{"class":169},"'request body is required'",[91,7857,1594],{"class":101},[91,7859,7860],{"class":93,"line":3333},[91,7861,1698],{"class":101},[91,7863,7864],{"class":93,"line":3338},[91,7865,1450],{"emptyLinePlaceholder":846},[91,7867,7868,7870,7873,7875,7877],{"class":93,"line":3343},[91,7869,2695],{"class":566},[91,7871,7872],{"class":108}," JSON",[91,7874,1235],{"class":101},[91,7876,1189],{"class":97},[91,7878,7879],{"class":101},"(e.postData.contents);\n",[91,7881,7883],{"class":93,"line":7882},31,[91,7884,137],{"class":101},[91,7886,7888],{"class":93,"line":7887},32,[91,7889,1450],{"emptyLinePlaceholder":846},[91,7891,7893,7895,7897,7899,7902],{"class":93,"line":7892},33,[91,7894,7471],{"class":566},[91,7896,7693],{"class":97},[91,7898,795],{"class":101},[91,7900,7901],{"class":1172},"data",[91,7903,3866],{"class":101},[91,7905,7907,7909,7912,7914,7917],{"class":93,"line":7906},34,[91,7908,2641],{"class":566},[91,7910,7911],{"class":108}," rating",[91,7913,1366],{"class":566},[91,7915,7916],{"class":97}," Number",[91,7918,7919],{"class":101},"(data.rating);\n",[91,7921,7923],{"class":93,"line":7922},35,[91,7924,1450],{"emptyLinePlaceholder":846},[91,7926,7928,7930,7932,7934,7937,7940,7943,7945,7948,7950,7952,7955,7957,7960,7963],{"class":93,"line":7927},36,[91,7929,2439],{"class":566},[91,7931,2662],{"class":101},[91,7933,2665],{"class":566},[91,7935,7936],{"class":101},"Number.",[91,7938,7939],{"class":97},"isInteger",[91,7941,7942],{"class":101},"(rating) ",[91,7944,7829],{"class":566},[91,7946,7947],{"class":101}," rating ",[91,7949,156],{"class":566},[91,7951,6594],{"class":108},[91,7953,7954],{"class":566}," ||",[91,7956,7947],{"class":101},[91,7958,7959],{"class":566},">",[91,7961,7962],{"class":108}," 5",[91,7964,3866],{"class":101},[91,7966,7968,7970,7972,7974,7976,7979],{"class":93,"line":7967},37,[91,7969,2673],{"class":566},[91,7971,2676],{"class":566},[91,7973,2679],{"class":97},[91,7975,795],{"class":101},[91,7977,7978],{"class":169},"'rating must be an integer from 1 to 5'",[91,7980,1594],{"class":101},[91,7982,7984],{"class":93,"line":7983},38,[91,7985,1698],{"class":101},[91,7987,7989],{"class":93,"line":7988},39,[91,7990,1450],{"emptyLinePlaceholder":846},[91,7992,7994,7996],{"class":93,"line":7993},40,[91,7995,2695],{"class":566},[91,7997,102],{"class":101},[91,7999,8001,8004,8007,8010,8012,8015,8018,8021,8024,8027,8029,8031,8033,8035],{"class":93,"line":8000},41,[91,8002,8003],{"class":101},"    name: ",[91,8005,8006],{"class":97},"String",[91,8008,8009],{"class":101},"(data.name ",[91,8011,7829],{"class":566},[91,8013,8014],{"class":169}," ''",[91,8016,8017],{"class":101},").",[91,8019,8020],{"class":97},"trim",[91,8022,8023],{"class":101},"().",[91,8025,8026],{"class":97},"slice",[91,8028,795],{"class":101},[91,8030,1578],{"class":108},[91,8032,64],{"class":101},[91,8034,5637],{"class":108},[91,8036,8037],{"class":101},"),\n",[91,8039,8041],{"class":93,"line":8040},42,[91,8042,8043],{"class":101},"    rating,\n",[91,8045,8047,8050,8052,8055,8057,8059,8061,8063,8065,8067,8069,8071,8073,8076],{"class":93,"line":8046},43,[91,8048,8049],{"class":101},"    description: ",[91,8051,8006],{"class":97},[91,8053,8054],{"class":101},"(data.description ",[91,8056,7829],{"class":566},[91,8058,8014],{"class":169},[91,8060,8017],{"class":101},[91,8062,8020],{"class":97},[91,8064,8023],{"class":101},[91,8066,8026],{"class":97},[91,8068,795],{"class":101},[91,8070,1578],{"class":108},[91,8072,64],{"class":101},[91,8074,8075],{"class":108},"500",[91,8077,8037],{"class":101},[91,8079,8081],{"class":93,"line":8080},44,[91,8082,8083],{"class":101},"  };\n",[91,8085,8087],{"class":93,"line":8086},45,[91,8088,137],{"class":101},[16,8090,8091],{},"doPost, doGet 같은 함수는 루트 레벨에 작성해야 인식할 수 있다.",[16,8093,8094,8097],{},[31,8095,8096],{},"e.postData.contents","에는 POST body 문자열이 들어온다. JSON 파싱에서 끝내지 않고 필수 값, 숫자 범위, 문자열 길이를 검증해야 잘못된 행이 시트에 계속 쌓이는 것을 막을 수 있다.",[16,8099,8100,8101,8104],{},"검증이 끝난 데이터는 ",[31,8102,8103],{},"SpreadsheetApp","으로 저장한다.",[82,8106,8108],{"className":7462,"code":8107,"language":7464,"meta":87,"style":87},"function appendFeedback(feedback) {\n  const lock = LockService.getScriptLock();\n  lock.waitLock(5000);\n\n  try {\n    const spreadsheet = SpreadsheetApp.openById(SHEET_ID);\n    const sheet = spreadsheet.getSheetByName(SHEET_NAME);\n\n    if (!sheet) {\n      throw new Error(`sheet not found: ${SHEET_NAME}`);\n    }\n\n    sheet.appendRow([\n      new Date(),\n      escapeFormula(feedback.name),\n      feedback.rating,\n      escapeFormula(feedback.description),\n    ]);\n  } finally {\n    lock.releaseLock();\n  }\n}\n\nfunction escapeFormula(value) {\n  return \u002F^[=+\\-@]\u002F.test(value) ? `'${value}` : value;\n}\n",[31,8109,8110,8124,8141,8156,8160,8166,8188,8210,8214,8226,8246,8250,8254,8265,8276,8284,8289,8296,8301,8310,8320,8324,8328,8332,8346,8385],{"__ignoreMap":87},[91,8111,8112,8114,8117,8119,8122],{"class":93,"line":94},[91,8113,7471],{"class":566},[91,8115,8116],{"class":97}," appendFeedback",[91,8118,795],{"class":101},[91,8120,8121],{"class":1172},"feedback",[91,8123,3866],{"class":101},[91,8125,8126,8128,8131,8133,8136,8139],{"class":93,"line":105},[91,8127,2641],{"class":566},[91,8129,8130],{"class":108}," lock",[91,8132,1366],{"class":566},[91,8134,8135],{"class":101}," LockService.",[91,8137,8138],{"class":97},"getScriptLock",[91,8140,2030],{"class":101},[91,8142,8143,8146,8149,8151,8154],{"class":93,"line":121},[91,8144,8145],{"class":101},"  lock.",[91,8147,8148],{"class":97},"waitLock",[91,8150,795],{"class":101},[91,8152,8153],{"class":108},"5000",[91,8155,1594],{"class":101},[91,8157,8158],{"class":93,"line":134},[91,8159,1450],{"emptyLinePlaceholder":846},[91,8161,8162,8164],{"class":93,"line":228},[91,8163,2012],{"class":566},[91,8165,102],{"class":101},[91,8167,8168,8170,8173,8175,8178,8181,8183,8186],{"class":93,"line":250},[91,8169,1382],{"class":566},[91,8171,8172],{"class":108}," spreadsheet",[91,8174,1366],{"class":566},[91,8176,8177],{"class":101}," SpreadsheetApp.",[91,8179,8180],{"class":97},"openById",[91,8182,795],{"class":101},[91,8184,8185],{"class":108},"SHEET_ID",[91,8187,1594],{"class":101},[91,8189,8190,8192,8195,8197,8200,8203,8205,8208],{"class":93,"line":260},[91,8191,1382],{"class":566},[91,8193,8194],{"class":108}," sheet",[91,8196,1366],{"class":566},[91,8198,8199],{"class":101}," spreadsheet.",[91,8201,8202],{"class":97},"getSheetByName",[91,8204,795],{"class":101},[91,8206,8207],{"class":108},"SHEET_NAME",[91,8209,1594],{"class":101},[91,8211,8212],{"class":93,"line":274},[91,8213,1450],{"emptyLinePlaceholder":846},[91,8215,8216,8219,8221,8223],{"class":93,"line":284},[91,8217,8218],{"class":566},"    if",[91,8220,2662],{"class":101},[91,8222,2665],{"class":566},[91,8224,8225],{"class":101},"sheet) {\n",[91,8227,8228,8231,8233,8235,8237,8240,8242,8244],{"class":93,"line":299},[91,8229,8230],{"class":566},"      throw",[91,8232,2676],{"class":566},[91,8234,2679],{"class":97},[91,8236,795],{"class":101},[91,8238,8239],{"class":169},"`sheet not found: ${",[91,8241,8207],{"class":108},[91,8243,1241],{"class":169},[91,8245,1594],{"class":101},[91,8247,8248],{"class":93,"line":319},[91,8249,1693],{"class":101},[91,8251,8252],{"class":93,"line":334},[91,8253,1450],{"emptyLinePlaceholder":846},[91,8255,8256,8259,8262],{"class":93,"line":355},[91,8257,8258],{"class":101},"    sheet.",[91,8260,8261],{"class":97},"appendRow",[91,8263,8264],{"class":101},"([\n",[91,8266,8267,8270,8273],{"class":93,"line":364},[91,8268,8269],{"class":566},"      new",[91,8271,8272],{"class":97}," Date",[91,8274,8275],{"class":101},"(),\n",[91,8277,8278,8281],{"class":93,"line":378},[91,8279,8280],{"class":97},"      escapeFormula",[91,8282,8283],{"class":101},"(feedback.name),\n",[91,8285,8286],{"class":93,"line":387},[91,8287,8288],{"class":101},"      feedback.rating,\n",[91,8290,8291,8293],{"class":93,"line":402},[91,8292,8280],{"class":97},[91,8294,8295],{"class":101},"(feedback.description),\n",[91,8297,8298],{"class":93,"line":422},[91,8299,8300],{"class":101},"    ]);\n",[91,8302,8303,8305,8308],{"class":93,"line":438},[91,8304,2053],{"class":101},[91,8306,8307],{"class":566},"finally",[91,8309,102],{"class":101},[91,8311,8312,8315,8318],{"class":93,"line":458},[91,8313,8314],{"class":101},"    lock.",[91,8316,8317],{"class":97},"releaseLock",[91,8319,2030],{"class":101},[91,8321,8322],{"class":93,"line":467},[91,8323,1698],{"class":101},[91,8325,8326],{"class":93,"line":481},[91,8327,137],{"class":101},[91,8329,8330],{"class":93,"line":490},[91,8331,1450],{"emptyLinePlaceholder":846},[91,8333,8334,8336,8339,8341,8344],{"class":93,"line":3310},[91,8335,7471],{"class":566},[91,8337,8338],{"class":97}," escapeFormula",[91,8340,795],{"class":101},[91,8342,8343],{"class":1172},"value",[91,8345,3866],{"class":101},[91,8347,8348,8350,8353,8356,8359,8362,8364,8367,8370,8373,8376,8378,8380,8382],{"class":93,"line":3315},[91,8349,2695],{"class":566},[91,8351,8352],{"class":169}," \u002F",[91,8354,8355],{"class":566},"^",[91,8357,8358],{"class":108},"[=+\\-@]",[91,8360,8361],{"class":169},"\u002F",[91,8363,1235],{"class":101},[91,8365,8366],{"class":97},"test",[91,8368,8369],{"class":101},"(value) ",[91,8371,8372],{"class":566},"?",[91,8374,8375],{"class":169}," `'${",[91,8377,8343],{"class":101},[91,8379,1241],{"class":169},[91,8381,2131],{"class":566},[91,8383,8384],{"class":101}," value;\n",[91,8386,8387],{"class":93,"line":3321},[91,8388,137],{"class":101},[16,8390,8391,8392,8395,8396,8398],{},"여러 요청이 같은 시트를 동시에 수정할 수 있어 ",[31,8393,8394],{},"LockService","의 스크립트 잠금을 사용한다. lock은 ",[31,8397,8307],{},"에서 반드시 해제한다.",[16,8400,8401,8402,64,8404,64,8407,64,8410,8413],{},"문자열이 ",[31,8403,166],{},[31,8405,8406],{},"+",[31,8408,8409],{},"-",[31,8411,8412],{},"@","로 시작하면 시트에서 수식으로 해석될 수 있다. 외부 입력을 그대로 저장하지 않고 앞에 작은따옴표를 붙여 일반 문자열로 처리한다.",[49,8415,8417],{"id":8416},"요청을-보내-동작-확인하기","요청을 보내 동작 확인하기",[16,8419,8420,8421,8424],{},"웹 앱을 배포한 뒤에는 생성된 ",[31,8422,8423],{},"\u002Fexec"," URL로 POST 요청을 보낼 수 있다. 아래 URL은 실제 배포 URL로 교체한다.",[82,8426,8430],{"className":8427,"code":8428,"language":8429,"meta":87,"style":87},"language-bash shiki shiki-themes github-light github-dark","curl -L \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"name\":\"sample\",\"rating\":5,\"description\":\"easy to use\"}' \\\n  'https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002FDEPLOYMENT_ID\u002Fexec'\n","bash",[31,8431,8432,8443,8453,8463],{"__ignoreMap":87},[91,8433,8434,8437,8440],{"class":93,"line":94},[91,8435,8436],{"class":97},"curl",[91,8438,8439],{"class":108}," -L",[91,8441,8442],{"class":108}," \\\n",[91,8444,8445,8448,8451],{"class":93,"line":105},[91,8446,8447],{"class":108},"  -H",[91,8449,8450],{"class":169}," 'Content-Type: application\u002Fjson'",[91,8452,8442],{"class":108},[91,8454,8455,8458,8461],{"class":93,"line":121},[91,8456,8457],{"class":108},"  -d",[91,8459,8460],{"class":169}," '{\"name\":\"sample\",\"rating\":5,\"description\":\"easy to use\"}'",[91,8462,8442],{"class":108},[91,8464,8465],{"class":93,"line":134},[91,8466,8467],{"class":169},"  'https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002FDEPLOYMENT_ID\u002Fexec'\n",[16,8469,8470,8471,8474],{},"정상적으로 처리되면 다음 JSON이 반환되고 ",[31,8472,8473],{},"responses"," 시트에 새 행이 추가된다.",[82,8476,8480],{"className":8477,"code":8478,"language":8479,"meta":87,"style":87},"language-json shiki shiki-themes github-light github-dark","{\n  \"ok\": true,\n  \"message\": \"saved\"\n}\n","json",[31,8481,8482,8487,8498,8508],{"__ignoreMap":87},[91,8483,8484],{"class":93,"line":94},[91,8485,8486],{"class":101},"{\n",[91,8488,8489,8492,8494,8496],{"class":93,"line":105},[91,8490,8491],{"class":108},"  \"ok\"",[91,8493,112],{"class":101},[91,8495,7557],{"class":108},[91,8497,7560],{"class":101},[91,8499,8500,8503,8505],{"class":93,"line":121},[91,8501,8502],{"class":108},"  \"message\"",[91,8504,112],{"class":101},[91,8506,8507],{"class":169},"\"saved\"\n",[91,8509,8510],{"class":93,"line":134},[91,8511,137],{"class":101},[16,8513,8514,4115,8516,8519],{},[31,8515,8436],{},[31,8517,8518],{},"-L","을 넣은 이유는 Content Service 응답이 일회성 URL로 리디렉션될 수 있기 때문이다. HTTP 클라이언트가 리디렉션을 자동으로 따라가지 않는다면 응답 본문 대신 302 응답만 볼 수 있다.",[49,8521,8523],{"id":8522},"웹-앱으로-배포","웹 앱으로 배포",[16,8525,8526],{},[19,8527],{"alt":8528,"src":8529},"Apps Script 웹 앱 배포 설정 화면","\u002Fblog\u002Fimg\u002Fgoogle-apps-script-simple-server\u002Fweb-app-deployment-settings.png",[16,8531,8532,8533,8536],{},"Apps Script 편집기에서 ",[31,8534,8535],{},"배포 > 새 배포 > 웹 앱","을 선택하면 실행 사용자와 접근 사용자를 정할 수 있다.",[16,8538,8539],{},"웹 앱을 배포자 권한으로 실행하면 요청한 사람이 누구든 배포자가 허용한 Google Sheets에 접근한다. 클라이언트마다 Google OAuth를 구현하지 않아도 되는 대신, 공개 URL을 얻은 사람이 배포자 권한으로 준비된 기능을 호출할 수 있다는 뜻이다.",[16,8541,8542],{},"접근 권한은 데이터 성격에 맞춰 최소 범위로 설정해야 한다.",[24,8544,8545,8548,8551],{},[27,8546,8547],{},"개인 도구라면 배포자만 접근하도록 제한한다.",[27,8549,8550],{},"조직 내부 도구라면 같은 Google Workspace 도메인으로 제한한다.",[27,8552,8553],{},"익명 접근이 필요하다면 저장 가능한 데이터와 작업을 강하게 제한하고 남용 가능성을 전제로 한다.",[1722,8555,8556],{},[16,8557,8558,8561],{},[91,8559,8560],{},"!warning","\n웹 앱 URL은 인증 정보가 아니다. 프론트엔드 코드에 공유 비밀을 넣는 방식도 사용자가 값을 확인할 수 있으므로 인증이 되지 않는다. 민감한 데이터, 결제, 개인정보, 관리자 기능처럼 강한 인증과 세밀한 권한이 필요한 API라면 전용 백엔드를 쓸것.",[16,8563,8564,8565,8567,8568,8571],{},"코드를 수정한 뒤에는 기존 배포를 새 버전으로 업데이트해야 ",[31,8566,8423],{}," URL에 변경 사항이 반영된다. 편집 권한이 있는 사용자만 접근 가능한 ",[31,8569,8570],{},"\u002Fdev"," URL은 최신 저장 코드를 테스트하는 용도이며 운영 URL로 사용하면 안 된다.",[49,8573,6005],{"id":6004},[1112,8575],{"description":8576,"host":8577,"title":8578,"url":8579},"doGet과 doPost의 요청 처리, 웹 앱 배포와 실행 권한을 설명하는 공식 문서","developers.google.com","Web Apps | Apps Script","https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Fguides\u002Fweb",[1112,8581],{"description":8582,"host":8577,"title":8583,"url":8584},"Apps Script 웹 앱에서 TextOutput으로 JSON과 텍스트를 반환하는 공식 API 문서","Content Service | Apps Script","https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Freference\u002Fcontent\u002Fcontent-service",[1112,8586],{"description":8587,"host":8577,"title":8588,"url":8589},"공유 자원을 동시에 수정할 때 실행 충돌을 막는 LockService 공식 문서","Lock Service | Apps Script","https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Freference\u002Flock",[1112,8591],{"description":8592,"host":8577,"title":8593,"url":8594},"Apps Script 실행 시간과 Google 서비스별 할당량을 정리한 공식 문서","Quotas for Google Services | Apps Script","https:\u002F\u002Fdevelopers.google.com\u002Fapps-script\u002Fguides\u002Fservices\u002Fquotas",[829,8596,8597],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":87,"searchDepth":105,"depth":105,"links":8599},[8600,8601,8602,8603,8604,8605],{"id":7428,"depth":105,"text":7429},{"id":7589,"depth":105,"text":7590},{"id":7608,"depth":105,"text":7609},{"id":8416,"depth":105,"text":8417},{"id":8522,"depth":105,"text":8523},{"id":6004,"depth":105,"text":6005},"2025-12-08","별도 서버를 구축하지 않고 Apps Script의 doGet과 doPost로 HTTP 요청을 받아 Google Sheets에 저장하고 JSON으로 응답하는 작은 웹 API를 만든다.","google-apps-script-simple-server",{},"\u002Fblog\u002Fgoogle-apps-script-simple-server",{"title":7413,"description":8607},{"loc":8610},"blog\u002Fgoogle-apps-script-simple-server","Tools",[8616,8617,8618,2865],"google-apps-script","google-sheets","web-api","4T10OFEoBxdD0AOYX8Uz6ZTcyI-lmrmMChuqaJVbx7I",{"id":8621,"title":8622,"body":8623,"created":9114,"description":9115,"extension":843,"filename":9116,"meta":9117,"navigation":846,"path":9118,"seo":9119,"sitemap":9120,"stem":9121,"subject":9122,"tags":9123,"updated":9114,"volume":853,"__hash__":9126},"blog\u002Fblog\u002Fheadroom-claude-code-token-saving.md","Headroom 프록시로 Claude Code 토큰 사용량 24% 절감하기",{"type":8,"value":8624,"toc":9102},[8625,8631,8634,8637,8641,8674,8677,8699,8702,8706,8750,8757,8761,8768,8774,8777,9014,9017,9035,9038,9043,9050,9054,9057,9061,9071,9075,9078,9082,9085,9089,9092,9096,9099],[1112,8626],{"description":8627,"favicon":1320,"host":1317,"image":8628,"title":8629,"url":8630},"Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server. - headroomlabs-ai\u002Fheadroom","https:\u002F\u002Fopengraph.githubassets.com\u002Fa0e535f5950af17ac17cdc34b01c98f3178aca52dd834237f58ce79288660cf0\u002Fheadroomlabs-ai\u002Fheadroom","GitHub - headroomlabs-ai\u002Fheadroom: Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.","https:\u002F\u002Fgithub.com\u002Fheadroomlabs-ai\u002Fheadroom",[16,8632,8633],{},"ai 의 토큰 사용량을 최적화하는 방향을 항상 고민하게 된다. Headroom 이라는 도구가 있는데, 로컬 프록시 도구다. Claude Code와 Anthropic API 사이에 위치하면서 요청을 가로채 압축한 뒤 전달하는 방식으로 동작한다. 한 달가량 사용해 본 결과 약 24%의 비용 절감 효과를 확인했고, 설치 방법과 함께 내부 절감 방식을 정리한다.",[16,8635,8636],{},"프록시 하나만 띄우면 기존 워크플로우를 전혀 바꾸지 않고도 토큰 사용량을 줄일 수 있다는 점이 매력적이다. 압축효과와 프롬프트 캐시 정렬로 인한 간접 절감까지 더하면 체감 효과는 더 크다.",[49,8638,8640],{"id":8639},"설치-및-프록시-실행","설치 및 프록시 실행",[82,8642,8644],{"className":6839,"code":8643,"language":6841,"meta":87,"style":87},"pip install \"headroom-ai[code][proxy]\" anthropic\nheadroom proxy --port 15555\n",[31,8645,8646,8660],{"__ignoreMap":87},[91,8647,8648,8651,8654,8657],{"class":93,"line":94},[91,8649,8650],{"class":97},"pip",[91,8652,8653],{"class":169}," install",[91,8655,8656],{"class":169}," \"headroom-ai[code][proxy]\"",[91,8658,8659],{"class":169}," anthropic\n",[91,8661,8662,8665,8668,8671],{"class":93,"line":105},[91,8663,8664],{"class":97},"headroom",[91,8666,8667],{"class":169}," proxy",[91,8669,8670],{"class":108}," --port",[91,8672,8673],{"class":108}," 15555\n",[16,8675,8676],{},"Headroom은 Python 패키지로 배포되므로 Python이 설치되어 있어야 한다. pip로 설치한 뒤 프록시 서버를 구동한다.",[82,8678,8680],{"className":6839,"code":8679,"language":6841,"meta":87,"style":87},"export ANTHROPIC_BASE_URL=http:\u002F\u002F127.0.0.1:15555\nclaude\n",[31,8681,8682,8694],{"__ignoreMap":87},[91,8683,8684,8686,8689,8691],{"class":93,"line":94},[91,8685,2574],{"class":566},[91,8687,8688],{"class":101}," ANTHROPIC_BASE_URL",[91,8690,166],{"class":566},[91,8692,8693],{"class":101},"http:\u002F\u002F127.0.0.1:15555\n",[91,8695,8696],{"class":93,"line":105},[91,8697,8698],{"class":97},"claude\n",[16,8700,8701],{},"프록시가 15555 포트에서 실행되면, Claude Code가 Anthropic API 대신 이 프록시를 바라보도록 환경 변수를 지정하고 실행한다.",[49,8703,8705],{"id":8704},"매번-환경-변수-입력이-번거롭다면","매번 환경 변수 입력이 번거롭다면",[82,8707,8709],{"className":6839,"code":8708,"language":6841,"meta":87,"style":87},"nano ~\u002F.zshrc\n \n# 맨 아래줄에 다음 내용 추가 후 저장 (Ctrl+O 엔터, Ctrl+X 종료)\nexport ANTHROPIC_BASE_URL=http:\u002F\u002F127.0.0.1:15555\n \nsource ~\u002F.zshrc\n",[31,8710,8711,8719,8724,8729,8739,8743],{"__ignoreMap":87},[91,8712,8713,8716],{"class":93,"line":94},[91,8714,8715],{"class":97},"nano",[91,8717,8718],{"class":169}," ~\u002F.zshrc\n",[91,8720,8721],{"class":93,"line":105},[91,8722,8723],{"class":101}," \n",[91,8725,8726],{"class":93,"line":121},[91,8727,8728],{"class":1343},"# 맨 아래줄에 다음 내용 추가 후 저장 (Ctrl+O 엔터, Ctrl+X 종료)\n",[91,8730,8731,8733,8735,8737],{"class":93,"line":134},[91,8732,2574],{"class":566},[91,8734,8688],{"class":101},[91,8736,166],{"class":566},[91,8738,8693],{"class":101},[91,8740,8741],{"class":93,"line":228},[91,8742,8723],{"class":101},[91,8744,8745,8748],{"class":93,"line":250},[91,8746,8747],{"class":108},"source",[91,8749,8718],{"class":169},[16,8751,8752,8753,8756],{},"터미널을 열 때마다 export 명령을 입력하고 싶지 않다면 셸 설정 파일에 등록해 두면 된다. 이후에는 ",[31,8754,8755],{},"claude"," 명령만 입력해도 항상 프록시를 경유해서 실행된다.",[49,8758,8760],{"id":8759},"절감-효과-집계-확인","절감 효과 집계 확인",[16,8762,8763,8764,8767],{},"프록시를 띄운 포트의 ",[31,8765,8766],{},"\u002Fstats"," 경로로 접근하면 지금까지의 사용 통계를 확인할 수 있다.",[82,8769,8772],{"className":8770,"code":8771,"language":1099},[1097],"http:\u002F\u002F127.0.0.1:15555\u002Fstats\n",[31,8773,8771],{"__ignoreMap":87},[16,8775,8776],{},"응답은 가공되지 않은 JSON 형태라서 그 자체로 가시화되지는 않는다. 다만 AI에게 그대로 던져주고 분석을 시키면 알아서 잘 정리해 준다. 실제로 한 달가량 사용한 뒤의 통계 일부는 다음과 같다.",[82,8778,8780],{"className":8477,"code":8779,"language":8479,"meta":87,"style":87},"\"summary\": {\n    \"mode\": \"token\",\n    \"api_requests\": 584,\n    \"primary_model\": \"claude-opus-4-8\",\n    \"compression\": {\n        \"requests_compressed\": 533,\n        \"avg_compression_pct\": 20.8,\n        \"best_compression_pct\": 65.5,\n        \"best_detail\": \"33,971 → 11,724 tokens\",\n        \"total_tokens_removed\": 13078430,\n        \"total_tokens_saved_with_rtk\": 13078430,\n        \"total_tokens_before_with_rtk\": 64728531\n    },\n    \"cost\": {\n        \"without_headroom_usd\": 234.92,\n        \"with_headroom_usd\": 177.86,\n        \"total_saved_usd\": 57.06,\n        \"savings_pct\": 24.3,\n        \"breakdown\": {\n            \"cache_savings_usd\": 292.48,\n            \"compression_savings_usd\": 57.06\n        }\n    }\n}\n",[31,8781,8782,8790,8802,8814,8826,8833,8845,8857,8869,8881,8893,8904,8914,8918,8925,8937,8949,8961,8973,8980,8992,9002,9006,9010],{"__ignoreMap":87},[91,8783,8784,8787],{"class":93,"line":94},[91,8785,8786],{"class":169},"\"summary\"",[91,8788,8789],{"class":101},": {\n",[91,8791,8792,8795,8797,8800],{"class":93,"line":105},[91,8793,8794],{"class":108},"    \"mode\"",[91,8796,112],{"class":101},[91,8798,8799],{"class":169},"\"token\"",[91,8801,7560],{"class":101},[91,8803,8804,8807,8809,8812],{"class":93,"line":121},[91,8805,8806],{"class":108},"    \"api_requests\"",[91,8808,112],{"class":101},[91,8810,8811],{"class":108},"584",[91,8813,7560],{"class":101},[91,8815,8816,8819,8821,8824],{"class":93,"line":134},[91,8817,8818],{"class":108},"    \"primary_model\"",[91,8820,112],{"class":101},[91,8822,8823],{"class":169},"\"claude-opus-4-8\"",[91,8825,7560],{"class":101},[91,8827,8828,8831],{"class":93,"line":228},[91,8829,8830],{"class":108},"    \"compression\"",[91,8832,8789],{"class":101},[91,8834,8835,8838,8840,8843],{"class":93,"line":250},[91,8836,8837],{"class":108},"        \"requests_compressed\"",[91,8839,112],{"class":101},[91,8841,8842],{"class":108},"533",[91,8844,7560],{"class":101},[91,8846,8847,8850,8852,8855],{"class":93,"line":260},[91,8848,8849],{"class":108},"        \"avg_compression_pct\"",[91,8851,112],{"class":101},[91,8853,8854],{"class":108},"20.8",[91,8856,7560],{"class":101},[91,8858,8859,8862,8864,8867],{"class":93,"line":274},[91,8860,8861],{"class":108},"        \"best_compression_pct\"",[91,8863,112],{"class":101},[91,8865,8866],{"class":108},"65.5",[91,8868,7560],{"class":101},[91,8870,8871,8874,8876,8879],{"class":93,"line":284},[91,8872,8873],{"class":108},"        \"best_detail\"",[91,8875,112],{"class":101},[91,8877,8878],{"class":169},"\"33,971 → 11,724 tokens\"",[91,8880,7560],{"class":101},[91,8882,8883,8886,8888,8891],{"class":93,"line":299},[91,8884,8885],{"class":108},"        \"total_tokens_removed\"",[91,8887,112],{"class":101},[91,8889,8890],{"class":108},"13078430",[91,8892,7560],{"class":101},[91,8894,8895,8898,8900,8902],{"class":93,"line":319},[91,8896,8897],{"class":108},"        \"total_tokens_saved_with_rtk\"",[91,8899,112],{"class":101},[91,8901,8890],{"class":108},[91,8903,7560],{"class":101},[91,8905,8906,8909,8911],{"class":93,"line":334},[91,8907,8908],{"class":108},"        \"total_tokens_before_with_rtk\"",[91,8910,112],{"class":101},[91,8912,8913],{"class":108},"64728531\n",[91,8915,8916],{"class":93,"line":355},[91,8917,3477],{"class":101},[91,8919,8920,8923],{"class":93,"line":364},[91,8921,8922],{"class":108},"    \"cost\"",[91,8924,8789],{"class":101},[91,8926,8927,8930,8932,8935],{"class":93,"line":378},[91,8928,8929],{"class":108},"        \"without_headroom_usd\"",[91,8931,112],{"class":101},[91,8933,8934],{"class":108},"234.92",[91,8936,7560],{"class":101},[91,8938,8939,8942,8944,8947],{"class":93,"line":387},[91,8940,8941],{"class":108},"        \"with_headroom_usd\"",[91,8943,112],{"class":101},[91,8945,8946],{"class":108},"177.86",[91,8948,7560],{"class":101},[91,8950,8951,8954,8956,8959],{"class":93,"line":402},[91,8952,8953],{"class":108},"        \"total_saved_usd\"",[91,8955,112],{"class":101},[91,8957,8958],{"class":108},"57.06",[91,8960,7560],{"class":101},[91,8962,8963,8966,8968,8971],{"class":93,"line":422},[91,8964,8965],{"class":108},"        \"savings_pct\"",[91,8967,112],{"class":101},[91,8969,8970],{"class":108},"24.3",[91,8972,7560],{"class":101},[91,8974,8975,8978],{"class":93,"line":438},[91,8976,8977],{"class":108},"        \"breakdown\"",[91,8979,8789],{"class":101},[91,8981,8982,8985,8987,8990],{"class":93,"line":458},[91,8983,8984],{"class":108},"            \"cache_savings_usd\"",[91,8986,112],{"class":101},[91,8988,8989],{"class":108},"292.48",[91,8991,7560],{"class":101},[91,8993,8994,8997,8999],{"class":93,"line":467},[91,8995,8996],{"class":108},"            \"compression_savings_usd\"",[91,8998,112],{"class":101},[91,9000,9001],{"class":108},"57.06\n",[91,9003,9004],{"class":93,"line":481},[91,9005,3307],{"class":101},[91,9007,9008],{"class":93,"line":490},[91,9009,1693],{"class":101},[91,9011,9012],{"class":93,"line":3310},[91,9013,137],{"class":101},[16,9015,9016],{},"주요 지표를 해석하면 다음과 같다.",[24,9018,9019,9029,9032],{},[27,9020,9021,9024,9025,9028],{},[31,9022,9023],{},"total_tokens_before_with_rtk","가 압축 전 총 사용 토큰, ",[31,9026,9027],{},"total_tokens_saved_with_rtk","가 절약된 토큰이다. 약 6,470만 토큰 중 1,300만 토큰을 줄여 24.3%의 비용을 절감했다.",[27,9030,9031],{},"평균 압축률은 20.8%이고, 가장 압축이 잘 된 요청은 33,971 토큰을 11,724 토큰으로 줄여 65.5%까지 압축됐다.",[27,9033,9034],{},"CacheAligner 덕분에 Anthropic 자체 프롬프트 캐시 적중률이 73% 수준으로 유지됐고, 이로 인한 간접 절약 가치는 약 300달러(cache_savings_usd)에 달한다.",[16,9036,9037],{},"압축 과정에서 처리 오버헤드가 2% 정도 늘어난 것으로 집계되지만, 절감 폭에 비하면 유의미한 수치는 아니다.",[16,9039,9040],{},[19,9041],{"alt":87,"src":9042},"\u002Fblog\u002Fimg\u002Fheadroom-claude-code-token-saving\u002Fheadroom-dashboard.png",[16,9044,9045,9046,9049],{},"대시보드를 사용하면 훨씬 한눈에 파악하기 좋다. ",[31,9047,9048],{},"\u002Fdashboard"," 경로로 접속하면 된다.",[49,9051,9053],{"id":9052},"headroom의-절감-방식","Headroom의 절감 방식",[16,9055,9056],{},"통계에 나타나는 각 전략이 실제로 어떤 방식으로 토큰을 줄이는지 살펴본다.",[757,9058,9060],{"id":9059},"smartcrusher-json_bloat","SmartCrusher (json_bloat)",[16,9062,9063,9064,64,9067,9070],{},"에이전트가 파일 목록을 읽거나 API 결과를 받아올 때 데이터는 주로 JSON으로 오간다. 여기에는 중괄호와 따옴표 같은 구조 부호, 그리고 ",[31,9065,9066],{},"id",[31,9068,9069],{},"createdAt"," 같은 반복 필드가 대량으로 포함된다. SmartCrusher는 의미 전달에 기여하지 않는 이 노이즈를 쳐내서 토큰을 절약한다.",[757,9072,9074],{"id":9073},"kompress-compressions_by_strategy","Kompress (compressions_by_strategy)",[16,9076,9077],{},"ModernBERT 기반의 텍스트 압축 방식이다. 주석이나 문서, 로그처럼 자연어가 섞인 텍스트를 처리할 때 사용된다. 가벼운 AI 모델이 의미는 유지하면서 토큰을 덜 소비하는 구조로 문장을 고쳐서 Claude에게 전달한다.",[757,9079,9081],{"id":9080},"code-aware-code_aware","Code-Aware (code_aware)",[16,9083,9084],{},"코드를 AST(추상 구문 트리)로 분석해서 노이즈와 보일러플레이트를 제거한 뒤 전달한다. 단순 문자열 치환이 아니라 구문 구조를 이해한 상태에서 압축하므로 코드의 의미가 손상되지 않는다.",[757,9086,9088],{"id":9087},"ccr","CCR",[16,9090,9091],{},"압축률을 높이다 보면 정보 손실률이 함께 높아질 수 있다. CCR은 이를 대비해 원본 데이터를 로컬 컴퓨터에 해시로 보관해 둔다. 압축된 텍스트를 보내면서, 모델이 더 자세한 정보가 필요하다고 판단하면 해시된 원본 데이터를 호출할 수 있도록 뒷배를 마련해 두는 구조다.",[757,9093,9095],{"id":9094},"cachealigner-prefix_cache","CacheAligner (prefix_cache)",[16,9097,9098],{},"Anthropic API에는 이전에 보낸 프롬프트와 동일한 내용이 앞부분에 있으면 해당 구간 비용을 90% 할인해 주는 프롬프트 캐싱 기능이 있다. 문제는 대화가 길어지면서 컨텍스트가 조금씩 바뀌면 캐시가 깨지기 쉽다는 점이다. CacheAligner는 변하지 않는 내용을 앞쪽에 고정하고 가변 내용을 뒤에 배치하는 방식으로 프롬프트를 정렬해서, 캐시 적중률을 높게 유지해 준다.",[829,9100,9101],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":9103},[9104,9105,9106,9107],{"id":8639,"depth":105,"text":8640},{"id":8704,"depth":105,"text":8705},{"id":8759,"depth":105,"text":8760},{"id":9052,"depth":105,"text":9053,"children":9108},[9109,9110,9111,9112,9113],{"id":9059,"depth":121,"text":9060},{"id":9073,"depth":121,"text":9074},{"id":9080,"depth":121,"text":9081},{"id":9087,"depth":121,"text":9088},{"id":9094,"depth":121,"text":9095},"2026-06-04","로컬 프록시 도구 Headroom을 Claude Code에 연동하여 API 토큰 사용량을 압축하고, 실제 통계 데이터로 절감 효과와 내부 압축 방식(SmartCrusher, Kompress, CacheAligner 등)을 분석한다.","headroom-claude-code-token-saving",{},"\u002Fblog\u002Fheadroom-claude-code-token-saving",{"title":8622,"description":9115},{"loc":9118},"blog\u002Fheadroom-claude-code-token-saving","AI",[9124,8755,9125,8664],"ai","claudecode","A553U66LTTuK1O4SkCtXizn3jCxvqqxztPuYWmeIK20",{"id":9128,"title":9129,"body":9130,"created":6033,"description":10132,"extension":843,"filename":10133,"meta":10134,"navigation":846,"path":10135,"seo":10136,"sitemap":10137,"stem":10138,"subject":10139,"tags":10140,"updated":6033,"volume":853,"__hash__":10143},"blog\u002Fblog\u002Fjavascript-cross-tab-communication-methods.md","브라우저 탭과 창 사이에서 상태와 메시지 동기화하기",{"type":8,"value":9131,"toc":10126},[9132,9147,9241,9245,9251,9314,9317,9445,9466,9469,9474,9628,9631,9637,9647,9651,9712,9718,9804,9820,9825,9835,9843,9847,9852,9855,9951,9957,10110,10120,10123],[16,9133,9134,9135,9138,9139,9142,9143,9146],{},"같은 사이트여도 탭 사이에 통신이 필요할 때가 있다. 한 탭에서 로그아웃하거나 데이터를 변경한 뒤 다른 탭에도 알려야 하는 상황이다. 메시지를 전달하는 방법은 대상 범위에 따라 나뉜다. 여러 탭에 알릴 때는 ",[31,9136,9137],{},"storage"," 이벤트나 ",[31,9140,9141],{},"BroadcastChannel","을 사용하고, Origin이 다른 팝업이나 iframe과 통신할 때는 ",[31,9144,9145],{},"window.postMessage()","를 사용한다. Worker를 Same-Origin 컨텍스트의 중계 지점으로 사용할 수도 있다.",[812,9148,9149,9168],{},[3001,9150,9151],{},[3004,9152,9153,9156,9159,9162,9165],{},[3007,9154,9155],{},"방법",[3007,9157,9158],{},"전달 대상",[3007,9160,9161],{},"Window reference",[3007,9163,9164],{},"데이터 저장",[3007,9166,9167],{},"Cross-Origin",[3017,9169,9170,9192,9208,9225],{},[3004,9171,9172,9177,9180,9183,9189],{},[3022,9173,9174,9176],{},[31,9175,9137],{}," 이벤트",[3022,9178,9179],{},"Same-Origin의 다른 탭과 창",[3022,9181,9182],{},"필요 없음",[3022,9184,9185,9188],{},[31,9186,9187],{},"localStorage","에 남음",[3022,9190,9191],{},"불가",[3004,9193,9194,9198,9201,9203,9206],{},[3022,9195,9196],{},[31,9197,9141],{},[3022,9199,9200],{},"같은 Storage Partition과 Origin을 공유하는 탭, 창, iframe, Worker",[3022,9202,9182],{},[3022,9204,9205],{},"남지 않음",[3022,9207,9191],{},[3004,9209,9210,9214,9217,9220,9222],{},[3022,9211,9212],{},[31,9213,9145],{},[3022,9215,9216],{},"Window reference가 있는 팝업이나 iframe",[3022,9218,9219],{},"필요",[3022,9221,9205],{},[3022,9223,9224],{},"가능",[3004,9226,9227,9230,9233,9236,9238],{},[3022,9228,9229],{},"Service Worker 중계",[3022,9231,9232],{},"Worker가 제어하거나 조회한 클라이언트",[3022,9234,9235],{},"Worker가 조회",[3022,9237,9205],{},[3022,9239,9240],{},"Same-Origin",[49,9242,9244],{"id":9243},"localstorage-변경-감지","localStorage 변경 감지",[1112,9246],{"description":9247,"favicon":9248,"host":5541,"title":9249,"url":9250},"The storage event of the Window interface fires when another document that shares the same storage area (either localStorage or sessionStorage) as the current window updates that storage area. The event is not fired on the window that made the change.","https:\u002F\u002Fdeveloper.mozilla.org\u002Ffavicon.ico","Window: storage event - Web APIs | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWindow\u002Fstorage_event",[82,9252,9254],{"className":1154,"code":9253,"language":1156,"meta":87,"style":87},"localStorage.setItem(\n  'session:state',\n  JSON.stringify({ status: 'signed-out', changedAt: Date.now() }),\n)\n\napplySignedOutState()\n",[31,9255,9256,9267,9274,9298,9302,9306],{"__ignoreMap":87},[91,9257,9258,9261,9264],{"class":93,"line":94},[91,9259,9260],{"class":101},"localStorage.",[91,9262,9263],{"class":97},"setItem",[91,9265,9266],{"class":101},"(\n",[91,9268,9269,9272],{"class":93,"line":105},[91,9270,9271],{"class":169},"  'session:state'",[91,9273,7560],{"class":101},[91,9275,9276,9279,9281,9283,9286,9289,9292,9295],{"class":93,"line":121},[91,9277,9278],{"class":108},"  JSON",[91,9280,1235],{"class":101},[91,9282,7506],{"class":97},[91,9284,9285],{"class":101},"({ status: ",[91,9287,9288],{"class":169},"'signed-out'",[91,9290,9291],{"class":101},", changedAt: Date.",[91,9293,9294],{"class":97},"now",[91,9296,9297],{"class":101},"() }),\n",[91,9299,9300],{"class":93,"line":134},[91,9301,3487],{"class":101},[91,9303,9304],{"class":93,"line":228},[91,9305,1450],{"emptyLinePlaceholder":846},[91,9307,9308,9311],{"class":93,"line":250},[91,9309,9310],{"class":97},"applySignedOutState",[91,9312,9313],{"class":101},"()\n",[16,9315,9316],{},"어떤 탭에서 로그아웃을 하면,",[82,9318,9320],{"className":1154,"code":9319,"language":1156,"meta":87,"style":87},"window.addEventListener('storage', (event) => {\n  if (event.storageArea !== localStorage) return\n  if (event.key !== 'session:state' || event.newValue === null) return\n\n  const state = JSON.parse(event.newValue)\n\n  if (state.status === 'signed-out') {\n    applySignedOutState()\n  }\n})\n",[31,9321,9322,9347,9363,9389,9393,9411,9415,9429,9436,9440],{"__ignoreMap":87},[91,9323,9324,9327,9330,9332,9335,9338,9341,9343,9345],{"class":93,"line":94},[91,9325,9326],{"class":101},"window.",[91,9328,9329],{"class":97},"addEventListener",[91,9331,795],{"class":101},[91,9333,9334],{"class":169},"'storage'",[91,9336,9337],{"class":101},", (",[91,9339,9340],{"class":1172},"event",[91,9342,1176],{"class":101},[91,9344,1179],{"class":566},[91,9346,102],{"class":101},[91,9348,9349,9351,9354,9357,9360],{"class":93,"line":105},[91,9350,2439],{"class":566},[91,9352,9353],{"class":101}," (event.storageArea ",[91,9355,9356],{"class":566},"!==",[91,9358,9359],{"class":101}," localStorage) ",[91,9361,9362],{"class":566},"return\n",[91,9364,9365,9367,9370,9372,9375,9377,9380,9383,9385,9387],{"class":93,"line":121},[91,9366,2439],{"class":566},[91,9368,9369],{"class":101}," (event.key ",[91,9371,9356],{"class":566},[91,9373,9374],{"class":169}," 'session:state'",[91,9376,7954],{"class":566},[91,9378,9379],{"class":101}," event.newValue ",[91,9381,9382],{"class":566},"===",[91,9384,1363],{"class":108},[91,9386,1176],{"class":101},[91,9388,9362],{"class":566},[91,9390,9391],{"class":93,"line":134},[91,9392,1450],{"emptyLinePlaceholder":846},[91,9394,9395,9397,9400,9402,9404,9406,9408],{"class":93,"line":228},[91,9396,2641],{"class":566},[91,9398,9399],{"class":108}," state",[91,9401,1366],{"class":566},[91,9403,7872],{"class":108},[91,9405,1235],{"class":101},[91,9407,1189],{"class":97},[91,9409,9410],{"class":101},"(event.newValue)\n",[91,9412,9413],{"class":93,"line":250},[91,9414,1450],{"emptyLinePlaceholder":846},[91,9416,9417,9419,9422,9424,9427],{"class":93,"line":260},[91,9418,2439],{"class":566},[91,9420,9421],{"class":101}," (state.status ",[91,9423,9382],{"class":566},[91,9425,9426],{"class":169}," 'signed-out'",[91,9428,3866],{"class":101},[91,9430,9431,9434],{"class":93,"line":274},[91,9432,9433],{"class":97},"    applySignedOutState",[91,9435,9313],{"class":101},[91,9437,9438],{"class":93,"line":284},[91,9439,1698],{"class":101},[91,9441,9442],{"class":93,"line":299},[91,9443,9444],{"class":101},"})\n",[16,9446,9447,9449,9450,64,9453,64,9456,64,9459,9462,9463,9465],{},[31,9448,9137],{}," 이벤트로 다른 탭에서 받을 수 있다. 값을 바꾼 탭에는 이벤트가 전달되지 않는다. 이벤트에는 ",[31,9451,9452],{},"key",[31,9454,9455],{},"oldValue",[31,9457,9458],{},"newValue",[31,9460,9461],{},"storageArea",", 트리거된 ",[31,9464,5177],{},"이 담긴다. 일회성 메시지보다 로그인 상태나 사용자 설정처럼 저장할 값의 동기화할 때 사용하는 게 좋다. 같은 값을 다시 저장하면 변경이 없어 이벤트를 발송하지 않아서 로직 실행이 불가능하다.",[49,9467,9141],{"id":9468},"broadcastchannel",[1112,9470],{"description":9471,"favicon":9248,"host":5541,"title":9472,"url":9473},"The Broadcast Channel API allows basic communication between browsing contexts (that is, windows, tabs, frames, or iframes) and workers on the same origin.","Broadcast Channel API - Web APIs | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FBroadcast_Channel_API",[82,9475,9477],{"className":1154,"code":9476,"language":1156,"meta":87,"style":87},"const channel = new BroadcastChannel('session-events')\n\nchannel.addEventListener('message', (event) => {\n  if (event.data?.type === 'SIGNED_OUT') {\n    applySignedOutState()\n  }\n})\n\nfunction signOut() {\n  applySignedOutState()\n  channel.postMessage({ type: 'SIGNED_OUT' })\n}\n\nwindow.addEventListener('pagehide', () => channel.close(), { once: true })\n",[31,9478,9479,9500,9504,9526,9540,9546,9550,9554,9558,9567,9574,9591,9595,9599],{"__ignoreMap":87},[91,9480,9481,9483,9486,9488,9490,9493,9495,9498],{"class":93,"line":94},[91,9482,1968],{"class":566},[91,9484,9485],{"class":108}," channel",[91,9487,1366],{"class":566},[91,9489,2676],{"class":566},[91,9491,9492],{"class":97}," BroadcastChannel",[91,9494,795],{"class":101},[91,9496,9497],{"class":169},"'session-events'",[91,9499,3487],{"class":101},[91,9501,9502],{"class":93,"line":105},[91,9503,1450],{"emptyLinePlaceholder":846},[91,9505,9506,9509,9511,9513,9516,9518,9520,9522,9524],{"class":93,"line":121},[91,9507,9508],{"class":101},"channel.",[91,9510,9329],{"class":97},[91,9512,795],{"class":101},[91,9514,9515],{"class":169},"'message'",[91,9517,9337],{"class":101},[91,9519,9340],{"class":1172},[91,9521,1176],{"class":101},[91,9523,1179],{"class":566},[91,9525,102],{"class":101},[91,9527,9528,9530,9533,9535,9538],{"class":93,"line":134},[91,9529,2439],{"class":566},[91,9531,9532],{"class":101}," (event.data?.type ",[91,9534,9382],{"class":566},[91,9536,9537],{"class":169}," 'SIGNED_OUT'",[91,9539,3866],{"class":101},[91,9541,9542,9544],{"class":93,"line":228},[91,9543,9433],{"class":97},[91,9545,9313],{"class":101},[91,9547,9548],{"class":93,"line":250},[91,9549,1698],{"class":101},[91,9551,9552],{"class":93,"line":260},[91,9553,9444],{"class":101},[91,9555,9556],{"class":93,"line":274},[91,9557,1450],{"emptyLinePlaceholder":846},[91,9559,9560,9562,9565],{"class":93,"line":284},[91,9561,7471],{"class":566},[91,9563,9564],{"class":97}," signOut",[91,9566,2007],{"class":101},[91,9568,9569,9572],{"class":93,"line":299},[91,9570,9571],{"class":97},"  applySignedOutState",[91,9573,9313],{"class":101},[91,9575,9576,9579,9582,9585,9588],{"class":93,"line":319},[91,9577,9578],{"class":101},"  channel.",[91,9580,9581],{"class":97},"postMessage",[91,9583,9584],{"class":101},"({ type: ",[91,9586,9587],{"class":169},"'SIGNED_OUT'",[91,9589,9590],{"class":101}," })\n",[91,9592,9593],{"class":93,"line":334},[91,9594,137],{"class":101},[91,9596,9597],{"class":93,"line":355},[91,9598,1450],{"emptyLinePlaceholder":846},[91,9600,9601,9603,9605,9607,9610,9613,9615,9618,9621,9624,9626],{"class":93,"line":364},[91,9602,9326],{"class":101},[91,9604,9329],{"class":97},[91,9606,795],{"class":101},[91,9608,9609],{"class":169},"'pagehide'",[91,9611,9612],{"class":101},", () ",[91,9614,1179],{"class":566},[91,9616,9617],{"class":101}," channel.",[91,9619,9620],{"class":97},"close",[91,9622,9623],{"class":101},"(), { once: ",[91,9625,7557],{"class":108},[91,9627,9590],{"class":101},[16,9629,9630],{},"같은 이름으로 만든 채널은 같은 도메인의 창, 탭, iframe과 Worker 모두 메세지를 받을 수 있다.",[16,9632,9633],{},[19,9634],{"alt":9635,"src":9636},"BroadcastChannel 다이어그램","\u002Fblog\u002Fimg\u002Fjavascript-cross-tab-communication-methods\u002Fjs_tabcommu.png",[16,9638,9639,9640,9642,9643,9646],{},"메시지를 보낸 ",[31,9641,9141],{}," 객체는 자신의 메시지를 다시 받진 않는다. 채널을 더 쓰지 않을 때 ",[31,9644,9645],{},"close()","를 호출하면 해당 객체가 채널에서 빠진다.",[49,9648,9650],{"id":9649},"windowpostmessage","window.postMessage",[82,9652,9654],{"className":1154,"code":9653,"language":1156,"meta":87,"style":87},"const authWindow = window.open('https:\u002F\u002Fauth.example.com\u002Flogin')\n\nauthWindow?.postMessage(\n  { type: 'SESSION_REQUEST' },\n  'https:\u002F\u002Fauth.example.com',\n)\n",[31,9655,9656,9677,9681,9690,9701,9708],{"__ignoreMap":87},[91,9657,9658,9660,9663,9665,9667,9670,9672,9675],{"class":93,"line":94},[91,9659,1968],{"class":566},[91,9661,9662],{"class":108}," authWindow",[91,9664,1366],{"class":566},[91,9666,5049],{"class":101},[91,9668,9669],{"class":97},"open",[91,9671,795],{"class":101},[91,9673,9674],{"class":169},"'https:\u002F\u002Fauth.example.com\u002Flogin'",[91,9676,3487],{"class":101},[91,9678,9679],{"class":93,"line":105},[91,9680,1450],{"emptyLinePlaceholder":846},[91,9682,9683,9686,9688],{"class":93,"line":121},[91,9684,9685],{"class":101},"authWindow?.",[91,9687,9581],{"class":97},[91,9689,9266],{"class":101},[91,9691,9692,9695,9698],{"class":93,"line":134},[91,9693,9694],{"class":101},"  { type: ",[91,9696,9697],{"class":169},"'SESSION_REQUEST'",[91,9699,9700],{"class":101}," },\n",[91,9702,9703,9706],{"class":93,"line":228},[91,9704,9705],{"class":169},"  'https:\u002F\u002Fauth.example.com'",[91,9707,7560],{"class":101},[91,9709,9710],{"class":93,"line":250},[91,9711,3487],{"class":101},[16,9713,9714,9717],{},[31,9715,9716],{},"window.open()","으로 연 팝업에 메세지를 보낸다. 같은 도메인이 아니어도 사용할 수 있다는 점이 강점이다.",[82,9719,9721],{"className":1154,"code":9720,"language":1156,"meta":87,"style":87},"window.addEventListener('message', (event) => {\n  if (event.origin !== 'https:\u002F\u002Fauth.example.com') return\n  if (event.source !== authWindow) return\n  if (event.data?.type !== 'SESSION_RESULT') return\n\n  updateSession(event.data.session)\n})\n",[31,9722,9723,9743,9759,9773,9788,9792,9800],{"__ignoreMap":87},[91,9724,9725,9727,9729,9731,9733,9735,9737,9739,9741],{"class":93,"line":94},[91,9726,9326],{"class":101},[91,9728,9329],{"class":97},[91,9730,795],{"class":101},[91,9732,9515],{"class":169},[91,9734,9337],{"class":101},[91,9736,9340],{"class":1172},[91,9738,1176],{"class":101},[91,9740,1179],{"class":566},[91,9742,102],{"class":101},[91,9744,9745,9747,9750,9752,9755,9757],{"class":93,"line":105},[91,9746,2439],{"class":566},[91,9748,9749],{"class":101}," (event.origin ",[91,9751,9356],{"class":566},[91,9753,9754],{"class":169}," 'https:\u002F\u002Fauth.example.com'",[91,9756,1176],{"class":101},[91,9758,9362],{"class":566},[91,9760,9761,9763,9766,9768,9771],{"class":93,"line":121},[91,9762,2439],{"class":566},[91,9764,9765],{"class":101}," (event.source ",[91,9767,9356],{"class":566},[91,9769,9770],{"class":101}," authWindow) ",[91,9772,9362],{"class":566},[91,9774,9775,9777,9779,9781,9784,9786],{"class":93,"line":134},[91,9776,2439],{"class":566},[91,9778,9532],{"class":101},[91,9780,9356],{"class":566},[91,9782,9783],{"class":169}," 'SESSION_RESULT'",[91,9785,1176],{"class":101},[91,9787,9362],{"class":566},[91,9789,9790],{"class":93,"line":228},[91,9791,1450],{"emptyLinePlaceholder":846},[91,9793,9794,9797],{"class":93,"line":250},[91,9795,9796],{"class":97},"  updateSession",[91,9798,9799],{"class":101},"(event.data.session)\n",[91,9801,9802],{"class":93,"line":260},[91,9803,9444],{"class":101},[16,9805,9806,9809,9810,9812,9813,9816,9817,9819],{},[31,9807,9808],{},"message"," 이벤트로 동일하게 받지만 다른 도메인도 가능하다는 게 ",[31,9811,9141],{}," 과 다른 점이다. 대신 수신 측에서는 ",[31,9814,9815],{},"origin","만 확인하고 끝내지 않고, 예상한 Window가 맞는지 ",[31,9818,8747],{},"와 메시지 구조 등등 종합적으로 검토해야 보안에 문제가 없을듯.",[1112,9821],{"description":9822,"favicon":9248,"host":5541,"title":9823,"url":9824},"The window.postMessage() method safely enables cross-origin communication between Window objects; e.g., between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.","Window: postMessage() method - Web APIs | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWindow\u002FpostMessage",[16,9826,9827,9828,9831,9832,9834],{},"송신할 때 ",[31,9829,9830],{},"targetOrigin","을 ",[31,9833,6591],{},"로 두면 메시지를 받을 문서의 Origin을 제한하지 못한다. 대상 Origin을 알고 있다면 scheme, host, port를 포함한 정확한 값을 지정하는 게 좋다.",[16,9836,9837,9838,5427,9840,9842],{},"사용자가 주소창이나 북마크로 직접 연 임의의 탭은 Window reference가 없으므로 전달이 불가능하다. 이 경우는 ",[31,9839,9141],{},[31,9841,9137],{}," 이벤트를 쓰는 게 맞다.",[49,9844,9846],{"id":9845},"service-worker를-활용한-통신","Service Worker를 활용한 통신",[1112,9848],{"description":9849,"favicon":9248,"host":5541,"title":9850,"url":9851},"The ServiceWorker interface of the Service Worker API provides a reference to a service worker. Multiple browsing contexts (e.g., pages, workers, etc.) can be associated with the same service worker, each through a unique ServiceWorker object.","ServiceWorker - Web APIs | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FServiceWorker",[16,9853,9854],{},"Service Worker를 이미 등록한 앱에서 푸시나 백그라운드 이벤트를 열려 있는 탭에 알릴 때 사용할 수 있다.",[82,9856,9858],{"className":1154,"code":9857,"language":1156,"meta":87,"style":87},"\u002F\u002F page.ts\nnavigator.serviceWorker.controller?.postMessage({\n  type: 'BROADCAST',\n  payload: { type: 'CONTENT_UPDATED' },\n})\n\nnavigator.serviceWorker.addEventListener('message', (event) => {\n  if (event.data?.type === 'CONTENT_UPDATED') {\n    refreshContent()\n  }\n})\n",[31,9859,9860,9865,9874,9884,9894,9898,9902,9923,9936,9943,9947],{"__ignoreMap":87},[91,9861,9862],{"class":93,"line":94},[91,9863,9864],{"class":1343},"\u002F\u002F page.ts\n",[91,9866,9867,9870,9872],{"class":93,"line":105},[91,9868,9869],{"class":101},"navigator.serviceWorker.controller?.",[91,9871,9581],{"class":97},[91,9873,7549],{"class":101},[91,9875,9876,9879,9882],{"class":93,"line":121},[91,9877,9878],{"class":101},"  type: ",[91,9880,9881],{"class":169},"'BROADCAST'",[91,9883,7560],{"class":101},[91,9885,9886,9889,9892],{"class":93,"line":134},[91,9887,9888],{"class":101},"  payload: { type: ",[91,9890,9891],{"class":169},"'CONTENT_UPDATED'",[91,9893,9700],{"class":101},[91,9895,9896],{"class":93,"line":228},[91,9897,9444],{"class":101},[91,9899,9900],{"class":93,"line":250},[91,9901,1450],{"emptyLinePlaceholder":846},[91,9903,9904,9907,9909,9911,9913,9915,9917,9919,9921],{"class":93,"line":260},[91,9905,9906],{"class":101},"navigator.serviceWorker.",[91,9908,9329],{"class":97},[91,9910,795],{"class":101},[91,9912,9515],{"class":169},[91,9914,9337],{"class":101},[91,9916,9340],{"class":1172},[91,9918,1176],{"class":101},[91,9920,1179],{"class":566},[91,9922,102],{"class":101},[91,9924,9925,9927,9929,9931,9934],{"class":93,"line":274},[91,9926,2439],{"class":566},[91,9928,9532],{"class":101},[91,9930,9382],{"class":566},[91,9932,9933],{"class":169}," 'CONTENT_UPDATED'",[91,9935,3866],{"class":101},[91,9937,9938,9941],{"class":93,"line":284},[91,9939,9940],{"class":97},"    refreshContent",[91,9942,9313],{"class":101},[91,9944,9945],{"class":93,"line":299},[91,9946,1698],{"class":101},[91,9948,9949],{"class":93,"line":319},[91,9950,9444],{"class":101},[16,9952,9953,9954,9956],{},"서비스 워커에 메세지를 보내고, ",[31,9955,9808],{}," 이벤트로 받는다.",[82,9958,9960],{"className":7462,"code":9959,"language":7464,"meta":87,"style":87},"\u002F\u002F service-worker.js\nself.addEventListener('message', (event) => {\n  if (event.data?.type !== 'BROADCAST') return\n\n  event.waitUntil(\n    self.clients.matchAll({ type: 'window' }).then((clientList) => {\n      for (const client of clientList) {\n        if (client.id !== event.source?.id) {\n          client.postMessage(event.data.payload)\n        }\n      }\n    }),\n  )\n})\n",[31,9961,9962,9967,9988,10003,10007,10017,10046,10064,10077,10087,10091,10096,10101,10106],{"__ignoreMap":87},[91,9963,9964],{"class":93,"line":94},[91,9965,9966],{"class":1343},"\u002F\u002F service-worker.js\n",[91,9968,9969,9972,9974,9976,9978,9980,9982,9984,9986],{"class":93,"line":105},[91,9970,9971],{"class":101},"self.",[91,9973,9329],{"class":97},[91,9975,795],{"class":101},[91,9977,9515],{"class":169},[91,9979,9337],{"class":101},[91,9981,9340],{"class":1172},[91,9983,1176],{"class":101},[91,9985,1179],{"class":566},[91,9987,102],{"class":101},[91,9989,9990,9992,9994,9996,9999,10001],{"class":93,"line":121},[91,9991,2439],{"class":566},[91,9993,9532],{"class":101},[91,9995,9356],{"class":566},[91,9997,9998],{"class":169}," 'BROADCAST'",[91,10000,1176],{"class":101},[91,10002,9362],{"class":566},[91,10004,10005],{"class":93,"line":134},[91,10006,1450],{"emptyLinePlaceholder":846},[91,10008,10009,10012,10015],{"class":93,"line":228},[91,10010,10011],{"class":101},"  event.",[91,10013,10014],{"class":97},"waitUntil",[91,10016,9266],{"class":101},[91,10018,10019,10022,10025,10027,10030,10033,10035,10037,10040,10042,10044],{"class":93,"line":250},[91,10020,10021],{"class":101},"    self.clients.",[91,10023,10024],{"class":97},"matchAll",[91,10026,9584],{"class":101},[91,10028,10029],{"class":169},"'window'",[91,10031,10032],{"class":101}," }).",[91,10034,1200],{"class":97},[91,10036,1169],{"class":101},[91,10038,10039],{"class":1172},"clientList",[91,10041,1176],{"class":101},[91,10043,1179],{"class":566},[91,10045,102],{"class":101},[91,10047,10048,10051,10053,10055,10058,10061],{"class":93,"line":260},[91,10049,10050],{"class":566},"      for",[91,10052,2662],{"class":101},[91,10054,1968],{"class":566},[91,10056,10057],{"class":108}," client",[91,10059,10060],{"class":566}," of",[91,10062,10063],{"class":101}," clientList) {\n",[91,10065,10066,10069,10072,10074],{"class":93,"line":274},[91,10067,10068],{"class":566},"        if",[91,10070,10071],{"class":101}," (client.id ",[91,10073,9356],{"class":566},[91,10075,10076],{"class":101}," event.source?.id) {\n",[91,10078,10079,10082,10084],{"class":93,"line":284},[91,10080,10081],{"class":101},"          client.",[91,10083,9581],{"class":97},[91,10085,10086],{"class":101},"(event.data.payload)\n",[91,10088,10089],{"class":93,"line":299},[91,10090,3307],{"class":101},[91,10092,10093],{"class":93,"line":319},[91,10094,10095],{"class":101},"      }\n",[91,10097,10098],{"class":93,"line":334},[91,10099,10100],{"class":101},"    }),\n",[91,10102,10103],{"class":93,"line":355},[91,10104,10105],{"class":101},"  )\n",[91,10107,10108],{"class":93,"line":364},[91,10109,9444],{"class":101},[16,10111,10112,10115,10116,10119],{},[31,10113,10114],{},"clients.matchAll()","은 기본적으로 현재 Service Worker가 제어하는 모든 클라이언트를 반환한다. ",[31,10117,10118],{},"includeUncontrolled: true","를 지정하면 같은 도메인이지만 아직 워커의 제어를 받지 않은 클라이언트까지 조회할 수 있다.",[16,10121,10122],{},"탭 통신만을 위해 Service Worker를 새로 도입하면 등록과 활성화, 제어 범위와 갱신 수명 주기까지 관리해서 비추",[829,10124,10125],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":10127},[10128,10129,10130,10131],{"id":9243,"depth":105,"text":9244},{"id":9468,"depth":105,"text":9141},{"id":9649,"depth":105,"text":9650},{"id":9845,"depth":105,"text":9846},"localStorage의 storage 이벤트, BroadcastChannel, window.postMessage와 Service Worker 중계를 전달 범위에 따라 비교하고 로그아웃 상태를 여러 탭에 반영하는 방법을 정리한다.","javascript-cross-tab-communication-methods",{},"\u002Fblog\u002Fjavascript-cross-tab-communication-methods",{"title":9129,"description":10132},{"loc":10135},"blog\u002Fjavascript-cross-tab-communication-methods","Javascript \u002F Browser API",[2865,10141,8618,10142],"browser","broadcast-channel","b1sKFRZPZzjJYrE9hgXDyCxmRyxV4N6Ru29v2-jzhgg",{"id":10145,"title":10146,"body":10147,"created":10831,"description":10832,"extension":843,"filename":10833,"meta":10834,"navigation":846,"path":10835,"seo":10836,"sitemap":10837,"stem":10838,"subject":9122,"tags":10839,"updated":10831,"volume":853,"__hash__":10842},"blog\u002Fblog\u002Flocal-llm-claude-code.md","Llama.cpp와 Qwen 3.5로 Claude Code 로컬 구축하기",{"type":8,"value":10148,"toc":10823},[10149,10152,10156,10159,10162,10170,10174,10189,10192,10195,10347,10432,10436,10690,10693,10701,10705,10761,10768,10772,10775,10781,10789,10792,10794,10800,10805,10812,10820],[16,10150,10151],{},"클로드코드로 로컬 모델을 연결해서 쓸 수 있다는 말에 맥북에서 한번 돌려보기로 했다.\n48GB 메모리를 가진 맥북 Pro 환경에서 llama.cpp와 Qwen 3.5 35B 모델을 사용해 완전히 오프라인 상태에서도 동작하는 무료 에이전트 코딩 환경을 구축하는 방법을 공유한다.",[49,10153,10155],{"id":10154},"왜-llamacpp와-qwen-35인가","왜 llama.cpp와 Qwen 3.5인가",[16,10157,10158],{},"처음에는 Ollama 로 설치해서 테스트했으나 제대로 안돌아가기도 하고, 설정도 한계가 있어서 llama.cpp 서버를 직접 올리기로 결정.",[16,10160,10161],{},"사용할 로컬 LLM으로는 Qwen 3.5 모델군을 선택했다.",[24,10163,10164,10167],{},[27,10165,10166],{},"내 맥북의 메모리가 48GB인 점을 감안하여 35B(350억 파라미터) 크기의 모델(unsloth\u002FQwen3.5-35B-A3B-GGUF:Q4_K_M)을 선택했다.",[27,10168,10169],{},"메모리 용량이 다소 부족한 경우 27B 모델 혹은 14B 이하 버전 사용",[49,10171,10173],{"id":10172},"llamacpp-설치-및-서버-구동","llama.cpp 설치 및 서버 구동",[82,10175,10177],{"className":6839,"code":10176,"language":6841,"meta":87,"style":87},"brew install llama.cpp\n",[31,10178,10179],{"__ignoreMap":87},[91,10180,10181,10184,10186],{"class":93,"line":94},[91,10182,10183],{"class":97},"brew",[91,10185,8653],{"class":169},[91,10187,10188],{"class":169}," llama.cpp\n",[16,10190,10191],{},"우선 Homebrew를 통해 터미널 환경에 llama.cpp를 설치한다.\n설치가 완료되면 로컬 서버(llama-server)를 구동해야 한다. 단순히 켜는 것이 아니라, 에이전트가 끊임없이 컨텍스트를 유지하고 도구(Tools)를 사용할 수 있도록 고도의 최적화 옵션을 지정해 주는 것이 핵심이다.",[16,10193,10194],{},"다음 명령어를 통해 서버를 시작한다.",[82,10196,10198],{"className":6839,"code":10197,"language":6841,"meta":87,"style":87},"llama-server \\\n  -hf unsloth\u002FQwen3.5-35B-A3B-GGUF:Q4_K_M \\\n  --port 8131 \\\n  -c 131072 \\\n  -b 2048 \\\n  -ub 1024 \\\n  --parallel 1 \\\n  -fa on \\\n  --jinja \\\n  --keep 1024 \\\n  --cache-type-k q8_0 \\\n  --cache-type-v q8_0 \\\n  --swa-full \\\n  --no-context-shift \\\n  --chat-template-kwargs '{\"enable_thinking\": false}' \\\n  --mlock \\\n  --no-mmap\n",[31,10199,10200,10207,10217,10227,10237,10247,10257,10266,10276,10283,10292,10302,10311,10318,10325,10335,10342],{"__ignoreMap":87},[91,10201,10202,10205],{"class":93,"line":94},[91,10203,10204],{"class":97},"llama-server",[91,10206,8442],{"class":108},[91,10208,10209,10212,10215],{"class":93,"line":105},[91,10210,10211],{"class":108},"  -hf",[91,10213,10214],{"class":169}," unsloth\u002FQwen3.5-35B-A3B-GGUF:Q4_K_M",[91,10216,8442],{"class":108},[91,10218,10219,10222,10225],{"class":93,"line":121},[91,10220,10221],{"class":108},"  --port",[91,10223,10224],{"class":108}," 8131",[91,10226,8442],{"class":108},[91,10228,10229,10232,10235],{"class":93,"line":134},[91,10230,10231],{"class":108},"  -c",[91,10233,10234],{"class":108}," 131072",[91,10236,8442],{"class":108},[91,10238,10239,10242,10245],{"class":93,"line":228},[91,10240,10241],{"class":108},"  -b",[91,10243,10244],{"class":108}," 2048",[91,10246,8442],{"class":108},[91,10248,10249,10252,10255],{"class":93,"line":250},[91,10250,10251],{"class":108},"  -ub",[91,10253,10254],{"class":108}," 1024",[91,10256,8442],{"class":108},[91,10258,10259,10262,10264],{"class":93,"line":260},[91,10260,10261],{"class":108},"  --parallel",[91,10263,6594],{"class":108},[91,10265,8442],{"class":108},[91,10267,10268,10271,10274],{"class":93,"line":274},[91,10269,10270],{"class":108},"  -fa",[91,10272,10273],{"class":169}," on",[91,10275,8442],{"class":108},[91,10277,10278,10281],{"class":93,"line":284},[91,10279,10280],{"class":108},"  --jinja",[91,10282,8442],{"class":108},[91,10284,10285,10288,10290],{"class":93,"line":299},[91,10286,10287],{"class":108},"  --keep",[91,10289,10254],{"class":108},[91,10291,8442],{"class":108},[91,10293,10294,10297,10300],{"class":93,"line":319},[91,10295,10296],{"class":108},"  --cache-type-k",[91,10298,10299],{"class":169}," q8_0",[91,10301,8442],{"class":108},[91,10303,10304,10307,10309],{"class":93,"line":334},[91,10305,10306],{"class":108},"  --cache-type-v",[91,10308,10299],{"class":169},[91,10310,8442],{"class":108},[91,10312,10313,10316],{"class":93,"line":355},[91,10314,10315],{"class":108},"  --swa-full",[91,10317,8442],{"class":108},[91,10319,10320,10323],{"class":93,"line":364},[91,10321,10322],{"class":108},"  --no-context-shift",[91,10324,8442],{"class":108},[91,10326,10327,10330,10333],{"class":93,"line":378},[91,10328,10329],{"class":108},"  --chat-template-kwargs",[91,10331,10332],{"class":169}," '{\"enable_thinking\": false}'",[91,10334,8442],{"class":108},[91,10336,10337,10340],{"class":93,"line":387},[91,10338,10339],{"class":108},"  --mlock",[91,10341,8442],{"class":108},[91,10343,10344],{"class":93,"line":402},[91,10345,10346],{"class":108},"  --no-mmap\n",[812,10348,10349,10360],{},[3001,10350,10351],{},[3004,10352,10353,10357],{},[3007,10354,10356],{"align":10355},"left","옵션",[3007,10358,10359],{"align":10355},"설명",[3017,10361,10362,10372,10382,10392,10402,10412,10422],{},[3004,10363,10364,10369],{},[3022,10365,10366],{"align":10355},[31,10367,10368],{},"-c 131072",[3022,10370,10371],{"align":10355},"컨텍스트 윈도우 크기를 128k(131,072)로 지정",[3004,10373,10374,10379],{},[3022,10375,10376],{"align":10355},[31,10377,10378],{},"--chat-template-kwargs '{\"enable_thinking\": false}'",[3022,10380,10381],{"align":10355},"생각(Thinking\u002FReasoning) 모드 비활성화. 에이전트 코딩 환경에서는 불필요한 토큰 낭비를 막기 위해 추론 모드를 끄는 것을 권장",[3004,10383,10384,10389],{},[3022,10385,10386],{"align":10355},[31,10387,10388],{},"--swa-full",[3022,10390,10391],{"align":10355},"슬라이딩 윈도우 어텐션(SWA) 캐시를 전체 컨텍스트로 확장하여 프롬프트 캐싱 효율을 끌어올린다. RAM 소모는 늘어나지만 성능 향상이 크다.",[3004,10393,10394,10399],{},[3022,10395,10396],{"align":10355},[31,10397,10398],{},"--no-context-shift",[3022,10400,10401],{"align":10355},"에이전트 구동에 필수 옵션이다. 컨텍스트 시프트가 일어나면 SWA 캐시가 깨질 수 있어 비활성화한다.",[3004,10403,10404,10409],{},[3022,10405,10406],{"align":10355},[31,10407,10408],{},"--cache-type-k\u002Fv q8_0",[3022,10410,10411],{"align":10355},"정밀도 손실이 거의 없는 q8_0 포맷으로 키\u002F값 캐시를 구성해 처리 속도를 대폭 높인다.",[3004,10413,10414,10419],{},[3022,10415,10416],{"align":10355},[31,10417,10418],{},"--keep 1024",[3022,10420,10421],{"align":10355},"최초 입력된 시스템 프롬프트를 캐시에서 삭제하지 않고 보존한다.",[3004,10423,10424,10429],{},[3022,10425,10426],{"align":10355},[31,10427,10428],{},"--mlock --no-mmap",[3022,10430,10431],{"align":10355},"RAM에 메모리를 잠가서 가상 메모리 스왑으로 인한 성능 저하를 방지하는 macOS 최적화 옵션이다.",[49,10433,10435],{"id":10434},"claude-code-설정","Claude Code 설정",[82,10437,10439],{"className":8477,"code":10438,"language":8479,"meta":87,"style":87},"{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"http:\u002F\u002F127.0.0.1:8131\",\n    \"ANTHROPIC_AUTH_TOKEN\": \"local\",\n    \"ANTHROPIC_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_OPUS_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_SONNET_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_HAIKU_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"CLAUDE_CODE_SUBAGENT_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"CLAUDE_CODE_MAX_OUTPUT_TOKENS\": \"128000\",\n    \"DISABLE_PROMPT_CACHING\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\",\n    \"CLAUDE_CODE_ATTRIBUTION_HEADER\": \"0\"\n  },\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(git *)\", \"Bash(npm *)\", \"Bash(npx *)\", \"Bash(node *)\", \"Bash(ls *)\", \n      \"Bash(cat *)\", \"Bash(mkdir *)\", \"Bash(cp *)\", \"Bash(mv *)\", \"Bash(rm *)\", \n      \"Read\", \"Edit\", \"Write\", \"Glob\", \"Grep\"\n    ]\n  }\n}\n",[31,10440,10441,10445,10452,10464,10476,10488,10499,10510,10521,10532,10544,10556,10567,10577,10582,10589,10597,10625,10652,10677,10682,10686],{"__ignoreMap":87},[91,10442,10443],{"class":93,"line":94},[91,10444,8486],{"class":101},[91,10446,10447,10450],{"class":93,"line":105},[91,10448,10449],{"class":108},"  \"env\"",[91,10451,8789],{"class":101},[91,10453,10454,10457,10459,10462],{"class":93,"line":121},[91,10455,10456],{"class":108},"    \"ANTHROPIC_BASE_URL\"",[91,10458,112],{"class":101},[91,10460,10461],{"class":169},"\"http:\u002F\u002F127.0.0.1:8131\"",[91,10463,7560],{"class":101},[91,10465,10466,10469,10471,10474],{"class":93,"line":134},[91,10467,10468],{"class":108},"    \"ANTHROPIC_AUTH_TOKEN\"",[91,10470,112],{"class":101},[91,10472,10473],{"class":169},"\"local\"",[91,10475,7560],{"class":101},[91,10477,10478,10481,10483,10486],{"class":93,"line":228},[91,10479,10480],{"class":108},"    \"ANTHROPIC_MODEL\"",[91,10482,112],{"class":101},[91,10484,10485],{"class":169},"\"unsloth\u002Fqwen3.5-35b-a3b\"",[91,10487,7560],{"class":101},[91,10489,10490,10493,10495,10497],{"class":93,"line":250},[91,10491,10492],{"class":108},"    \"ANTHROPIC_DEFAULT_OPUS_MODEL\"",[91,10494,112],{"class":101},[91,10496,10485],{"class":169},[91,10498,7560],{"class":101},[91,10500,10501,10504,10506,10508],{"class":93,"line":260},[91,10502,10503],{"class":108},"    \"ANTHROPIC_DEFAULT_SONNET_MODEL\"",[91,10505,112],{"class":101},[91,10507,10485],{"class":169},[91,10509,7560],{"class":101},[91,10511,10512,10515,10517,10519],{"class":93,"line":274},[91,10513,10514],{"class":108},"    \"ANTHROPIC_DEFAULT_HAIKU_MODEL\"",[91,10516,112],{"class":101},[91,10518,10485],{"class":169},[91,10520,7560],{"class":101},[91,10522,10523,10526,10528,10530],{"class":93,"line":284},[91,10524,10525],{"class":108},"    \"CLAUDE_CODE_SUBAGENT_MODEL\"",[91,10527,112],{"class":101},[91,10529,10485],{"class":169},[91,10531,7560],{"class":101},[91,10533,10534,10537,10539,10542],{"class":93,"line":299},[91,10535,10536],{"class":108},"    \"CLAUDE_CODE_MAX_OUTPUT_TOKENS\"",[91,10538,112],{"class":101},[91,10540,10541],{"class":169},"\"128000\"",[91,10543,7560],{"class":101},[91,10545,10546,10549,10551,10554],{"class":93,"line":319},[91,10547,10548],{"class":108},"    \"DISABLE_PROMPT_CACHING\"",[91,10550,112],{"class":101},[91,10552,10553],{"class":169},"\"1\"",[91,10555,7560],{"class":101},[91,10557,10558,10561,10563,10565],{"class":93,"line":334},[91,10559,10560],{"class":108},"    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\"",[91,10562,112],{"class":101},[91,10564,10553],{"class":169},[91,10566,7560],{"class":101},[91,10568,10569,10572,10574],{"class":93,"line":355},[91,10570,10571],{"class":108},"    \"CLAUDE_CODE_ATTRIBUTION_HEADER\"",[91,10573,112],{"class":101},[91,10575,10576],{"class":169},"\"0\"\n",[91,10578,10579],{"class":93,"line":364},[91,10580,10581],{"class":101},"  },\n",[91,10583,10584,10587],{"class":93,"line":378},[91,10585,10586],{"class":108},"  \"permissions\"",[91,10588,8789],{"class":101},[91,10590,10591,10594],{"class":93,"line":387},[91,10592,10593],{"class":108},"    \"allow\"",[91,10595,10596],{"class":101},": [\n",[91,10598,10599,10602,10604,10607,10609,10612,10614,10617,10619,10622],{"class":93,"line":402},[91,10600,10601],{"class":169},"      \"Bash(git *)\"",[91,10603,64],{"class":101},[91,10605,10606],{"class":169},"\"Bash(npm *)\"",[91,10608,64],{"class":101},[91,10610,10611],{"class":169},"\"Bash(npx *)\"",[91,10613,64],{"class":101},[91,10615,10616],{"class":169},"\"Bash(node *)\"",[91,10618,64],{"class":101},[91,10620,10621],{"class":169},"\"Bash(ls *)\"",[91,10623,10624],{"class":101},", \n",[91,10626,10627,10630,10632,10635,10637,10640,10642,10645,10647,10650],{"class":93,"line":422},[91,10628,10629],{"class":169},"      \"Bash(cat *)\"",[91,10631,64],{"class":101},[91,10633,10634],{"class":169},"\"Bash(mkdir *)\"",[91,10636,64],{"class":101},[91,10638,10639],{"class":169},"\"Bash(cp *)\"",[91,10641,64],{"class":101},[91,10643,10644],{"class":169},"\"Bash(mv *)\"",[91,10646,64],{"class":101},[91,10648,10649],{"class":169},"\"Bash(rm *)\"",[91,10651,10624],{"class":101},[91,10653,10654,10657,10659,10662,10664,10667,10669,10672,10674],{"class":93,"line":438},[91,10655,10656],{"class":169},"      \"Read\"",[91,10658,64],{"class":101},[91,10660,10661],{"class":169},"\"Edit\"",[91,10663,64],{"class":101},[91,10665,10666],{"class":169},"\"Write\"",[91,10668,64],{"class":101},[91,10670,10671],{"class":169},"\"Glob\"",[91,10673,64],{"class":101},[91,10675,10676],{"class":169},"\"Grep\"\n",[91,10678,10679],{"class":93,"line":458},[91,10680,10681],{"class":101},"    ]\n",[91,10683,10684],{"class":93,"line":467},[91,10685,1698],{"class":101},[91,10687,10688],{"class":93,"line":481},[91,10689,137],{"class":101},[16,10691,10692],{},"이제 설치된 Claude Code가 방금 띄운 로컬 Llama 서버를 바라보도록 설정 파일을 수정해 준다.\n사용자의 Claude 설정 경로(~\u002F.claude\u002Fsettings.json) 파일을 열고 아래와 같이 수정한다.",[1722,10694,10695],{},[16,10696,10697,10700],{},[91,10698,10699],{},"!IMPORTANT","\n환경 변수 export 명령으로 헤더 등을 차단하려 할 경우 오동작할 수 있으므로, 반드시 위의 json 설정 방식을 사용하는 것을 권장한다.",[49,10702,10704],{"id":10703},"실행-편리성을-위한-alias-등록","실행 편리성을 위한 Alias 등록",[82,10706,10708],{"className":6839,"code":10707,"language":6841,"meta":87,"style":87},"cat \u003C\u003C 'EOF' >> ~\u002F.zshrc\ncclocal() {\n  export ANTHROPIC_BASE_URL=\"http:\u002F\u002F127.0.0.1:8131\"\n  export ANTHROPIC_AUTH_TOKEN=\"local\"\n  claude \"$@\"\n}\nEOF\nsource ~\u002F.zshrc\n",[31,10709,10710,10726,10731,10736,10741,10746,10750,10755],{"__ignoreMap":87},[91,10711,10712,10715,10718,10721,10724],{"class":93,"line":94},[91,10713,10714],{"class":97},"cat",[91,10716,10717],{"class":566}," \u003C\u003C",[91,10719,10720],{"class":169}," 'EOF'",[91,10722,10723],{"class":566}," >>",[91,10725,8718],{"class":169},[91,10727,10728],{"class":93,"line":105},[91,10729,10730],{"class":169},"cclocal() {\n",[91,10732,10733],{"class":93,"line":121},[91,10734,10735],{"class":169},"  export ANTHROPIC_BASE_URL=\"http:\u002F\u002F127.0.0.1:8131\"\n",[91,10737,10738],{"class":93,"line":134},[91,10739,10740],{"class":169},"  export ANTHROPIC_AUTH_TOKEN=\"local\"\n",[91,10742,10743],{"class":93,"line":228},[91,10744,10745],{"class":169},"  claude \"$@\"\n",[91,10747,10748],{"class":93,"line":250},[91,10749,137],{"class":169},[91,10751,10752],{"class":93,"line":260},[91,10753,10754],{"class":169},"EOF\n",[91,10756,10757,10759],{"class":93,"line":274},[91,10758,8747],{"class":108},[91,10760,8718],{"class":169},[16,10762,10763,10764,10767],{},"이제 터미널에 ",[31,10765,10766],{},"cclocal","을 입력하기만 하면 로컬 LLM을 기반으로 오프라인 Claude 에이전트 코딩이 가능해진다.",[49,10769,10771],{"id":10770},"실제-구동-성능-확인","실제 구동 성능 확인",[16,10773,10774],{},"서버 로그를 확인해 보면 아래와 같이 실시간 처리 타임이 기록되는 것을 볼 수 있다.",[82,10776,10779],{"className":10777,"code":10778,"language":1099,"meta":87},[1097],"> prompt eval time = 31108.14 ms \u002F 3912 tokens ( 7.95 ms per token, 125.75 tokens per second)\n> eval time = 21045.89 ms \u002F 338 tokens ( 62.27 ms per token, 16.06 tokens per second)\n> total time = 52154.03 ms \u002F 4250 tokens\n",[31,10780,10778],{"__ignoreMap":87},[24,10782,10783,10786],{},[27,10784,10785],{},"프롬프트 파싱 속도 (Prompt Eval): 초당 약 125 tokens 수준으로 로컬 구동임에도 매우 쾌적한 속도를 보여준다.",[27,10787,10788],{},"텍스트 생성 속도 (Eval): 초당 약 16 tokens 수준으로 에이전트의 생각을 지연 없이 실시간으로 받아볼 수 있다.",[16,10790,10791],{},"그런데 과금해서 사용하는 것보다 확실히 많이 느리고, 결과물도 아직은 퀄리티가 좋은지 모르겠다.. 하지만 나중에는 모든 사람들의 로컬에서 llm 이 자체적으로 돌아가는 세상이 오지 않을까 싶다. 메모리만 충분하면!",[49,10793,6005],{"id":6004},[1112,10795],{"host":10796,"title":10797,"url":10798,"description":10799},"pchalasani.github.io","Local LLMs","https:\u002F\u002Fpchalasani.github.io\u002Fclaude-code-tools\u002Fintegrations\u002Flocal-llms\u002F#qwen35-35b-a3b--smart-general-purpose-moe","Run Claude Code and Codex CLI with local models via llama.cpp server for fully offline usage.",[1112,10801],{"host":10802,"title":10803,"url":10804},"www.reddit.com","Reddit - Please wait for verification","https:\u002F\u002Fwww.reddit.com\u002Fr\u002FLocalLLaMA\u002Fcomments\u002F1rh6455\u002Fanybody_able_to_get_qwen3535ba3b_working_with\u002F?tl=ko",[1112,10806],{"host":10807,"title":10808,"url":10809,"description":10810,"favicon":1320,"image":10811},"gist.github.com","How to Run Qwen3.5 Locally With Claude Code (No API Bills, Full Agentic Coding)","https:\u002F\u002Fgist.github.com\u002Fkibotu\u002Fa009f00414b7c10fb1c74e603d7838c0","How to Run Qwen3.5 Locally With Claude Code (No API Bills, Full Agentic Coding) - INSTALL.md","https:\u002F\u002Fgithub.githubassets.com\u002Fassets\u002Fgist-og-image-54fd7dc0713e.png",[1112,10813],{"host":10814,"title":10815,"url":10816,"description":10817,"favicon":10818,"image":10819},"unsloth.ai","How to Run Local LLMs with Claude Code | Unsloth Documentation","https:\u002F\u002Funsloth.ai\u002Fdocs\u002Fbasics\u002Fclaude-code#llama.cpp-tutorial","Guide to use open models with Claude Code on your local device.","https:\u002F\u002Funsloth.ai\u002Fdocs\u002F~gitbook\u002Fimage?url=https%3A%2F%2F2815821428-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Forganizations%252FHpyELzcNe0topgVLGCZY%252Fsites%252Fsite_mXXTe%252Ficon%252FUdYqQdRpLXMz6O8ejTLD%252Funsloth%2520sticker.png%3Falt%3Dmedia%26token%3D2a5ba961-51cb-4094-8545-6eb20ad1e06e&width=48&height=48&sign=4a2dca42&sv=2","https:\u002F\u002Funsloth.ai\u002Fdocs\u002F~gitbook\u002Fimage?url=https%3A%2F%2F2815821428-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Forganizations%252FHpyELzcNe0topgVLGCZY%252Fsites%252Fsite_mXXTe%252Fsocialpreview%252FOeFDVbzp4cgwaId7PbvL%252Funsloth%2520docs%2520pic.png%3Falt%3Dmedia%26token%3Df34a6bcc-db15-449a-bc2d-e0e8f52fe953&width=1200&height=630&sign=b1ca68fa&sv=2",[829,10821,10822],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":87,"searchDepth":105,"depth":105,"links":10824},[10825,10826,10827,10828,10829,10830],{"id":10154,"depth":105,"text":10155},{"id":10172,"depth":105,"text":10173},{"id":10434,"depth":105,"text":10435},{"id":10703,"depth":105,"text":10704},{"id":10770,"depth":105,"text":10771},{"id":6004,"depth":105,"text":6005},"2026-05-16","M 시리즈 맥북 환경에서 llama.cpp와 Unsloth Qwen 3.5 모델을 사용해 API 비용 부담 없이 Claude Code 에이전트 코딩 환경을 구축하는 단계별 튜토리얼입니다.","local-llm-claude-code",{},"\u002Fblog\u002Flocal-llm-claude-code",{"title":10146,"description":10832},{"loc":10835},"blog\u002Flocal-llm-claude-code",[9124,10840,10841,9125],"qwen","llamacpp","BVhwcxXyW0Dn6qK25z2Ocbua-h4Nz_TrpM6D60VT2SM",{"id":10844,"title":10845,"body":10846,"created":15033,"description":15034,"extension":843,"filename":15035,"meta":15036,"navigation":846,"path":15037,"seo":15038,"sitemap":15039,"stem":15040,"subject":2862,"tags":15041,"updated":15049,"volume":4441,"__hash__":15050},"blog\u002Fblog\u002Fmaking-blog-githubio-vue3-1.md","Github.io + Vue3 로 블로그 만들기",{"type":8,"value":10847,"toc":15014},[10848,10851,10854,10861,10864,10868,10873,10880,10885,10888,10892,10897,10900,10903,10914,10917,10920,10933,10936,10945,10950,10990,11001,11005,11008,11270,11281,11286,11300,11305,11312,11317,11320,11325,11328,11340,11345,11348,11352,11355,11550,11557,12111,12114,12128,12181,12188,12332,12335,12340,12343,12347,12350,12370,12376,12382,12529,12541,12636,12639,12643,12646,12708,12711,12719,12722,12725,12736,12739,12982,12995,13005,13371,13374,13379,13382,13386,13412,13419,13564,13567,13683,13690,13694,13701,13704,13709,13712,13717,13800,13803,13808,13811,13816,13819,13824,13831,13836,13839,13843,13846,14367,14387,14391,14394,14398,14405,14410,14413,14418,14421,14425,14436,14636,14646,14651,14654,14722,14733,14737,14757,14771,14943,14949,15006,15011],[16,10849,10850],{},"개발 블로그를 작성하기 위해서 github.io 를 사용하기로 했다. velog나 tistory, medium 같은 것들도 있지만, 내가 완전히 커스터마이징 가능한 페이지를 갖고 싶었다. 그렇다고 서버를 돌리거나, AWS를 통해서 구축하는 수고까지는 하지 않으려 했다. 지금 와서 생각해보면 거의 비슷한 공수가 들었다. Notion도 고려했는데, 내 개인 노트로 아주 잘 활용하고 있으나 블로그로 사용하기에는 너무 에디터다. 이렇게 쓰니까 깃헙을 고른 이유는 그냥 해보고싶어서에 가까워 보인다.",[16,10852,10853],{},"페이지를 구축할 언어로는 내가 지금 사용하고 있는 Vue 프레임워크를 사용할 것이다. 단순히 정말 지금 내가 익숙한 것이기 때문에 골랐다. 그렇다고 블로그에 대단한 기능을 넣을 것은 아니다. 나중에 게시글 뿐 아니라 포트폴리오의 역할도 해줄 수 있을 것 같아서, 주력 프레임워크를 선택해야겠다고 다짐했다.",[16,10855,10856],{},[4306,10857,10860],{"href":10858,"rel":10859},"https:\u002F\u002Fyemsu.github.io\u002F",[4310],"ENJOY DEV",[16,10862,10863],{},"참고한 블로그는 위 블로그이다. 내가 하려던 것을 똑같이 이미 구현해서 사용하고 계셨기 때문에 참고하기에 너무 훌륭한 블로그였다. 직접 블로그에 포스팅도 해주셨는데, 중간중간 소스도 염탐했다.",[49,10865,10867],{"id":10866},"githubio-페이지-만들기","Github.io 페이지 만들기",[16,10869,10870],{},[19,10871],{"alt":21,"src":10872},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled.png",[16,10874,10875,10876,10879],{},"당연히 Github 계정이 있어야한다. ",[31,10877,10878],{},"[유저명.github.io](http:\u002F\u002F유저명.github.io)"," 라고 프로젝트를 하나 만든다. 이렇게 프로젝트를 만들면 자동으로 Github Pages 를 사용하겠다고 알리는 격이다. 필수는 아니고, 나중에 Github Pages 를 사용하겠다고 따로 설정할 수도 있다.",[16,10881,10882],{},[19,10883],{"alt":21,"src":10884},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled1.png",[16,10886,10887],{},"배포 대상 브랜치를 선택하고, 폴더를 선택하여 저장하면 끝이다. 하지만 이름을 짓기도 귀찮고, 굳이 따로 설정할 필요가 없으니 규칙을 따라서 진행한다.",[49,10889,10891],{"id":10890},"github-actions-로-github-pages-배포","Github Actions 로 Github Pages 배포",[16,10893,10894],{},[19,10895],{"alt":21,"src":10896},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled2.png",[16,10898,10899],{},"Github Pages 로 사용되는 레포는 대부분 결과물을 관리하는 레포이다. 레포에 푸시가 되면 Github 봇이 감지하여, 자동으로 Github Pages 배포를 실행한다.",[16,10901,10902],{},"나는 vue 앱을 빌드하고 결과물을 배포하는 것까지 한번에 관리를 하고 싶다. 방법은 세 가지가 있다.",[4530,10904,10905,10908,10911],{},[27,10906,10907],{},"gh-pages 활용",[27,10909,10910],{},"수동 빌드",[27,10912,10913],{},"github actions 등록",[16,10915,10916],{},"내가 선택한 방법은 3번이고, 1번은 시도도 안해봤다. 하지만 gh-pages 를 많이들 사용한다. 간단하게 설명을 하자면,",[757,10918,10919],{"id":10919},"gh-pages",[16,10921,10922,10924,10925,10928,10929,10932],{},[792,10923,10919],{}," 라는 라이브러리를 가지고, 빌드 결과물을 ",[31,10926,10927],{},"gh-pages 브랜치"," 에 publish 하는 것이다. 기본적으로는 package.json 파일의 ",[31,10930,10931],{},"homepage"," 속성에 해당하는 url 로 배포를 하게 된다.",[757,10934,10910],{"id":10935},"수동-빌드",[16,10937,10938,10940,10941,10944],{},[792,10939,10910],{}," 는 Github Pages 설정 페이지에서 호스팅할 폴더를 고를 수 있다. 기본적으로 root 폴더이며, ",[31,10942,10943],{},"\u002Fdocs"," 폴더를 추가로 지정할 수 있다. 해당 레포 브랜치의 docs 폴더를 호스팅하겠다는 것이다.",[16,10946,10947],{},[19,10948],{"alt":21,"src":10949},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled3.png",[82,10951,10955],{"className":10952,"code":10953,"language":10954,"meta":87,"style":87},"language-jsx shiki shiki-themes github-light github-dark","\u002F\u002F vue.config.js\nmodule.exports = {\n  outputDir: 'docs',\n}\n","jsx",[31,10956,10957,10962,10976,10986],{"__ignoreMap":87},[91,10958,10959],{"class":93,"line":94},[91,10960,10961],{"class":1343},"\u002F\u002F vue.config.js\n",[91,10963,10964,10967,10969,10972,10974],{"class":93,"line":105},[91,10965,10966],{"class":108},"module",[91,10968,1235],{"class":101},[91,10970,10971],{"class":108},"exports",[91,10973,1366],{"class":566},[91,10975,102],{"class":101},[91,10977,10978,10981,10984],{"class":93,"line":121},[91,10979,10980],{"class":101},"  outputDir: ",[91,10982,10983],{"class":169},"'docs'",[91,10985,7560],{"class":101},[91,10987,10988],{"class":93,"line":134},[91,10989,137],{"class":101},[16,10991,10992,10993,10996,10997,11000],{},"빌드의 결과물을 docs 폴더에 생성되게 하고, 레포에 올려주기면 하면 된다. vue 의 경우 ",[31,10994,10995],{},"outputDir"," 속성을 docs 로 변경해주면 간단하게 결과 폴더가 바뀐다. 추가로 ",[31,10998,10999],{},".gitignore"," 에 docs 폴더가 있다면 항목을 제거해서 원격 레포에 푸시해주면 자동으로 봇이 실행되면서 페이지를 배포한다.",[757,11002,11004],{"id":11003},"github-actions","Github Actions",[16,11006,11007],{},"Github Actions 는 간단하게 설명하면, CICD 툴이다. 젠킨스나, aws pipeline, circleCI 같은 역할을 한다. Gitlab 에도 비슷한 기능이 있는데, 이쪽은 아직 써보지 못했다. Github Actions 는 프로젝트에 포함된 yaml 파일을 기반으로 명령을 실행한다.",[82,11009,11013],{"className":11010,"code":11011,"language":11012,"meta":87,"style":87},"language-yaml shiki shiki-themes github-light github-dark","name: Deployment to Github Pages\non:\n  push:\n    branches:\n      - deploy\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@master\n      - name: Set up Node.js\n        uses: actions\u002Fsetup-node@master\n        with:\n          node-version: 16.x\n      \n      - name: Install dependencies\n        run: npm install\n\n      - name: Build\n        run: npm run build\n        env:\n          NODE_ENV: production\n      \n      - name: Deploy\n        uses: peaceiris\u002Factions-gh-pages@v2.5.0\n        env:\n          PERSONAL_TOKEN: $\\{\\{secrets.GH_TOKEN\\}\\}\n          PUBLISH_BRANCH: master\n          PUBLISH_DIR: .\u002Fdist\n          SCRIPT_MODE: true\n","yaml",[31,11014,11015,11024,11031,11038,11045,11053,11057,11063,11070,11078,11085,11097,11108,11118,11125,11135,11140,11151,11160,11164,11175,11184,11190,11200,11204,11215,11224,11230,11240,11250,11260],{"__ignoreMap":87},[91,11016,11017,11019,11021],{"class":93,"line":94},[91,11018,1238],{"class":159},[91,11020,112],{"class":101},[91,11022,11023],{"class":169},"Deployment to Github Pages\n",[91,11025,11026,11029],{"class":93,"line":105},[91,11027,11028],{"class":108},"on",[91,11030,7265],{"class":101},[91,11032,11033,11036],{"class":93,"line":121},[91,11034,11035],{"class":159},"  push",[91,11037,7265],{"class":101},[91,11039,11040,11043],{"class":93,"line":134},[91,11041,11042],{"class":159},"    branches",[91,11044,7265],{"class":101},[91,11046,11047,11050],{"class":93,"line":228},[91,11048,11049],{"class":101},"      - ",[91,11051,11052],{"class":169},"deploy\n",[91,11054,11055],{"class":93,"line":250},[91,11056,1450],{"emptyLinePlaceholder":846},[91,11058,11059,11061],{"class":93,"line":260},[91,11060,7347],{"class":159},[91,11062,7265],{"class":101},[91,11064,11065,11068],{"class":93,"line":274},[91,11066,11067],{"class":159},"  deploy",[91,11069,7265],{"class":101},[91,11071,11072,11074,11076],{"class":93,"line":284},[91,11073,7374],{"class":159},[91,11075,112],{"class":101},[91,11077,7379],{"class":169},[91,11079,11080,11083],{"class":93,"line":299},[91,11081,11082],{"class":159},"    steps",[91,11084,7265],{"class":101},[91,11086,11087,11089,11092,11094],{"class":93,"line":319},[91,11088,11049],{"class":101},[91,11090,11091],{"class":159},"uses",[91,11093,112],{"class":101},[91,11095,11096],{"class":169},"actions\u002Fcheckout@master\n",[91,11098,11099,11101,11103,11105],{"class":93,"line":334},[91,11100,11049],{"class":101},[91,11102,1238],{"class":159},[91,11104,112],{"class":101},[91,11106,11107],{"class":169},"Set up Node.js\n",[91,11109,11110,11113,11115],{"class":93,"line":355},[91,11111,11112],{"class":159},"        uses",[91,11114,112],{"class":101},[91,11116,11117],{"class":169},"actions\u002Fsetup-node@master\n",[91,11119,11120,11123],{"class":93,"line":364},[91,11121,11122],{"class":159},"        with",[91,11124,7265],{"class":101},[91,11126,11127,11130,11132],{"class":93,"line":378},[91,11128,11129],{"class":159},"          node-version",[91,11131,112],{"class":101},[91,11133,11134],{"class":169},"16.x\n",[91,11136,11137],{"class":93,"line":387},[91,11138,11139],{"class":101},"      \n",[91,11141,11142,11144,11146,11148],{"class":93,"line":402},[91,11143,11049],{"class":101},[91,11145,1238],{"class":159},[91,11147,112],{"class":101},[91,11149,11150],{"class":169},"Install dependencies\n",[91,11152,11153,11155,11157],{"class":93,"line":422},[91,11154,7320],{"class":159},[91,11156,112],{"class":101},[91,11158,11159],{"class":169},"npm install\n",[91,11161,11162],{"class":93,"line":438},[91,11163,1450],{"emptyLinePlaceholder":846},[91,11165,11166,11168,11170,11172],{"class":93,"line":458},[91,11167,11049],{"class":101},[91,11169,1238],{"class":159},[91,11171,112],{"class":101},[91,11173,11174],{"class":169},"Build\n",[91,11176,11177,11179,11181],{"class":93,"line":467},[91,11178,7320],{"class":159},[91,11180,112],{"class":101},[91,11182,11183],{"class":169},"npm run build\n",[91,11185,11186,11188],{"class":93,"line":481},[91,11187,7262],{"class":159},[91,11189,7265],{"class":101},[91,11191,11192,11195,11197],{"class":93,"line":490},[91,11193,11194],{"class":159},"          NODE_ENV",[91,11196,112],{"class":101},[91,11198,11199],{"class":169},"production\n",[91,11201,11202],{"class":93,"line":3310},[91,11203,11139],{"class":101},[91,11205,11206,11208,11210,11212],{"class":93,"line":3315},[91,11207,11049],{"class":101},[91,11209,1238],{"class":159},[91,11211,112],{"class":101},[91,11213,11214],{"class":169},"Deploy\n",[91,11216,11217,11219,11221],{"class":93,"line":3321},[91,11218,11112],{"class":159},[91,11220,112],{"class":101},[91,11222,11223],{"class":169},"peaceiris\u002Factions-gh-pages@v2.5.0\n",[91,11225,11226,11228],{"class":93,"line":3327},[91,11227,7262],{"class":159},[91,11229,7265],{"class":101},[91,11231,11232,11235,11237],{"class":93,"line":3333},[91,11233,11234],{"class":159},"          PERSONAL_TOKEN",[91,11236,112],{"class":101},[91,11238,11239],{"class":169},"$\\{\\{secrets.GH_TOKEN\\}\\}\n",[91,11241,11242,11245,11247],{"class":93,"line":3338},[91,11243,11244],{"class":159},"          PUBLISH_BRANCH",[91,11246,112],{"class":101},[91,11248,11249],{"class":169},"master\n",[91,11251,11252,11255,11257],{"class":93,"line":3343},[91,11253,11254],{"class":159},"          PUBLISH_DIR",[91,11256,112],{"class":101},[91,11258,11259],{"class":169},".\u002Fdist\n",[91,11261,11262,11265,11267],{"class":93,"line":7882},[91,11263,11264],{"class":159},"          SCRIPT_MODE",[91,11266,112],{"class":101},[91,11268,11269],{"class":108},"true\n",[16,11271,11272,11274,11275,11280],{},[31,11273,11028],{}," 은 트리거로 Github 대부분의 훅을 활용할 수 있다. 가장 기본적으로 푸시가 있으며, 라벨, 이슈 관리, 풀 리퀘스트, 스케줄 등이 있다. ",[4306,11276,11279],{"href":11277,"rel":11278},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fusing-workflows\u002Fworkflow-syntax-for-github-actions",[4310],"자세한 건 Github Docs 에 자세히 작성","되었다.",[16,11282,11283,11285],{},[31,11284,7347],{}," 는 말 그대로 작업이며, 적힌대로 쭉 작업을 진행한다.",[16,11287,11288,11289,11292,11293,11296,11297,11299],{},"위 코드를 간략히 보자면, “deploy 브랜치의 푸시가 감지되면, 코드를 체크아웃한 후에 ",[31,11290,11291],{},"npm install"," 로 종속성을 모두 다운로드 받고, ",[31,11294,11295],{},"npm run build"," 로 빌드를 한 후, ",[31,11298,10919],{}," 아티팩트를 활용해서 master 브랜치에 dist 폴더에 담긴 결과물을 배포” 이다.",[16,11301,11302],{},[19,11303],{"alt":21,"src":11304},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled4.png",[16,11306,11307,11308,11311],{},"이 때 활용하게 되는 것이 Github Secrets 이다. Actions 실행할 때 필요한 암호키나 레포에 노출되지 말아야 하는 중요한 데이터의 경우 레포 설정에 저장해놓고 사용함으로써 외부로 노출시키지 않아도 된다. 간단하게 이름-값 으로 이루어져 있어서 대충봐도 키를 등록할 수 있을 것이다. 데이터를 사용할 때는 ",[31,11309,11310],{},"PERSONAL_TOKEN: $\\{\\{secrets.GH_TOKEN\\}\\}"," 이런 식으로 사용한다.",[16,11313,11314],{},[19,11315],{"alt":21,"src":11316},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled5.png",[16,11318,11319],{},"master 브랜치에 결과물이 배포되기 때문에 Pages 설정을 알맞게 바꿔준다.",[16,11321,11322],{},[19,11323],{"alt":21,"src":11324},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled6.png",[16,11326,11327],{},"Github Workflow 는 두 번 돌게 된다.",[4530,11329,11330,11337],{},[27,11331,11332,11333,11336],{},"deploy 브랜치에 배포를 하면 Github Actions 가 실행되어 빌드하고, ",[31,11334,11335],{},"master"," 브랜치에 결과물을 푸시한다.",[27,11338,11339],{},"그럼 Gihub 봇이 알아채고 페이지에 배포를 시작한다.",[16,11341,11342],{},[19,11343],{"alt":21,"src":11344},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled7.png",[16,11346,11347],{},"봇이 돌린 Workflow 에서 배포가 완료된 우리의 페이지도 확인할 수 있다. 아래 Artifacts 는 Jekyll 이 빌드한 결과물이다. 실제로 보면 npm build 결과를 그대로 래핑하는 것과 매한가지다.",[49,11349,11351],{"id":11350},"블로그-포스트-목록-관리하기","블로그 포스트 목록 관리하기",[16,11353,11354],{},"따로 서버를 관리할 것이 아니라면 레포에 글 목록도 관리를 하는 게 맞다고 판단했다. 클라에서 모든 것을 해결하는 것은 어렵지 않다. 데이터를 직접 작성해서 갖고 있으면 된다.",[82,11356,11358],{"className":10952,"code":11357,"language":10954,"meta":87,"style":87},"\u002F\u002F public\u002Fposts\u002Fpostlist.json\n[\n  {\n    \"url\": \"d5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\",\n    \"fileName\": \"first-post\",\n    \"title\": \"블로그를 Github.io 로 시작하는 첫 포스트\",\n        \"description\": \"요약을 써줘요\",\n    \"createdAt\": \"2022-06-24\",\n    \"updatedAt\": \"2022-06-25\",\n    \"tags\": [\"tag1\"]\n  },\n  {\n    \"url\": \"8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\",\n    \"fileName\": \"second-post\",\n    \"title\": \"두 번째 포스트\",\n        \"description\": \"요약을 써줘요\",\n    \"createdAt\": \"2022-06-24\",\n    \"updatedAt\": \"2022-06-25\",\n    \"tags\": [\"tag1\"]\n  }\n]\n",[31,11359,11360,11365,11370,11375,11387,11399,11411,11423,11435,11447,11461,11465,11469,11480,11491,11502,11512,11522,11532,11542,11546],{"__ignoreMap":87},[91,11361,11362],{"class":93,"line":94},[91,11363,11364],{"class":1343},"\u002F\u002F public\u002Fposts\u002Fpostlist.json\n",[91,11366,11367],{"class":93,"line":105},[91,11368,11369],{"class":101},"[\n",[91,11371,11372],{"class":93,"line":121},[91,11373,11374],{"class":101},"  {\n",[91,11376,11377,11380,11382,11385],{"class":93,"line":134},[91,11378,11379],{"class":169},"    \"url\"",[91,11381,112],{"class":101},[91,11383,11384],{"class":169},"\"d5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\"",[91,11386,7560],{"class":101},[91,11388,11389,11392,11394,11397],{"class":93,"line":228},[91,11390,11391],{"class":169},"    \"fileName\"",[91,11393,112],{"class":101},[91,11395,11396],{"class":169},"\"first-post\"",[91,11398,7560],{"class":101},[91,11400,11401,11404,11406,11409],{"class":93,"line":250},[91,11402,11403],{"class":169},"    \"title\"",[91,11405,112],{"class":101},[91,11407,11408],{"class":169},"\"블로그를 Github.io 로 시작하는 첫 포스트\"",[91,11410,7560],{"class":101},[91,11412,11413,11416,11418,11421],{"class":93,"line":260},[91,11414,11415],{"class":169},"        \"description\"",[91,11417,112],{"class":101},[91,11419,11420],{"class":169},"\"요약을 써줘요\"",[91,11422,7560],{"class":101},[91,11424,11425,11428,11430,11433],{"class":93,"line":274},[91,11426,11427],{"class":169},"    \"createdAt\"",[91,11429,112],{"class":101},[91,11431,11432],{"class":169},"\"2022-06-24\"",[91,11434,7560],{"class":101},[91,11436,11437,11440,11442,11445],{"class":93,"line":284},[91,11438,11439],{"class":169},"    \"updatedAt\"",[91,11441,112],{"class":101},[91,11443,11444],{"class":169},"\"2022-06-25\"",[91,11446,7560],{"class":101},[91,11448,11449,11452,11455,11458],{"class":93,"line":299},[91,11450,11451],{"class":169},"    \"tags\"",[91,11453,11454],{"class":101},": [",[91,11456,11457],{"class":169},"\"tag1\"",[91,11459,11460],{"class":101},"]\n",[91,11462,11463],{"class":93,"line":319},[91,11464,10581],{"class":101},[91,11466,11467],{"class":93,"line":334},[91,11468,11374],{"class":101},[91,11470,11471,11473,11475,11478],{"class":93,"line":355},[91,11472,11379],{"class":169},[91,11474,112],{"class":101},[91,11476,11477],{"class":169},"\"8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\"",[91,11479,7560],{"class":101},[91,11481,11482,11484,11486,11489],{"class":93,"line":364},[91,11483,11391],{"class":169},[91,11485,112],{"class":101},[91,11487,11488],{"class":169},"\"second-post\"",[91,11490,7560],{"class":101},[91,11492,11493,11495,11497,11500],{"class":93,"line":378},[91,11494,11403],{"class":169},[91,11496,112],{"class":101},[91,11498,11499],{"class":169},"\"두 번째 포스트\"",[91,11501,7560],{"class":101},[91,11503,11504,11506,11508,11510],{"class":93,"line":387},[91,11505,11415],{"class":169},[91,11507,112],{"class":101},[91,11509,11420],{"class":169},[91,11511,7560],{"class":101},[91,11513,11514,11516,11518,11520],{"class":93,"line":402},[91,11515,11427],{"class":169},[91,11517,112],{"class":101},[91,11519,11432],{"class":169},[91,11521,7560],{"class":101},[91,11523,11524,11526,11528,11530],{"class":93,"line":422},[91,11525,11439],{"class":169},[91,11527,112],{"class":101},[91,11529,11444],{"class":169},[91,11531,7560],{"class":101},[91,11533,11534,11536,11538,11540],{"class":93,"line":438},[91,11535,11451],{"class":169},[91,11537,11454],{"class":101},[91,11539,11457],{"class":169},[91,11541,11460],{"class":101},[91,11543,11544],{"class":93,"line":458},[91,11545,1698],{"class":101},[91,11547,11548],{"class":93,"line":467},[91,11549,11460],{"class":101},[16,11551,11552,11553,11556],{},"static 하게 직접 관리할 대상이기 때문에, ",[31,11554,11555],{},"public"," 폴더에 두었다. Vue 빌드 시 public 폴더 안의 내용물은 그대로 결과폴더에 복사되기 때문에, 깃헙에서 바로 읽어올 수 있다.",[82,11558,11562],{"className":11559,"code":11560,"language":11561,"meta":87,"style":87},"language-tsx shiki shiki-themes github-light github-dark","import { VuexModule, Module, Mutation, Action } from \"vuex-module-decorators\";\nimport axios from \"axios\";\n\nexport interface Post {\n  url: string;\n  fileName: string;\n    description: string;\n  title: string;\n  tags: string[];\n  data: string;\n}\n\n@Module({ namespaced: true, })\nclass Posts extends VuexModule {\n  public postList:Post[] = [];\n  public currentUrl = '';\n\n  get currentPost(): Post | undefined {\n    if(this.currentUrl == null || this.currentUrl == '' || this.postList.length \u003C= 0){\n      return undefined;\n    }\n    else {\n      return this.postList.find(post => {\n        return post.url === this.currentUrl;\n      })\n    }\n  }\n  \n  @Mutation\n  public setPostList(postList: Post[]) {\n    this.postList = postList;\n  }\n  @Mutation\n  public setCurrentUrl(currentUrl: string) {\n    this.currentUrl = currentUrl;\n  }\n\n  @Action\n  public requestGetPostList() {\n    axios.get(`\u002Fposts\u002Fpostlist.json`).then(res => {\n      this.context.commit(\"setPostList\", res.data);\n    });\n  }\n\n  @Action\n  public moveCurrentUrl(url: string) {\n    this.context.commit(\"setCurrentUrl\", url);\n  }\n}\n\nexport default Posts;\n","tsx",[31,11563,11564,11578,11592,11596,11608,11619,11630,11641,11652,11664,11675,11679,11683,11698,11714,11735,11748,11752,11774,11821,11830,11834,11841,11862,11877,11882,11886,11890,11894,11899,11918,11931,11935,11939,11957,11968,11972,11976,11981,11990,12015,12034,12038,12042,12046,12050,12068,12085,12090,12095,12100],{"__ignoreMap":87},[91,11565,11566,11568,11571,11573,11576],{"class":93,"line":94},[91,11567,2499],{"class":566},[91,11569,11570],{"class":101}," { VuexModule, Module, Mutation, Action } ",[91,11572,2505],{"class":566},[91,11574,11575],{"class":169}," \"vuex-module-decorators\"",[91,11577,118],{"class":101},[91,11579,11580,11582,11585,11587,11590],{"class":93,"line":105},[91,11581,2499],{"class":566},[91,11583,11584],{"class":101}," axios ",[91,11586,2505],{"class":566},[91,11588,11589],{"class":169}," \"axios\"",[91,11591,118],{"class":101},[91,11593,11594],{"class":93,"line":121},[91,11595,1450],{"emptyLinePlaceholder":846},[91,11597,11598,11600,11603,11606],{"class":93,"line":134},[91,11599,2574],{"class":566},[91,11601,11602],{"class":566}," interface",[91,11604,11605],{"class":97}," Post",[91,11607,102],{"class":101},[91,11609,11610,11613,11615,11617],{"class":93,"line":228},[91,11611,11612],{"class":1172},"  url",[91,11614,1208],{"class":566},[91,11616,1357],{"class":108},[91,11618,118],{"class":101},[91,11620,11621,11624,11626,11628],{"class":93,"line":250},[91,11622,11623],{"class":1172},"  fileName",[91,11625,1208],{"class":566},[91,11627,1357],{"class":108},[91,11629,118],{"class":101},[91,11631,11632,11635,11637,11639],{"class":93,"line":260},[91,11633,11634],{"class":1172},"    description",[91,11636,1208],{"class":566},[91,11638,1357],{"class":108},[91,11640,118],{"class":101},[91,11642,11643,11646,11648,11650],{"class":93,"line":274},[91,11644,11645],{"class":1172},"  title",[91,11647,1208],{"class":566},[91,11649,1357],{"class":108},[91,11651,118],{"class":101},[91,11653,11654,11657,11659,11661],{"class":93,"line":284},[91,11655,11656],{"class":1172},"  tags",[91,11658,1208],{"class":566},[91,11660,1357],{"class":108},[91,11662,11663],{"class":101},"[];\n",[91,11665,11666,11669,11671,11673],{"class":93,"line":299},[91,11667,11668],{"class":1172},"  data",[91,11670,1208],{"class":566},[91,11672,1357],{"class":108},[91,11674,118],{"class":101},[91,11676,11677],{"class":93,"line":319},[91,11678,137],{"class":101},[91,11680,11681],{"class":93,"line":334},[91,11682,1450],{"emptyLinePlaceholder":846},[91,11684,11685,11687,11690,11693,11695],{"class":93,"line":355},[91,11686,8412],{"class":101},[91,11688,11689],{"class":97},"Module",[91,11691,11692],{"class":101},"({ namespaced: ",[91,11694,7557],{"class":108},[91,11696,11697],{"class":101},", })\n",[91,11699,11700,11703,11706,11709,11712],{"class":93,"line":364},[91,11701,11702],{"class":566},"class",[91,11704,11705],{"class":97}," Posts",[91,11707,11708],{"class":566}," extends",[91,11710,11711],{"class":97}," VuexModule",[91,11713,102],{"class":101},[91,11715,11716,11719,11722,11724,11727,11730,11732],{"class":93,"line":378},[91,11717,11718],{"class":566},"  public",[91,11720,11721],{"class":1172}," postList",[91,11723,1208],{"class":566},[91,11725,11726],{"class":97},"Post",[91,11728,11729],{"class":101},"[] ",[91,11731,166],{"class":566},[91,11733,11734],{"class":101}," [];\n",[91,11736,11737,11739,11742,11744,11746],{"class":93,"line":387},[91,11738,11718],{"class":566},[91,11740,11741],{"class":1172}," currentUrl",[91,11743,1366],{"class":566},[91,11745,8014],{"class":169},[91,11747,118],{"class":101},[91,11749,11750],{"class":93,"line":402},[91,11751,1450],{"emptyLinePlaceholder":846},[91,11753,11754,11757,11760,11763,11765,11767,11769,11772],{"class":93,"line":422},[91,11755,11756],{"class":566},"  get",[91,11758,11759],{"class":97}," currentPost",[91,11761,11762],{"class":101},"()",[91,11764,1208],{"class":566},[91,11766,11605],{"class":97},[91,11768,1360],{"class":566},[91,11770,11771],{"class":108}," undefined",[91,11773,102],{"class":101},[91,11775,11776,11778,11780,11783,11786,11789,11791,11793,11796,11798,11800,11802,11804,11806,11809,11812,11815,11818],{"class":93,"line":438},[91,11777,8218],{"class":566},[91,11779,795],{"class":101},[91,11781,11782],{"class":108},"this",[91,11784,11785],{"class":101},".currentUrl ",[91,11787,11788],{"class":566},"==",[91,11790,1363],{"class":108},[91,11792,7954],{"class":566},[91,11794,11795],{"class":108}," this",[91,11797,11785],{"class":101},[91,11799,11788],{"class":566},[91,11801,8014],{"class":169},[91,11803,7954],{"class":566},[91,11805,11795],{"class":108},[91,11807,11808],{"class":101},".postList.",[91,11810,11811],{"class":108},"length",[91,11813,11814],{"class":566}," \u003C=",[91,11816,11817],{"class":108}," 0",[91,11819,11820],{"class":101},"){\n",[91,11822,11823,11826,11828],{"class":93,"line":458},[91,11824,11825],{"class":566},"      return",[91,11827,11771],{"class":108},[91,11829,118],{"class":101},[91,11831,11832],{"class":93,"line":467},[91,11833,1693],{"class":101},[91,11835,11836,11839],{"class":93,"line":481},[91,11837,11838],{"class":566},"    else",[91,11840,102],{"class":101},[91,11842,11843,11845,11847,11849,11852,11854,11857,11860],{"class":93,"line":490},[91,11844,11825],{"class":566},[91,11846,11795],{"class":108},[91,11848,11808],{"class":101},[91,11850,11851],{"class":97},"find",[91,11853,795],{"class":101},[91,11855,11856],{"class":1172},"post",[91,11858,11859],{"class":566}," =>",[91,11861,102],{"class":101},[91,11863,11864,11867,11870,11872,11874],{"class":93,"line":3310},[91,11865,11866],{"class":566},"        return",[91,11868,11869],{"class":101}," post.url ",[91,11871,9382],{"class":566},[91,11873,11795],{"class":108},[91,11875,11876],{"class":101},".currentUrl;\n",[91,11878,11879],{"class":93,"line":3315},[91,11880,11881],{"class":101},"      })\n",[91,11883,11884],{"class":93,"line":3321},[91,11885,1693],{"class":101},[91,11887,11888],{"class":93,"line":3327},[91,11889,1698],{"class":101},[91,11891,11892],{"class":93,"line":3333},[91,11893,1629],{"class":101},[91,11895,11896],{"class":93,"line":3338},[91,11897,11898],{"class":101},"  @Mutation\n",[91,11900,11901,11903,11906,11908,11911,11913,11915],{"class":93,"line":3343},[91,11902,11718],{"class":566},[91,11904,11905],{"class":97}," setPostList",[91,11907,795],{"class":101},[91,11909,11910],{"class":1172},"postList",[91,11912,1208],{"class":566},[91,11914,11605],{"class":97},[91,11916,11917],{"class":101},"[]) {\n",[91,11919,11920,11923,11926,11928],{"class":93,"line":7882},[91,11921,11922],{"class":108},"    this",[91,11924,11925],{"class":101},".postList ",[91,11927,166],{"class":566},[91,11929,11930],{"class":101}," postList;\n",[91,11932,11933],{"class":93,"line":7887},[91,11934,1698],{"class":101},[91,11936,11937],{"class":93,"line":7892},[91,11938,11898],{"class":101},[91,11940,11941,11943,11946,11948,11951,11953,11955],{"class":93,"line":7906},[91,11942,11718],{"class":566},[91,11944,11945],{"class":97}," setCurrentUrl",[91,11947,795],{"class":101},[91,11949,11950],{"class":1172},"currentUrl",[91,11952,1208],{"class":566},[91,11954,1357],{"class":108},[91,11956,3866],{"class":101},[91,11958,11959,11961,11963,11965],{"class":93,"line":7922},[91,11960,11922],{"class":108},[91,11962,11785],{"class":101},[91,11964,166],{"class":566},[91,11966,11967],{"class":101}," currentUrl;\n",[91,11969,11970],{"class":93,"line":7927},[91,11971,1698],{"class":101},[91,11973,11974],{"class":93,"line":7967},[91,11975,1450],{"emptyLinePlaceholder":846},[91,11977,11978],{"class":93,"line":7983},[91,11979,11980],{"class":101},"  @Action\n",[91,11982,11983,11985,11988],{"class":93,"line":7988},[91,11984,11718],{"class":566},[91,11986,11987],{"class":97}," requestGetPostList",[91,11989,2007],{"class":101},[91,11991,11992,11995,11997,11999,12002,12004,12006,12008,12011,12013],{"class":93,"line":7993},[91,11993,11994],{"class":101},"    axios.",[91,11996,5938],{"class":97},[91,11998,795],{"class":101},[91,12000,12001],{"class":169},"`\u002Fposts\u002Fpostlist.json`",[91,12003,8017],{"class":101},[91,12005,1200],{"class":97},[91,12007,795],{"class":101},[91,12009,12010],{"class":1172},"res",[91,12012,11859],{"class":566},[91,12014,102],{"class":101},[91,12016,12017,12020,12023,12026,12028,12031],{"class":93,"line":8000},[91,12018,12019],{"class":108},"      this",[91,12021,12022],{"class":101},".context.",[91,12024,12025],{"class":97},"commit",[91,12027,795],{"class":101},[91,12029,12030],{"class":169},"\"setPostList\"",[91,12032,12033],{"class":101},", res.data);\n",[91,12035,12036],{"class":93,"line":8040},[91,12037,7745],{"class":101},[91,12039,12040],{"class":93,"line":8046},[91,12041,1698],{"class":101},[91,12043,12044],{"class":93,"line":8080},[91,12045,1450],{"emptyLinePlaceholder":846},[91,12047,12048],{"class":93,"line":8086},[91,12049,11980],{"class":101},[91,12051,12053,12055,12058,12060,12062,12064,12066],{"class":93,"line":12052},46,[91,12054,11718],{"class":566},[91,12056,12057],{"class":97}," moveCurrentUrl",[91,12059,795],{"class":101},[91,12061,5177],{"class":1172},[91,12063,1208],{"class":566},[91,12065,1357],{"class":108},[91,12067,3866],{"class":101},[91,12069,12071,12073,12075,12077,12079,12082],{"class":93,"line":12070},47,[91,12072,11922],{"class":108},[91,12074,12022],{"class":101},[91,12076,12025],{"class":97},[91,12078,795],{"class":101},[91,12080,12081],{"class":169},"\"setCurrentUrl\"",[91,12083,12084],{"class":101},", url);\n",[91,12086,12088],{"class":93,"line":12087},48,[91,12089,1698],{"class":101},[91,12091,12093],{"class":93,"line":12092},49,[91,12094,137],{"class":101},[91,12096,12098],{"class":93,"line":12097},50,[91,12099,1450],{"emptyLinePlaceholder":846},[91,12101,12103,12105,12108],{"class":93,"line":12102},51,[91,12104,2574],{"class":566},[91,12106,12107],{"class":566}," default",[91,12109,12110],{"class":101}," Posts;\n",[16,12112,12113],{},"posts store의 기능은 다음과 같다.",[4530,12115,12116,12122],{},[27,12117,12118,12121],{},[792,12119,12120],{},"포스트 목록을 postlist.json 에서 읽어오기(사이트 접속 시 한 번)","\n사이트 접속 시 한 번이라고 판단한 근거는 기술 블로그를 찾아다닐 때는 보통 구글링을 통해서 유입된다. 그렇다고 한번 들어온 사람이 그 블로그의 다른 글까지도 샅샅이 뒤져보는 경우는 거의 없다. 원하는 정보를 확인한 후 바로 나가는 것이 태반이다. 또 대부분 최신의 포스팅 보다는 최소 한 두달 전의 게시글을 확인하기 마련이며, 글 목록을 계속해서 갱신할 필요는 없다고 판단했다.",[27,12123,12124,12127],{},[792,12125,12126],{},"포스트 페이지에서 전달받은 포스트 url 을 갖고 해당하는 포스트를 조회한다.(포스트 페이지 진입 시)","\n이 부분은 갖고 있는 포스팅 목록에서 단순히 조회하는 기능이다. 추후에 글이 엄청 많아져서 조회에 걸리는 데 부하가 걸리면 행복한 고민이니까 나중에 하자.",[82,12129,12131],{"className":11559,"code":12130,"language":11561,"meta":87,"style":87},"\u002F\u002F App.vue\nimport { useStore } from 'vuex';\nconst store = useStore();\nstore.dispatch(\"Posts\u002FrequestGetPostList\");\n",[31,12132,12133,12138,12152,12166],{"__ignoreMap":87},[91,12134,12135],{"class":93,"line":94},[91,12136,12137],{"class":1343},"\u002F\u002F App.vue\n",[91,12139,12140,12142,12145,12147,12150],{"class":93,"line":105},[91,12141,2499],{"class":566},[91,12143,12144],{"class":101}," { useStore } ",[91,12146,2505],{"class":566},[91,12148,12149],{"class":169}," 'vuex'",[91,12151,118],{"class":101},[91,12153,12154,12156,12159,12161,12164],{"class":93,"line":121},[91,12155,1968],{"class":566},[91,12157,12158],{"class":108}," store",[91,12160,1366],{"class":566},[91,12162,12163],{"class":97}," useStore",[91,12165,2030],{"class":101},[91,12167,12168,12171,12174,12176,12179],{"class":93,"line":134},[91,12169,12170],{"class":101},"store.",[91,12172,12173],{"class":97},"dispatch",[91,12175,795],{"class":101},[91,12177,12178],{"class":169},"\"Posts\u002FrequestGetPostList\"",[91,12180,1594],{"class":101},[16,12182,12183,12184,12187],{},"사이트 최초 접속 시에만 포스트 목록을 가져오게끔 ",[31,12185,12186],{},"App.vue"," 의 setup 훅에서 조회하도록 했다.",[82,12189,12191],{"className":11559,"code":12190,"language":11561,"meta":87,"style":87},"\u002F\u002F DetailView.vue\nimport { ref, defineProps, onMounted, computed } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { useStore } from 'vuex';\n\nconst store = useStore();\nconst route = useRoute();\nconst paramId = route.params.id;\n\nstore.dispatch(\"Posts\u002FmoveCurrentUrl\", paramId);\nconst post = computed(() => {\n  return store.getters[\"Posts\u002FcurrentPost\"];\n});\n",[31,12192,12193,12198,12211,12225,12237,12241,12253,12267,12279,12283,12297,12315,12328],{"__ignoreMap":87},[91,12194,12195],{"class":93,"line":94},[91,12196,12197],{"class":1343},"\u002F\u002F DetailView.vue\n",[91,12199,12200,12202,12205,12207,12209],{"class":93,"line":105},[91,12201,2499],{"class":566},[91,12203,12204],{"class":101}," { ref, defineProps, onMounted, computed } ",[91,12206,2505],{"class":566},[91,12208,2508],{"class":169},[91,12210,118],{"class":101},[91,12212,12213,12215,12218,12220,12223],{"class":93,"line":121},[91,12214,2499],{"class":566},[91,12216,12217],{"class":101}," { useRoute } ",[91,12219,2505],{"class":566},[91,12221,12222],{"class":169}," 'vue-router'",[91,12224,118],{"class":101},[91,12226,12227,12229,12231,12233,12235],{"class":93,"line":134},[91,12228,2499],{"class":566},[91,12230,12144],{"class":101},[91,12232,2505],{"class":566},[91,12234,12149],{"class":169},[91,12236,118],{"class":101},[91,12238,12239],{"class":93,"line":228},[91,12240,1450],{"emptyLinePlaceholder":846},[91,12242,12243,12245,12247,12249,12251],{"class":93,"line":250},[91,12244,1968],{"class":566},[91,12246,12158],{"class":108},[91,12248,1366],{"class":566},[91,12250,12163],{"class":97},[91,12252,2030],{"class":101},[91,12254,12255,12257,12260,12262,12265],{"class":93,"line":260},[91,12256,1968],{"class":566},[91,12258,12259],{"class":108}," route",[91,12261,1366],{"class":566},[91,12263,12264],{"class":97}," useRoute",[91,12266,2030],{"class":101},[91,12268,12269,12271,12274,12276],{"class":93,"line":274},[91,12270,1968],{"class":566},[91,12272,12273],{"class":108}," paramId",[91,12275,1366],{"class":566},[91,12277,12278],{"class":101}," route.params.id;\n",[91,12280,12281],{"class":93,"line":284},[91,12282,1450],{"emptyLinePlaceholder":846},[91,12284,12285,12287,12289,12291,12294],{"class":93,"line":299},[91,12286,12170],{"class":101},[91,12288,12173],{"class":97},[91,12290,795],{"class":101},[91,12292,12293],{"class":169},"\"Posts\u002FmoveCurrentUrl\"",[91,12295,12296],{"class":101},", paramId);\n",[91,12298,12299,12301,12304,12306,12309,12311,12313],{"class":93,"line":319},[91,12300,1968],{"class":566},[91,12302,12303],{"class":108}," post",[91,12305,1366],{"class":566},[91,12307,12308],{"class":97}," computed",[91,12310,2088],{"class":101},[91,12312,1179],{"class":566},[91,12314,102],{"class":101},[91,12316,12317,12319,12322,12325],{"class":93,"line":334},[91,12318,2695],{"class":566},[91,12320,12321],{"class":101}," store.getters[",[91,12323,12324],{"class":169},"\"Posts\u002FcurrentPost\"",[91,12326,12327],{"class":101},"];\n",[91,12329,12330],{"class":93,"line":355},[91,12331,1303],{"class":101},[16,12333,12334],{},"DetailView 가 포스트 내용을 보여줄 뷰인데, 포스트 url 을 확인한 후 해당하는 포스트 데이터를 가져오게 했다.",[16,12336,12337],{},[19,12338],{"alt":21,"src":12339},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled8.png",[16,12341,12342],{},"이걸 토대로 글 목록을 보여주니 잘 나온다.",[49,12344,12346],{"id":12345},"markdown-적용하기","Markdown 적용하기",[16,12348,12349],{},"나는 개발 노트를 2014년부터 사용했는데, 에버노트 - Typora - Joplin - 노션 순서로 넘어왔다. Typora 와 Joplin 은 사용기간이 매우 짧아서 에버노트 사용 후 노션으로 넘어왔다고 봐도 무방하다. 그 이유가 마크다운이었던 만큼, 개발 블로그는 무조건 마크다운이다 라고 생각했다.",[82,12351,12353],{"className":11559,"code":12352,"language":11561,"meta":87,"style":87},"npm i showdown\nnpm i showdown-table\n",[31,12354,12355,12360],{"__ignoreMap":87},[91,12356,12357],{"class":93,"line":94},[91,12358,12359],{"class":101},"npm i showdown\n",[91,12361,12362,12365,12367],{"class":93,"line":105},[91,12363,12364],{"class":101},"npm i showdown",[91,12366,8409],{"class":566},[91,12368,12369],{"class":101},"table\n",[16,12371,12372,12375],{},[792,12373,12374],{},"showdown"," 이라는 라이브러리를 사용할 것이다. 참고한 블로그에서 사용했기 때문이다. 왠지 마크다운 변환 라이브러리가 많을 것 같아서 다 알아봐야하는 데 시간 좀 걸리겠다 했는데, 빠르게 정할 수 있었다. 이 라이브러리는 단순하게 md 데이터를 html 로 마크업해주는 역할이다. 단순 스트링을 인자로 넘겨주면 된다.",[16,12377,12378,12381],{},[792,12379,12380],{},"showdown-table"," 은 이름 그대로 table 까지 지원해주는 확장라이브러리이다. 그 말은 즉슨 showdown 라이브러리에서는 기본으로 지워하지 않는다는 뜻이다.",[82,12383,12385],{"className":11559,"code":12384,"language":11561,"meta":87,"style":87},"\u002F\u002F src\u002Fstore\u002Fposts.ts\n@Action\npublic requestGetMarkdoen(postName: string) {\n  return axios.get(`\u002Fposts\u002F${postName}.md`).then(res => {\n    const markdownPost = res.data;\n    **const converter = new showdown.Converter()**\n        converter.setOption('tables', true);\n    **const md2html = converter.makeHtml(markdownPost);\n    return md2html;**\n  });\n}\n",[31,12386,12387,12392,12397,12408,12440,12452,12475,12494,12512,12521,12525],{"__ignoreMap":87},[91,12388,12389],{"class":93,"line":94},[91,12390,12391],{"class":1343},"\u002F\u002F src\u002Fstore\u002Fposts.ts\n",[91,12393,12394],{"class":93,"line":105},[91,12395,12396],{"class":101},"@Action\n",[91,12398,12399,12402,12405],{"class":93,"line":121},[91,12400,12401],{"class":101},"public ",[91,12403,12404],{"class":97},"requestGetMarkdoen",[91,12406,12407],{"class":101},"(postName: string) {\n",[91,12409,12410,12412,12415,12417,12419,12422,12425,12428,12430,12432,12434,12436,12438],{"class":93,"line":134},[91,12411,2695],{"class":566},[91,12413,12414],{"class":101}," axios.",[91,12416,5938],{"class":97},[91,12418,795],{"class":101},[91,12420,12421],{"class":169},"`\u002Fposts\u002F${",[91,12423,12424],{"class":101},"postName",[91,12426,12427],{"class":169},"}.md`",[91,12429,8017],{"class":101},[91,12431,1200],{"class":97},[91,12433,795],{"class":101},[91,12435,12010],{"class":1172},[91,12437,11859],{"class":566},[91,12439,102],{"class":101},[91,12441,12442,12444,12447,12449],{"class":93,"line":228},[91,12443,1382],{"class":566},[91,12445,12446],{"class":108}," markdownPost",[91,12448,1366],{"class":566},[91,12450,12451],{"class":101}," res.data;\n",[91,12453,12454,12457,12460,12462,12464,12467,12470,12472],{"class":93,"line":250},[91,12455,12456],{"class":566},"    **const",[91,12458,12459],{"class":108}," converter",[91,12461,1366],{"class":566},[91,12463,2676],{"class":566},[91,12465,12466],{"class":101}," showdown.",[91,12468,12469],{"class":97},"Converter",[91,12471,11762],{"class":101},[91,12473,12474],{"class":566},"**\n",[91,12476,12477,12480,12483,12485,12488,12490,12492],{"class":93,"line":260},[91,12478,12479],{"class":101},"        converter.",[91,12481,12482],{"class":97},"setOption",[91,12484,795],{"class":101},[91,12486,12487],{"class":169},"'tables'",[91,12489,64],{"class":101},[91,12491,7557],{"class":108},[91,12493,1594],{"class":101},[91,12495,12496,12498,12501,12503,12506,12509],{"class":93,"line":274},[91,12497,12456],{"class":566},[91,12499,12500],{"class":108}," md2html",[91,12502,1366],{"class":566},[91,12504,12505],{"class":101}," converter.",[91,12507,12508],{"class":97},"makeHtml",[91,12510,12511],{"class":101},"(markdownPost);\n",[91,12513,12514,12516,12519],{"class":93,"line":284},[91,12515,7717],{"class":566},[91,12517,12518],{"class":101}," md2html;",[91,12520,12474],{"class":566},[91,12522,12523],{"class":93,"line":299},[91,12524,7575],{"class":101},[91,12526,12527],{"class":93,"line":319},[91,12528,137],{"class":101},[16,12530,12531,12532,12534,12535,12540],{},"사용 방법도 간단하다. converter 를 할당해주고, ",[31,12533,12508],{}," 함수를 호출하면 끝이다. table 확장을 추가할 때, 공식 Github 문서에서는 ",[792,12536,12537],{},[31,12538,12539],{},"new showdown.Converter({ extensions: ['table'] })"," 로 사용하라고 하지만, md 변환이 전혀 안되는 문제가 있어서 다른 방법을 찾았다.",[82,12542,12544],{"className":11559,"code":12543,"language":11561,"meta":87,"style":87},"\u002F\u002F DetailView.vue\n\u003Cdiv v-html=\"postContents\">\u003C\u002Fdiv>\n\n\u002F\u002F script\nonMounted(() => {\n  store.dispatch(\"Posts\u002FrequestGetMarkdoen\", post.value.fileName).then((res) => {\n    postContents.value = res;\n  })\n})\n",[31,12545,12546,12550,12571,12575,12580,12590,12617,12627,12632],{"__ignoreMap":87},[91,12547,12548],{"class":93,"line":94},[91,12549,12197],{"class":1343},[91,12551,12552,12554,12556,12559,12561,12564,12567,12569],{"class":93,"line":105},[91,12553,156],{"class":101},[91,12555,160],{"class":159},[91,12557,12558],{"class":97}," v-html",[91,12560,166],{"class":566},[91,12562,12563],{"class":169},"\"postContents\"",[91,12565,12566],{"class":101},">\u003C\u002F",[91,12568,160],{"class":159},[91,12570,173],{"class":101},[91,12572,12573],{"class":93,"line":121},[91,12574,1450],{"emptyLinePlaceholder":846},[91,12576,12577],{"class":93,"line":134},[91,12578,12579],{"class":1343},"\u002F\u002F script\n",[91,12581,12582,12584,12586,12588],{"class":93,"line":228},[91,12583,2085],{"class":97},[91,12585,2088],{"class":101},[91,12587,1179],{"class":566},[91,12589,102],{"class":101},[91,12591,12592,12595,12597,12599,12602,12605,12607,12609,12611,12613,12615],{"class":93,"line":250},[91,12593,12594],{"class":101},"  store.",[91,12596,12173],{"class":97},[91,12598,795],{"class":101},[91,12600,12601],{"class":169},"\"Posts\u002FrequestGetMarkdoen\"",[91,12603,12604],{"class":101},", post.value.fileName).",[91,12606,1200],{"class":97},[91,12608,1169],{"class":101},[91,12610,12010],{"class":1172},[91,12612,1176],{"class":101},[91,12614,1179],{"class":566},[91,12616,102],{"class":101},[91,12618,12619,12622,12624],{"class":93,"line":260},[91,12620,12621],{"class":101},"    postContents.value ",[91,12623,166],{"class":566},[91,12625,12626],{"class":101}," res;\n",[91,12628,12629],{"class":93,"line":274},[91,12630,12631],{"class":101},"  })\n",[91,12633,12634],{"class":93,"line":284},[91,12635,9444],{"class":101},[16,12637,12638],{},"DOM의 innerValue 로 넣어주면 간단하게 md 로 작성했던 포스팅이 html 이 렌더링된다. 간단-",[49,12640,12642],{"id":12641},"prerendering","Prerendering",[16,12644,12645],{},"Github Pages 특성상 SPA 지원을 안하기 때문에, 홈이 아닌 다른 URL을 접속하려고 하면 404 페이지가 뜬다. 물론 SPA 사이트도 홈에서 라우팅을 한다면 작동은 하겠지만은 누가 블로그를 홈에서부터 여행을 하겠는가. 구글엔진은 SPA도 js를 실행해 크롤링한다고는 하는데, Github Pages는 홈을 제외한 페이지에 아예 접속조차 안되며, SEO도 신경써야하니 Prerendering 은 필수이다.",[82,12647,12649],{"className":11559,"code":12648,"language":11561,"meta":87,"style":87},"npm i -D prerender-spa-plugin -> webpack4\nnpm i -D prerender-spa-wp5-plugin -> webpack5\n",[31,12650,12651,12680],{"__ignoreMap":87},[91,12652,12653,12656,12658,12661,12664,12666,12669,12671,12674,12677],{"class":93,"line":94},[91,12654,12655],{"class":101},"npm i ",[91,12657,8409],{"class":566},[91,12659,12660],{"class":108},"D",[91,12662,12663],{"class":101}," prerender",[91,12665,8409],{"class":566},[91,12667,12668],{"class":101},"spa",[91,12670,8409],{"class":566},[91,12672,12673],{"class":101},"plugin ",[91,12675,12676],{"class":566},"->",[91,12678,12679],{"class":101}," webpack4\n",[91,12681,12682,12684,12686,12688,12690,12692,12694,12696,12699,12701,12703,12705],{"class":93,"line":105},[91,12683,12655],{"class":101},[91,12685,8409],{"class":566},[91,12687,12660],{"class":108},[91,12689,12663],{"class":101},[91,12691,8409],{"class":566},[91,12693,12668],{"class":101},[91,12695,8409],{"class":566},[91,12697,12698],{"class":101},"wp5",[91,12700,8409],{"class":566},[91,12702,12673],{"class":101},[91,12704,12676],{"class":566},[91,12706,12707],{"class":101}," webpack5\n",[16,12709,12710],{},"한참 애를 먹었던 녀석이다. 참고하던 블로그에서는 Vue가 내부적으로 Webpack4 를 사용해서 원본 라이브러리로도 잘 돌아가지만, 내가 만든 프로젝트에서는 계속 에러가 발생했다.",[1722,12712,12713],{},[16,12714,12715,12718],{},[91,12716,12717],{},"prerender-spa-plugin"," Unable to prerender all routes!",[16,12720,12721],{},"바로 이 에러인데, 내용도 모른다. 콜스택은 에러를 뿌려주는 코드의 에러로만 나타나서 어디가 문제인지도 한눈에 알아볼 수 없었다.",[16,12723,12724],{},"개같이 찾아봤지만 확실한 답을 얻지 못하고, 아예 라이브러리 소스를 디버깅해보기로 했다. 저 에러를 콘솔에 찍는 부분부터 역으로 코드를 확인해서 답을 얻었다.",[16,12726,12727,12728,12731,12732,12735],{},"Webpack5 에서의 ",[31,12729,12730],{},"complier.outputFileSystem"," 에는 ",[31,12733,12734],{},"mkdirp"," 가 없는데, 이걸 사용하려고 해서 에러가 발생했다. Webpack5로의 마이그레이션이 전혀 안된 것이다. 그제야 Github에서도 2018년에 업데이트가 끝났다는 걸 확인했다.",[16,12737,12738],{},"소스를 바꿔서 사용해야하나 싶었다.",[82,12740,12742],{"className":11559,"code":12741,"language":11561,"meta":87,"style":87},"\u002F\u002F node_modules\u002Fprerender-spa-plugin\u002Fes6\u002Findex.js\n\n\u002F\u002F 58 line\n\u002F\u002F mkdirp 함수를 대체한다.\nconst mkdirp = function (dir, opts) {\n  return new Promise((resolve, reject) => {\n    console.log('\\ndir', dir, opts, '\\n');\n    try {\n      compilerFS.mkdirp(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))\n    } catch(e) {\n      compilerFS.mkdir(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))\n    }\n  })\n}\n\n\u002F\u002F 124 line\n\u002F\u002F recursive 옵션을 추가해준다.\nreturn mkdirp(path.dirname(processedRoute.outputPath), {recursive: true}) \n",[31,12743,12744,12749,12753,12758,12763,12786,12808,12836,12843,12889,12899,12936,12940,12944,12948,12952,12957,12962],{"__ignoreMap":87},[91,12745,12746],{"class":93,"line":94},[91,12747,12748],{"class":1343},"\u002F\u002F node_modules\u002Fprerender-spa-plugin\u002Fes6\u002Findex.js\n",[91,12750,12751],{"class":93,"line":105},[91,12752,1450],{"emptyLinePlaceholder":846},[91,12754,12755],{"class":93,"line":121},[91,12756,12757],{"class":1343},"\u002F\u002F 58 line\n",[91,12759,12760],{"class":93,"line":134},[91,12761,12762],{"class":1343},"\u002F\u002F mkdirp 함수를 대체한다.\n",[91,12764,12765,12767,12770,12772,12774,12776,12779,12781,12784],{"class":93,"line":228},[91,12766,1968],{"class":566},[91,12768,12769],{"class":97}," mkdirp",[91,12771,1366],{"class":566},[91,12773,2001],{"class":566},[91,12775,2662],{"class":101},[91,12777,12778],{"class":1172},"dir",[91,12780,64],{"class":101},[91,12782,12783],{"class":1172},"opts",[91,12785,3866],{"class":101},[91,12787,12788,12790,12792,12794,12796,12798,12800,12802,12804,12806],{"class":93,"line":250},[91,12789,2695],{"class":566},[91,12791,2676],{"class":566},[91,12793,1976],{"class":108},[91,12795,1169],{"class":101},[91,12797,1930],{"class":1172},[91,12799,64],{"class":101},[91,12801,2065],{"class":1172},[91,12803,1176],{"class":101},[91,12805,1179],{"class":566},[91,12807,102],{"class":101},[91,12809,12810,12812,12814,12816,12819,12822,12825,12828,12830,12832,12834],{"class":93,"line":260},[91,12811,2454],{"class":101},[91,12813,1225],{"class":97},[91,12815,795],{"class":101},[91,12817,12818],{"class":169},"'",[91,12820,12821],{"class":108},"\\n",[91,12823,12824],{"class":169},"dir'",[91,12826,12827],{"class":101},", dir, opts, ",[91,12829,12818],{"class":169},[91,12831,12821],{"class":108},[91,12833,12818],{"class":169},[91,12835,1594],{"class":101},[91,12837,12838,12841],{"class":93,"line":274},[91,12839,12840],{"class":566},"    try",[91,12842,102],{"class":101},[91,12844,12845,12848,12850,12853,12856,12858,12861,12863,12865,12868,12870,12872,12875,12878,12881,12883,12886],{"class":93,"line":284},[91,12846,12847],{"class":101},"      compilerFS.",[91,12849,12734],{"class":97},[91,12851,12852],{"class":101},"(dir, opts, (",[91,12854,12855],{"class":1172},"err",[91,12857,64],{"class":101},[91,12859,12860],{"class":1172},"made",[91,12862,1176],{"class":101},[91,12864,1179],{"class":566},[91,12866,12867],{"class":101}," err ",[91,12869,9382],{"class":566},[91,12871,1363],{"class":108},[91,12873,12874],{"class":566}," ?",[91,12876,12877],{"class":97}," resolve",[91,12879,12880],{"class":101},"(made) ",[91,12882,1208],{"class":566},[91,12884,12885],{"class":97}," reject",[91,12887,12888],{"class":101},"(err))\n",[91,12890,12891,12894,12896],{"class":93,"line":299},[91,12892,12893],{"class":101},"    } ",[91,12895,1256],{"class":566},[91,12897,12898],{"class":101},"(e) {\n",[91,12900,12901,12903,12906,12908,12910,12912,12914,12916,12918,12920,12922,12924,12926,12928,12930,12932,12934],{"class":93,"line":319},[91,12902,12847],{"class":101},[91,12904,12905],{"class":97},"mkdir",[91,12907,12852],{"class":101},[91,12909,12855],{"class":1172},[91,12911,64],{"class":101},[91,12913,12860],{"class":1172},[91,12915,1176],{"class":101},[91,12917,1179],{"class":566},[91,12919,12867],{"class":101},[91,12921,9382],{"class":566},[91,12923,1363],{"class":108},[91,12925,12874],{"class":566},[91,12927,12877],{"class":97},[91,12929,12880],{"class":101},[91,12931,1208],{"class":566},[91,12933,12885],{"class":97},[91,12935,12888],{"class":101},[91,12937,12938],{"class":93,"line":334},[91,12939,1693],{"class":101},[91,12941,12942],{"class":93,"line":355},[91,12943,12631],{"class":101},[91,12945,12946],{"class":93,"line":364},[91,12947,137],{"class":101},[91,12949,12950],{"class":93,"line":378},[91,12951,1450],{"emptyLinePlaceholder":846},[91,12953,12954],{"class":93,"line":387},[91,12955,12956],{"class":1343},"\u002F\u002F 124 line\n",[91,12958,12959],{"class":93,"line":402},[91,12960,12961],{"class":1343},"\u002F\u002F recursive 옵션을 추가해준다.\n",[91,12963,12964,12967,12969,12972,12975,12978,12980],{"class":93,"line":422},[91,12965,12966],{"class":566},"return",[91,12968,12769],{"class":97},[91,12970,12971],{"class":101},"(path.",[91,12973,12974],{"class":97},"dirname",[91,12976,12977],{"class":101},"(processedRoute.outputPath), {recursive: ",[91,12979,7557],{"class":108},[91,12981,9444],{"class":101},[16,12983,12984,12985,12987,12988,12990,12991,12994],{},"소스 수정 항목은 매우 간단하다. ",[31,12986,12905],{}," 함수로 바꾸면 되는데 이러면 또 문제가 생긴다. 포스팅 여러개를 렌더링할 때 ",[31,12989,12905],{}," 을 여러번 호출하는데, 중복이 된 경우에도 예외가 발생해서 렌더링이 안된다. 그래서 ",[31,12992,12993],{},"recursive"," 옵션까지 주어야 완벽하게 호환이 된다.",[16,12996,12997,12998,13000,13001,13004],{},"하지만 문제는 Github Actions 를 사용한다는 것이다. Actions 가 실행될 때는 ",[31,12999,11291],{}," 로 종속성 다운로드 후 바로 빌드를 하기 때문에 바뀐 소스를 적용하지 못한다. 그래서 결국 Webpack5 버전으로 누군가 새로 올려준 라이브러리를 받아서 진행했다. 그게 ",[31,13002,13003],{},"prerender-spa-wp5-plugin"," 이다.",[82,13006,13008],{"className":11559,"code":13007,"language":11561,"meta":87,"style":87},"const path = require('path')\nconst PrerenderSpaPlugin = require('prerender-spa-wp5-plugin')\n\nconst posts = require('.\u002Fpublic\u002Fposts\u002Fpostlist.json')\nconst routes = posts.map(post => `\u002F${post.url}`)\nconst paths = posts.map(post => {\n  return { \n    path: `\u002F${post.name}\u002F`,\n    lastmod: post.lastmod || post.date,\n    changefreq: 'yearly'\n  }\n})\n\nmodule.exports = [\n  new PrerenderSpaPlugin({\n    staticDir: path.join(__dirname, 'dist'),\n    routes: [\"\u002F\", ...routes],\n    renderer: new PrerenderSpaPlugin.PuppeteerRenderer({\n      renderAfterElementExists: '#app',\n    }),\n  }),\n];\n\u002F\u002F vue.config.js\nconst webpackPlugins = require('.\u002Fwebpack.plugin');\nmodule.exports = {\n    configureWebpack: (config) => {\n      if (process.env.NODE_ENV === 'production') {\n        config.plugins.push(...webpackPlugins); \u002F\u002F 상단에서 정의한 postPlugins 내용 삽입\n      }\n    },\n}\n",[31,13009,13010,13029,13047,13051,13069,13103,13124,13131,13150,13160,13168,13172,13176,13180,13193,13202,13218,13233,13249,13259,13263,13268,13272,13276,13294,13306,13322,13341,13359,13363,13367],{"__ignoreMap":87},[91,13011,13012,13014,13017,13019,13022,13024,13027],{"class":93,"line":94},[91,13013,1968],{"class":566},[91,13015,13016],{"class":108}," path",[91,13018,1366],{"class":566},[91,13020,13021],{"class":97}," require",[91,13023,795],{"class":101},[91,13025,13026],{"class":169},"'path'",[91,13028,3487],{"class":101},[91,13030,13031,13033,13036,13038,13040,13042,13045],{"class":93,"line":105},[91,13032,1968],{"class":566},[91,13034,13035],{"class":108}," PrerenderSpaPlugin",[91,13037,1366],{"class":566},[91,13039,13021],{"class":97},[91,13041,795],{"class":101},[91,13043,13044],{"class":169},"'prerender-spa-wp5-plugin'",[91,13046,3487],{"class":101},[91,13048,13049],{"class":93,"line":121},[91,13050,1450],{"emptyLinePlaceholder":846},[91,13052,13053,13055,13058,13060,13062,13064,13067],{"class":93,"line":134},[91,13054,1968],{"class":566},[91,13056,13057],{"class":108}," posts",[91,13059,1366],{"class":566},[91,13061,13021],{"class":97},[91,13063,795],{"class":101},[91,13065,13066],{"class":169},"'.\u002Fpublic\u002Fposts\u002Fpostlist.json'",[91,13068,3487],{"class":101},[91,13070,13071,13073,13076,13078,13081,13084,13086,13088,13090,13093,13095,13097,13099,13101],{"class":93,"line":228},[91,13072,1968],{"class":566},[91,13074,13075],{"class":108}," routes",[91,13077,1366],{"class":566},[91,13079,13080],{"class":101}," posts.",[91,13082,13083],{"class":97},"map",[91,13085,795],{"class":101},[91,13087,11856],{"class":1172},[91,13089,11859],{"class":566},[91,13091,13092],{"class":169}," `\u002F${",[91,13094,11856],{"class":101},[91,13096,1235],{"class":169},[91,13098,5177],{"class":101},[91,13100,1241],{"class":169},[91,13102,3487],{"class":101},[91,13104,13105,13107,13110,13112,13114,13116,13118,13120,13122],{"class":93,"line":250},[91,13106,1968],{"class":566},[91,13108,13109],{"class":108}," paths",[91,13111,1366],{"class":566},[91,13113,13080],{"class":101},[91,13115,13083],{"class":97},[91,13117,795],{"class":101},[91,13119,11856],{"class":1172},[91,13121,11859],{"class":566},[91,13123,102],{"class":101},[91,13125,13126,13128],{"class":93,"line":260},[91,13127,2695],{"class":566},[91,13129,13130],{"class":101}," { \n",[91,13132,13133,13136,13139,13141,13143,13145,13148],{"class":93,"line":274},[91,13134,13135],{"class":101},"    path: ",[91,13137,13138],{"class":169},"`\u002F${",[91,13140,11856],{"class":101},[91,13142,1235],{"class":169},[91,13144,1238],{"class":101},[91,13146,13147],{"class":169},"}\u002F`",[91,13149,7560],{"class":101},[91,13151,13152,13155,13157],{"class":93,"line":284},[91,13153,13154],{"class":101},"    lastmod: post.lastmod ",[91,13156,7829],{"class":566},[91,13158,13159],{"class":101}," post.date,\n",[91,13161,13162,13165],{"class":93,"line":299},[91,13163,13164],{"class":101},"    changefreq: ",[91,13166,13167],{"class":169},"'yearly'\n",[91,13169,13170],{"class":93,"line":319},[91,13171,1698],{"class":101},[91,13173,13174],{"class":93,"line":334},[91,13175,9444],{"class":101},[91,13177,13178],{"class":93,"line":355},[91,13179,1450],{"emptyLinePlaceholder":846},[91,13181,13182,13184,13186,13188,13190],{"class":93,"line":364},[91,13183,10966],{"class":108},[91,13185,1235],{"class":101},[91,13187,10971],{"class":108},[91,13189,1366],{"class":566},[91,13191,13192],{"class":101}," [\n",[91,13194,13195,13198,13200],{"class":93,"line":378},[91,13196,13197],{"class":566},"  new",[91,13199,13035],{"class":97},[91,13201,7549],{"class":101},[91,13203,13204,13207,13210,13213,13216],{"class":93,"line":387},[91,13205,13206],{"class":101},"    staticDir: path.",[91,13208,13209],{"class":97},"join",[91,13211,13212],{"class":101},"(__dirname, ",[91,13214,13215],{"class":169},"'dist'",[91,13217,8037],{"class":101},[91,13219,13220,13223,13226,13228,13230],{"class":93,"line":402},[91,13221,13222],{"class":101},"    routes: [",[91,13224,13225],{"class":169},"\"\u002F\"",[91,13227,64],{"class":101},[91,13229,1442],{"class":566},[91,13231,13232],{"class":101},"routes],\n",[91,13234,13235,13238,13241,13244,13247],{"class":93,"line":422},[91,13236,13237],{"class":101},"    renderer: ",[91,13239,13240],{"class":566},"new",[91,13242,13243],{"class":101}," PrerenderSpaPlugin.",[91,13245,13246],{"class":97},"PuppeteerRenderer",[91,13248,7549],{"class":101},[91,13250,13251,13254,13257],{"class":93,"line":438},[91,13252,13253],{"class":101},"      renderAfterElementExists: ",[91,13255,13256],{"class":169},"'#app'",[91,13258,7560],{"class":101},[91,13260,13261],{"class":93,"line":458},[91,13262,10100],{"class":101},[91,13264,13265],{"class":93,"line":467},[91,13266,13267],{"class":101},"  }),\n",[91,13269,13270],{"class":93,"line":481},[91,13271,12327],{"class":101},[91,13273,13274],{"class":93,"line":490},[91,13275,10961],{"class":1343},[91,13277,13278,13280,13283,13285,13287,13289,13292],{"class":93,"line":3310},[91,13279,1968],{"class":566},[91,13281,13282],{"class":108}," webpackPlugins",[91,13284,1366],{"class":566},[91,13286,13021],{"class":97},[91,13288,795],{"class":101},[91,13290,13291],{"class":169},"'.\u002Fwebpack.plugin'",[91,13293,1594],{"class":101},[91,13295,13296,13298,13300,13302,13304],{"class":93,"line":3315},[91,13297,10966],{"class":108},[91,13299,1235],{"class":101},[91,13301,10971],{"class":108},[91,13303,1366],{"class":566},[91,13305,102],{"class":101},[91,13307,13308,13311,13313,13316,13318,13320],{"class":93,"line":3321},[91,13309,13310],{"class":97},"    configureWebpack",[91,13312,6549],{"class":101},[91,13314,13315],{"class":1172},"config",[91,13317,1176],{"class":101},[91,13319,1179],{"class":566},[91,13321,102],{"class":101},[91,13323,13324,13327,13330,13333,13336,13339],{"class":93,"line":3327},[91,13325,13326],{"class":566},"      if",[91,13328,13329],{"class":101}," (process.env.",[91,13331,13332],{"class":108},"NODE_ENV",[91,13334,13335],{"class":566}," ===",[91,13337,13338],{"class":169}," 'production'",[91,13340,3866],{"class":101},[91,13342,13343,13346,13349,13351,13353,13356],{"class":93,"line":3333},[91,13344,13345],{"class":101},"        config.plugins.",[91,13347,13348],{"class":97},"push",[91,13350,795],{"class":101},[91,13352,1442],{"class":566},[91,13354,13355],{"class":101},"webpackPlugins); ",[91,13357,13358],{"class":1343},"\u002F\u002F 상단에서 정의한 postPlugins 내용 삽입\n",[91,13360,13361],{"class":93,"line":3338},[91,13362,10095],{"class":101},[91,13364,13365],{"class":93,"line":3343},[91,13366,3477],{"class":101},[91,13368,13369],{"class":93,"line":7882},[91,13370,137],{"class":101},[16,13372,13373],{},"위와 같이 Webpack 플러그인을 작성한 후 등록해주면 간단하게 끝난다.",[16,13375,13376],{},[19,13377],{"alt":21,"src":13378},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled9.png",[16,13380,13381],{},"빌드하면 결과물 폴더에, 변환한 URL에 해당하는 index.html 파일들이 우수수 빌드가 된 걸 확인할 수 있다. 그리고 포스팅 URL 로 바로 접속도 가능해졌다.",[49,13383,13385],{"id":13384},"sitemap-자동-생성","Sitemap 자동 생성",[82,13387,13389],{"className":11559,"code":13388,"language":11561,"meta":87,"style":87},"npm i -D sitemap-webpack-plugin\n",[31,13390,13391],{"__ignoreMap":87},[91,13392,13393,13395,13397,13399,13402,13404,13407,13409],{"class":93,"line":94},[91,13394,12655],{"class":101},[91,13396,8409],{"class":566},[91,13398,12660],{"class":108},[91,13400,13401],{"class":101}," sitemap",[91,13403,8409],{"class":566},[91,13405,13406],{"class":101},"webpack",[91,13408,8409],{"class":566},[91,13410,13411],{"class":101},"plugin\n",[16,13413,13414,13415,13418],{},"사이트맵 생성에는 ",[31,13416,13417],{},"sitemap-webpack-plugin"," 을 사용한다. 개발자들의 스승님인 구글 검색 엔진에 블로그가 더 잘 노출이 되고, 크롤링에 도움을 주기위해서 사이트맵은 필요하다. Webpack 이 참 플러그인 생태계가 좋다.",[82,13420,13422],{"className":11559,"code":13421,"language":11561,"meta":87,"style":87},"const SitemapPlugin = require('sitemap-webpack-plugin').default;\nconst paths = posts.map(post => {\n  return { \n        path: `\u002F${post.url}\u002F`,\n    lastmod: post.updatedAt || post.createdAt,\n    changefreq: 'yearly'\n  }\n})\n\nmodule.exports = [\n    ...,\n  new SitemapPlugin({\n    base: process.env.VUE_APP_BASE_URL,\n    paths\n  })\n];\n",[31,13423,13424,13443,13463,13469,13486,13496,13502,13506,13510,13514,13526,13533,13541,13551,13556,13560],{"__ignoreMap":87},[91,13425,13426,13428,13431,13433,13435,13437,13440],{"class":93,"line":94},[91,13427,1968],{"class":566},[91,13429,13430],{"class":108}," SitemapPlugin",[91,13432,1366],{"class":566},[91,13434,13021],{"class":97},[91,13436,795],{"class":101},[91,13438,13439],{"class":169},"'sitemap-webpack-plugin'",[91,13441,13442],{"class":101},").default;\n",[91,13444,13445,13447,13449,13451,13453,13455,13457,13459,13461],{"class":93,"line":105},[91,13446,1968],{"class":566},[91,13448,13109],{"class":108},[91,13450,1366],{"class":566},[91,13452,13080],{"class":101},[91,13454,13083],{"class":97},[91,13456,795],{"class":101},[91,13458,11856],{"class":1172},[91,13460,11859],{"class":566},[91,13462,102],{"class":101},[91,13464,13465,13467],{"class":93,"line":121},[91,13466,2695],{"class":566},[91,13468,13130],{"class":101},[91,13470,13471,13474,13476,13478,13480,13482,13484],{"class":93,"line":134},[91,13472,13473],{"class":101},"        path: ",[91,13475,13138],{"class":169},[91,13477,11856],{"class":101},[91,13479,1235],{"class":169},[91,13481,5177],{"class":101},[91,13483,13147],{"class":169},[91,13485,7560],{"class":101},[91,13487,13488,13491,13493],{"class":93,"line":228},[91,13489,13490],{"class":101},"    lastmod: post.updatedAt ",[91,13492,7829],{"class":566},[91,13494,13495],{"class":101}," post.createdAt,\n",[91,13497,13498,13500],{"class":93,"line":250},[91,13499,13164],{"class":101},[91,13501,13167],{"class":169},[91,13503,13504],{"class":93,"line":260},[91,13505,1698],{"class":101},[91,13507,13508],{"class":93,"line":274},[91,13509,9444],{"class":101},[91,13511,13512],{"class":93,"line":284},[91,13513,1450],{"emptyLinePlaceholder":846},[91,13515,13516,13518,13520,13522,13524],{"class":93,"line":299},[91,13517,10966],{"class":108},[91,13519,1235],{"class":101},[91,13521,10971],{"class":108},[91,13523,1366],{"class":566},[91,13525,13192],{"class":101},[91,13527,13528,13531],{"class":93,"line":319},[91,13529,13530],{"class":566},"    ...",[91,13532,7560],{"class":101},[91,13534,13535,13537,13539],{"class":93,"line":334},[91,13536,13197],{"class":566},[91,13538,13430],{"class":97},[91,13540,7549],{"class":101},[91,13542,13543,13546,13549],{"class":93,"line":355},[91,13544,13545],{"class":101},"    base: process.env.",[91,13547,13548],{"class":108},"VUE_APP_BASE_URL",[91,13550,7560],{"class":101},[91,13552,13553],{"class":93,"line":364},[91,13554,13555],{"class":101},"    paths\n",[91,13557,13558],{"class":93,"line":378},[91,13559,12631],{"class":101},[91,13561,13562],{"class":93,"line":387},[91,13563,12327],{"class":101},[16,13565,13566],{},"또 플러그인을 작성하고, 빌드하면 끝이다.",[82,13568,13570],{"className":11559,"code":13569,"language":11561,"meta":87,"style":87},"\u003Curl>\n    \u003Cloc>https:\u002F\u002Flhs-source.github.io\u002Fd5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\u002F\u003C\u002Floc>\n    \u003Clastmod>2022-06-25T00:00:00.000Z\u003C\u002Flastmod>\n    \u003Cchangefreq>yearly\u003C\u002Fchangefreq>\n\u003C\u002Furl>\n\u003Curl>\n    \u003Cloc>https:\u002F\u002Flhs-source.github.io\u002F8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\u002F\u003C\u002Floc>\n    \u003Clastmod>2022-06-25T00:00:00.000Z\u003C\u002Flastmod>\n    \u003Cchangefreq>yearly\u003C\u002Fchangefreq>\n\u003C\u002Furl>\n",[31,13571,13572,13580,13594,13608,13622,13630,13638,13651,13663,13675],{"__ignoreMap":87},[91,13573,13574,13576,13578],{"class":93,"line":94},[91,13575,156],{"class":101},[91,13577,5177],{"class":159},[91,13579,173],{"class":101},[91,13581,13582,13584,13587,13590,13592],{"class":93,"line":105},[91,13583,178],{"class":101},[91,13585,13586],{"class":159},"loc",[91,13588,13589],{"class":101},">https:\u002F\u002Flhs-source.github.io\u002Fd5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\u002F\u003C\u002F",[91,13591,13586],{"class":159},[91,13593,173],{"class":101},[91,13595,13596,13598,13601,13604,13606],{"class":93,"line":121},[91,13597,178],{"class":101},[91,13599,13600],{"class":159},"lastmod",[91,13602,13603],{"class":101},">2022-06-25T00:00:00.000Z\u003C\u002F",[91,13605,13600],{"class":159},[91,13607,173],{"class":101},[91,13609,13610,13612,13615,13618,13620],{"class":93,"line":134},[91,13611,178],{"class":101},[91,13613,13614],{"class":159},"changefreq",[91,13616,13617],{"class":101},">yearly\u003C\u002F",[91,13619,13614],{"class":159},[91,13621,173],{"class":101},[91,13623,13624,13626,13628],{"class":93,"line":228},[91,13625,493],{"class":101},[91,13627,5177],{"class":159},[91,13629,173],{"class":101},[91,13631,13632,13634,13636],{"class":93,"line":250},[91,13633,156],{"class":101},[91,13635,5177],{"class":159},[91,13637,173],{"class":101},[91,13639,13640,13642,13644,13647,13649],{"class":93,"line":260},[91,13641,178],{"class":101},[91,13643,13586],{"class":159},[91,13645,13646],{"class":101},">https:\u002F\u002Flhs-source.github.io\u002F8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\u002F\u003C\u002F",[91,13648,13586],{"class":159},[91,13650,173],{"class":101},[91,13652,13653,13655,13657,13659,13661],{"class":93,"line":274},[91,13654,178],{"class":101},[91,13656,13600],{"class":159},[91,13658,13603],{"class":101},[91,13660,13600],{"class":159},[91,13662,173],{"class":101},[91,13664,13665,13667,13669,13671,13673],{"class":93,"line":284},[91,13666,178],{"class":101},[91,13668,13614],{"class":159},[91,13670,13617],{"class":101},[91,13672,13614],{"class":159},[91,13674,173],{"class":101},[91,13676,13677,13679,13681],{"class":93,"line":299},[91,13678,493],{"class":101},[91,13680,5177],{"class":159},[91,13682,173],{"class":101},[16,13684,13685,13686,13689],{},"이렇게 구글 엔진에 등록할 ",[31,13687,13688],{},"sitemap.xml"," 이 저절로 만들어진다. 결과물 폴더에 만들어지기 때문에, 브라우저에서도 바로 접속할 수 있다.",[757,13691,13693],{"id":13692},"사이트맵-등록하기","사이트맵 등록하기",[16,13695,13696],{},[4306,13697,13700],{"href":13698,"rel":13699},"https:\u002F\u002Fsearch.google.com\u002Fsearch-console\u002Fabout",[4310],"Google Search Console",[16,13702,13703],{},"구글 검색 콘솔에 접속한다. 우선은 사이트를 생성하고, 그 사이트에 사이트맵을 등록할 것이다.",[16,13705,13706],{},[19,13707],{"alt":21,"src":13708},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled10.png",[16,13710,13711],{},"URL 을 입력하고 다음으로 넘어가자.",[16,13713,13714],{},[19,13715],{"alt":21,"src":13716},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled11.png",[82,13718,13720],{"className":11559,"code":13719,"language":11561,"meta":87,"style":87},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"\">\n  \u003Chead>\n    \u003Cmeta name=\"google-site-verification\" content=\"p4lZFdtKOsDj6_1O2f_PsufQnO068kmB_Sgrs5UlweQ\" \u002F>\n    \u003C\u002Fhead>\n\u003C\u002Fhtml>\n",[31,13721,13722,13735,13750,13759,13784,13792],{"__ignoreMap":87},[91,13723,13724,13727,13730,13733],{"class":93,"line":94},[91,13725,13726],{"class":566},"\u003C!",[91,13728,13729],{"class":108},"DOCTYPE",[91,13731,13732],{"class":101}," html",[91,13734,173],{"class":566},[91,13736,13737,13739,13741,13743,13745,13748],{"class":93,"line":105},[91,13738,156],{"class":101},[91,13740,149],{"class":159},[91,13742,1951],{"class":97},[91,13744,166],{"class":566},[91,13746,13747],{"class":169},"\"\"",[91,13749,173],{"class":101},[91,13751,13752,13754,13757],{"class":93,"line":121},[91,13753,2125],{"class":101},[91,13755,13756],{"class":159},"head",[91,13758,173],{"class":101},[91,13760,13761,13763,13766,13769,13771,13774,13777,13779,13782],{"class":93,"line":134},[91,13762,178],{"class":101},[91,13764,13765],{"class":159},"meta",[91,13767,13768],{"class":97}," name",[91,13770,166],{"class":566},[91,13772,13773],{"class":169},"\"google-site-verification\"",[91,13775,13776],{"class":97}," content",[91,13778,166],{"class":566},[91,13780,13781],{"class":169},"\"p4lZFdtKOsDj6_1O2f_PsufQnO068kmB_Sgrs5UlweQ\"",[91,13783,2147],{"class":101},[91,13785,13786,13788,13790],{"class":93,"line":228},[91,13787,277],{"class":101},[91,13789,13756],{"class":159},[91,13791,173],{"class":101},[91,13793,13794,13796,13798],{"class":93,"line":250},[91,13795,493],{"class":101},[91,13797,149],{"class":159},[91,13799,173],{"class":101},[16,13801,13802],{},"제일 간단한 메타태그 추가를 통해 사이트 인증을 진행한다. 사이트 루트에 메타태그가 있어야하기 때문에, public\u002Findex.html 에 메타태그를 추가해주자.",[16,13804,13805],{},[19,13806],{"alt":21,"src":13807},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled12.png",[16,13809,13810],{},"블로그 루트 페이지에 추가된 것을 확인하고 다시 콘솔로 간다.",[16,13812,13813],{},[19,13814],{"alt":21,"src":13815},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled13.png",[16,13817,13818],{},"소유권을 확인받았다.",[16,13820,13821],{},[19,13822],{"alt":21,"src":13823},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled14.png",[16,13825,13826,13827,13830],{},"사이트맵은 자동생성되었기 때문에, ",[31,13828,13829],{},"\u002Fsitemap.xml"," 를 통해 접속할 수 있다. URL로 한번 접속해보고 데이터가 잘 오는 걸 확인하고 제출하자.",[16,13832,13833],{},[19,13834],{"alt":21,"src":13835},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled15.png",[16,13837,13838],{},"성공!",[49,13840,13842],{"id":13841},"메타태그-작성하기","메타태그 작성하기",[16,13844,13845],{},"블로그 내용에 대해서 잘 알려주기 위해 렌더링하는 포스팅 페이지에 메타태그를 추가하자. 누군가 링크를 퍼가거나, 검색엔진에서 긁어갈 때 메타태그가 아주 중요한 역할을 한다.",[82,13847,13849],{"className":11559,"code":13848,"language":11561,"meta":87,"style":87},"module.exports = [\n  new PrerenderSpaPlugin({\n    postProcess(renderedHtml) {\n            let { html, route } = renderedHtml;\n      console.log('renderedHtml', renderedHtml);\n      const foundPost = posts.find(post => route.includes(post.url))\n      if(foundPost == null) {\n        return renderedHtml;\n      }\n      const { title, description, tags } = foundPost;\n      const titleText = title ? title.replace(\u002F\u003Cbr>\u002Fig, '') : process.env.VUE_APP_TITLE\n      const descriptionText = description || '이현수 개발기'\n      const tagsText = tags || '개발, 프론트엔드, 블로그, github pages, Vue3'\n      const url = `${process.env.VUE_APP_BASE_URL}${route}`\n      const imgUrl = `${process.env.VUE_APP_BASE_URL}\u002Fimages\u002Fthumbnail.jpg`\n\n      const metaData = `\n        \u003Ctitle>${titleText}\u003C\u002Ftitle>\n        \u003Cmeta name=\"title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta name=\"description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta name=\"keywords\" content=\"${tagsText}\" \u002F>\n        \u003Cmeta property=\"og:url\" content=\"${url}\" \u002F>\n        \u003Cmeta property=\"og:type\" content=\"article\" \u002F>\n        \u003Cmeta property=\"og:title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta property=\"og:description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta property=\"og:image\" content=\"${imgUrl}\" \u002F>\n        \u003Cmeta property=\"twitter:card\" content=\"${imgUrl}\" \u002F>\n        \u003Cmeta property=\"twitter:url\" content=\"${url}\" \u002F>\n        \u003Cmeta property=\"twitter:title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta property=\"twitter:description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta property=\"twitter:image\" content=\"${imgUrl}\" \u002F>\n      `;\n      const start = html.indexOf('\u003Chead>') + '\u003Chead>'.length;\n      html = html.slice(0, start) + metaData + html.slice(start);\n      renderedRoute.html = html;\n      return renderedRoute;\n    },\n",[31,13850,13851,13863,13871,13883,13896,13911,13940,13953,13959,13963,13991,14039,14056,14073,14106,14130,14134,14146,14157,14167,14177,14187,14196,14201,14210,14219,14229,14238,14247,14256,14265,14274,14281,14314,14346,14356,14363],{"__ignoreMap":87},[91,13852,13853,13855,13857,13859,13861],{"class":93,"line":94},[91,13854,10966],{"class":108},[91,13856,1235],{"class":101},[91,13858,10971],{"class":108},[91,13860,1366],{"class":566},[91,13862,13192],{"class":101},[91,13864,13865,13867,13869],{"class":93,"line":105},[91,13866,13197],{"class":566},[91,13868,13035],{"class":97},[91,13870,7549],{"class":101},[91,13872,13873,13876,13878,13881],{"class":93,"line":121},[91,13874,13875],{"class":97},"    postProcess",[91,13877,795],{"class":101},[91,13879,13880],{"class":1172},"renderedHtml",[91,13882,3866],{"class":101},[91,13884,13885,13888,13891,13893],{"class":93,"line":134},[91,13886,13887],{"class":566},"            let",[91,13889,13890],{"class":101}," { html, route } ",[91,13892,166],{"class":566},[91,13894,13895],{"class":101}," renderedHtml;\n",[91,13897,13898,13901,13903,13905,13908],{"class":93,"line":228},[91,13899,13900],{"class":101},"      console.",[91,13902,1225],{"class":97},[91,13904,795],{"class":101},[91,13906,13907],{"class":169},"'renderedHtml'",[91,13909,13910],{"class":101},", renderedHtml);\n",[91,13912,13913,13916,13919,13921,13923,13925,13927,13929,13931,13934,13937],{"class":93,"line":250},[91,13914,13915],{"class":566},"      const",[91,13917,13918],{"class":108}," foundPost",[91,13920,1366],{"class":566},[91,13922,13080],{"class":101},[91,13924,11851],{"class":97},[91,13926,795],{"class":101},[91,13928,11856],{"class":1172},[91,13930,11859],{"class":566},[91,13932,13933],{"class":101}," route.",[91,13935,13936],{"class":97},"includes",[91,13938,13939],{"class":101},"(post.url))\n",[91,13941,13942,13944,13947,13949,13951],{"class":93,"line":260},[91,13943,13326],{"class":566},[91,13945,13946],{"class":101},"(foundPost ",[91,13948,11788],{"class":566},[91,13950,1363],{"class":108},[91,13952,3866],{"class":101},[91,13954,13955,13957],{"class":93,"line":274},[91,13956,11866],{"class":566},[91,13958,13895],{"class":101},[91,13960,13961],{"class":93,"line":284},[91,13962,10095],{"class":101},[91,13964,13965,13967,13970,13973,13975,13978,13980,13983,13986,13988],{"class":93,"line":299},[91,13966,13915],{"class":566},[91,13968,13969],{"class":101}," { ",[91,13971,13972],{"class":108},"title",[91,13974,64],{"class":101},[91,13976,13977],{"class":108},"description",[91,13979,64],{"class":101},[91,13981,13982],{"class":108},"tags",[91,13984,13985],{"class":101}," } ",[91,13987,166],{"class":566},[91,13989,13990],{"class":101}," foundPost;\n",[91,13992,13993,13995,13998,14000,14003,14005,14008,14011,14013,14015,14019,14021,14024,14026,14029,14031,14033,14036],{"class":93,"line":319},[91,13994,13915],{"class":566},[91,13996,13997],{"class":108}," titleText",[91,13999,1366],{"class":566},[91,14001,14002],{"class":101}," title ",[91,14004,8372],{"class":566},[91,14006,14007],{"class":101}," title.",[91,14009,14010],{"class":97},"replace",[91,14012,795],{"class":101},[91,14014,8361],{"class":169},[91,14016,14018],{"class":14017},"sA_wV","\u003Cbr>",[91,14020,8361],{"class":169},[91,14022,14023],{"class":566},"ig",[91,14025,64],{"class":101},[91,14027,14028],{"class":169},"''",[91,14030,1176],{"class":101},[91,14032,1208],{"class":566},[91,14034,14035],{"class":101}," process.env.",[91,14037,14038],{"class":108},"VUE_APP_TITLE\n",[91,14040,14041,14043,14046,14048,14051,14053],{"class":93,"line":334},[91,14042,13915],{"class":566},[91,14044,14045],{"class":108}," descriptionText",[91,14047,1366],{"class":566},[91,14049,14050],{"class":101}," description ",[91,14052,7829],{"class":566},[91,14054,14055],{"class":169}," '이현수 개발기'\n",[91,14057,14058,14060,14063,14065,14068,14070],{"class":93,"line":355},[91,14059,13915],{"class":566},[91,14061,14062],{"class":108}," tagsText",[91,14064,1366],{"class":566},[91,14066,14067],{"class":101}," tags ",[91,14069,7829],{"class":566},[91,14071,14072],{"class":169}," '개발, 프론트엔드, 블로그, github pages, Vue3'\n",[91,14074,14075,14077,14080,14082,14085,14088,14090,14093,14095,14097,14100,14103],{"class":93,"line":364},[91,14076,13915],{"class":566},[91,14078,14079],{"class":108}," url",[91,14081,1366],{"class":566},[91,14083,14084],{"class":169}," `${",[91,14086,14087],{"class":101},"process",[91,14089,1235],{"class":169},[91,14091,14092],{"class":101},"env",[91,14094,1235],{"class":169},[91,14096,13548],{"class":108},[91,14098,14099],{"class":169},"}${",[91,14101,14102],{"class":101},"route",[91,14104,14105],{"class":169},"}`\n",[91,14107,14108,14110,14113,14115,14117,14119,14121,14123,14125,14127],{"class":93,"line":378},[91,14109,13915],{"class":566},[91,14111,14112],{"class":108}," imgUrl",[91,14114,1366],{"class":566},[91,14116,14084],{"class":169},[91,14118,14087],{"class":101},[91,14120,1235],{"class":169},[91,14122,14092],{"class":101},[91,14124,1235],{"class":169},[91,14126,13548],{"class":108},[91,14128,14129],{"class":169},"}\u002Fimages\u002Fthumbnail.jpg`\n",[91,14131,14132],{"class":93,"line":387},[91,14133,1450],{"emptyLinePlaceholder":846},[91,14135,14136,14138,14141,14143],{"class":93,"line":402},[91,14137,13915],{"class":566},[91,14139,14140],{"class":108}," metaData",[91,14142,1366],{"class":566},[91,14144,14145],{"class":169}," `\n",[91,14147,14148,14151,14154],{"class":93,"line":422},[91,14149,14150],{"class":169},"        \u003Ctitle>${",[91,14152,14153],{"class":101},"titleText",[91,14155,14156],{"class":169},"}\u003C\u002Ftitle>\n",[91,14158,14159,14162,14164],{"class":93,"line":438},[91,14160,14161],{"class":169},"        \u003Cmeta name=\"title\" content=\"${",[91,14163,14153],{"class":101},[91,14165,14166],{"class":169},"}\" \u002F>\n",[91,14168,14169,14172,14175],{"class":93,"line":458},[91,14170,14171],{"class":169},"        \u003Cmeta name=\"description\" content=\"${",[91,14173,14174],{"class":101},"descriptionText",[91,14176,14166],{"class":169},[91,14178,14179,14182,14185],{"class":93,"line":467},[91,14180,14181],{"class":169},"        \u003Cmeta name=\"keywords\" content=\"${",[91,14183,14184],{"class":101},"tagsText",[91,14186,14166],{"class":169},[91,14188,14189,14192,14194],{"class":93,"line":481},[91,14190,14191],{"class":169},"        \u003Cmeta property=\"og:url\" content=\"${",[91,14193,5177],{"class":101},[91,14195,14166],{"class":169},[91,14197,14198],{"class":93,"line":490},[91,14199,14200],{"class":169},"        \u003Cmeta property=\"og:type\" content=\"article\" \u002F>\n",[91,14202,14203,14206,14208],{"class":93,"line":3310},[91,14204,14205],{"class":169},"        \u003Cmeta property=\"og:title\" content=\"${",[91,14207,14153],{"class":101},[91,14209,14166],{"class":169},[91,14211,14212,14215,14217],{"class":93,"line":3315},[91,14213,14214],{"class":169},"        \u003Cmeta property=\"og:description\" content=\"${",[91,14216,14174],{"class":101},[91,14218,14166],{"class":169},[91,14220,14221,14224,14227],{"class":93,"line":3321},[91,14222,14223],{"class":169},"        \u003Cmeta property=\"og:image\" content=\"${",[91,14225,14226],{"class":101},"imgUrl",[91,14228,14166],{"class":169},[91,14230,14231,14234,14236],{"class":93,"line":3327},[91,14232,14233],{"class":169},"        \u003Cmeta property=\"twitter:card\" content=\"${",[91,14235,14226],{"class":101},[91,14237,14166],{"class":169},[91,14239,14240,14243,14245],{"class":93,"line":3333},[91,14241,14242],{"class":169},"        \u003Cmeta property=\"twitter:url\" content=\"${",[91,14244,5177],{"class":101},[91,14246,14166],{"class":169},[91,14248,14249,14252,14254],{"class":93,"line":3338},[91,14250,14251],{"class":169},"        \u003Cmeta property=\"twitter:title\" content=\"${",[91,14253,14153],{"class":101},[91,14255,14166],{"class":169},[91,14257,14258,14261,14263],{"class":93,"line":3343},[91,14259,14260],{"class":169},"        \u003Cmeta property=\"twitter:description\" content=\"${",[91,14262,14174],{"class":101},[91,14264,14166],{"class":169},[91,14266,14267,14270,14272],{"class":93,"line":7882},[91,14268,14269],{"class":169},"        \u003Cmeta property=\"twitter:image\" content=\"${",[91,14271,14226],{"class":101},[91,14273,14166],{"class":169},[91,14275,14276,14279],{"class":93,"line":7887},[91,14277,14278],{"class":169},"      `",[91,14280,118],{"class":101},[91,14282,14283,14285,14288,14290,14293,14296,14298,14301,14303,14305,14308,14310,14312],{"class":93,"line":7892},[91,14284,13915],{"class":566},[91,14286,14287],{"class":108}," start",[91,14289,1366],{"class":566},[91,14291,14292],{"class":101}," html.",[91,14294,14295],{"class":97},"indexOf",[91,14297,795],{"class":101},[91,14299,14300],{"class":169},"'\u003Chead>'",[91,14302,1176],{"class":101},[91,14304,8406],{"class":566},[91,14306,14307],{"class":169}," '\u003Chead>'",[91,14309,1235],{"class":101},[91,14311,11811],{"class":108},[91,14313,118],{"class":101},[91,14315,14316,14319,14321,14323,14325,14327,14329,14332,14334,14337,14339,14341,14343],{"class":93,"line":7906},[91,14317,14318],{"class":101},"      html ",[91,14320,166],{"class":566},[91,14322,14292],{"class":101},[91,14324,8026],{"class":97},[91,14326,795],{"class":101},[91,14328,1578],{"class":108},[91,14330,14331],{"class":101},", start) ",[91,14333,8406],{"class":566},[91,14335,14336],{"class":101}," metaData ",[91,14338,8406],{"class":566},[91,14340,14292],{"class":101},[91,14342,8026],{"class":97},[91,14344,14345],{"class":101},"(start);\n",[91,14347,14348,14351,14353],{"class":93,"line":7922},[91,14349,14350],{"class":101},"      renderedRoute.html ",[91,14352,166],{"class":566},[91,14354,14355],{"class":101}," html;\n",[91,14357,14358,14360],{"class":93,"line":7927},[91,14359,11825],{"class":566},[91,14361,14362],{"class":101}," renderedRoute;\n",[91,14364,14365],{"class":93,"line":7967},[91,14366,3477],{"class":101},[16,14368,14369,14370,14373,14374,14377,14378,64,14380,14382,14383,14386],{},"아까 사용했던 ",[31,14371,14372],{},"PrerenderSpaPlugin"," 을 활용한다. 훅 중 하나인 ",[31,14375,14376],{},"postProcess"," 에 메타 태그를 심어주는 코드를 작성한다. 필수로 들어가면 좋을 태그는 ",[31,14379,13972],{},[31,14381,13977],{}," , ",[31,14384,14385],{},"keyword"," 라고 한다.",[49,14388,14390],{"id":14389},"google-analytics-추가","Google Analytics 추가",[16,14392,14393],{},"네이버나 구글 블로그 같이 전용 플랫폼 위에서 돌아가는 블로그가 아니기 때문에 방문자 집계는 직접 해야한다. 그렇기 때문에 Google Analytics 4를 사용해서 방문자와 페이지뷰 수를 확인하는 간단한 기능을 추가할 것이다.",[757,14395,14397],{"id":14396},"ga4-계정-생성하기","GA4 계정 생성하기",[16,14399,14400],{},[4306,14401,14404],{"href":14402,"rel":14403},"https:\u002F\u002Fanalytics.google.com\u002F",[4310],"Redirecting...",[16,14406,14407],{},[19,14408],{"alt":21,"src":14409},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled16.png",[16,14411,14412],{},"GA 콘솔에 들어가서 계정과 속성을 차례대로 만들어준다. 속성 단위로 데이터를 종합하고 집계해서 대시보드를 작성한다고 보면 된다. 속성을 만들 때 시간대는 모두 대한민국으로 맞춰주면 된다.",[16,14414,14415],{},[19,14416],{"alt":21,"src":14417},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled17.png",[16,14419,14420],{},"그 후 데이터스트림을 만들어준다. 스트림 이름은 적당히 알아볼 수 있게 하고, 중요한 것은 “측정 ID” 이다. 이것이 데이터를 전송하는 데 사용하는 키가 된다.",[771,14422,14424],{"id":14423},"로컬-테스트용-데이터스트림-만들기","로컬 테스트용 데이터스트림 만들기",[16,14426,14427,14428,14431,14432,14435],{},"스트림 URL 에는 ",[31,14429,14430],{},"localhost"," 혹은 ",[31,14433,14434],{},"127.0.0.1"," 같은 루프백 주소는 입력할 수 없다. 그렇다고 테스트할 때마다 매번 Github에 배포하는 것도 번거로운 일이다. 적어도 1분에서 3분정도 걸리는데 그 시간이 누적되면 손해가 이만저만이 아니다.",[82,14437,14439],{"className":11559,"code":14438,"language":11561,"meta":87,"style":87},"##\n## Host Database\n#\n## localhost is used to configure the loopback interface\n## when the system is booting.  Do not change this entry.\n##\n127.0.0.1   localhost\n255.255.255.255 broadcasthost\n::1             localhost\n## Added by Docker Desktop\n## To allow the same kube context to work on the host and the container:\n127.0.0.1 kubernetes.docker.internal\n**127.0.0.1 blog.local**\n## End of section\n",[31,14440,14441,14446,14451,14456,14464,14504,14508,14516,14524,14531,14547,14591,14609,14624],{"__ignoreMap":87},[91,14442,14443],{"class":93,"line":94},[91,14444,14445],{"class":101},"##\n",[91,14447,14448],{"class":93,"line":105},[91,14449,14450],{"class":101},"## Host Database\n",[91,14452,14453],{"class":93,"line":121},[91,14454,14455],{"class":101},"#\n",[91,14457,14458,14461],{"class":93,"line":134},[91,14459,14460],{"class":101},"## localhost is used to configure the loopback ",[91,14462,14463],{"class":566},"interface\n",[91,14465,14466,14469,14472,14475,14478,14481,14484,14487,14490,14493,14496,14498,14501],{"class":93,"line":228},[91,14467,14468],{"class":101},"## ",[91,14470,14471],{"class":97},"when",[91,14473,14474],{"class":97}," the",[91,14476,14477],{"class":97}," system",[91,14479,14480],{"class":97}," is",[91,14482,14483],{"class":97}," booting",[91,14485,14486],{"class":101},".  ",[91,14488,14489],{"class":97},"Do",[91,14491,14492],{"class":97}," not",[91,14494,14495],{"class":97}," change",[91,14497,11795],{"class":97},[91,14499,14500],{"class":97}," entry",[91,14502,14503],{"class":101},".\n",[91,14505,14506],{"class":93,"line":250},[91,14507,14445],{"class":101},[91,14509,14510,14513],{"class":93,"line":260},[91,14511,14512],{"class":101},"127.0.0.1   ",[91,14514,14515],{"class":97},"localhost\n",[91,14517,14518,14521],{"class":93,"line":274},[91,14519,14520],{"class":101},"255.255.255.255 ",[91,14522,14523],{"class":97},"broadcasthost\n",[91,14525,14526,14529],{"class":93,"line":284},[91,14527,14528],{"class":101},"::1             ",[91,14530,14515],{"class":97},[91,14532,14533,14535,14538,14541,14544],{"class":93,"line":299},[91,14534,14468],{"class":101},[91,14536,14537],{"class":97},"Added",[91,14539,14540],{"class":97}," by",[91,14542,14543],{"class":97}," Docker",[91,14545,14546],{"class":97}," Desktop\n",[91,14548,14549,14551,14554,14557,14559,14562,14565,14568,14571,14574,14576,14578,14581,14584,14586,14589],{"class":93,"line":319},[91,14550,14468],{"class":101},[91,14552,14553],{"class":97},"To",[91,14555,14556],{"class":97}," allow",[91,14558,14474],{"class":97},[91,14560,14561],{"class":97}," same",[91,14563,14564],{"class":97}," kube",[91,14566,14567],{"class":97}," context",[91,14569,14570],{"class":97}," to",[91,14572,14573],{"class":97}," work",[91,14575,10273],{"class":97},[91,14577,14474],{"class":97},[91,14579,14580],{"class":97}," host",[91,14582,14583],{"class":97}," and",[91,14585,14474],{"class":97},[91,14587,14588],{"class":97}," container",[91,14590,7265],{"class":101},[91,14592,14593,14596,14599,14601,14604,14606],{"class":93,"line":334},[91,14594,14595],{"class":101},"127.0.0.1 ",[91,14597,14598],{"class":97},"kubernetes",[91,14600,1235],{"class":101},[91,14602,14603],{"class":97},"docker",[91,14605,1235],{"class":101},[91,14607,14608],{"class":97},"internal\n",[91,14610,14611,14614,14617,14619,14622],{"class":93,"line":355},[91,14612,14613],{"class":101},"**127.0.0.1 ",[91,14615,14616],{"class":97},"blog",[91,14618,1235],{"class":101},[91,14620,14621],{"class":97},"local",[91,14623,12474],{"class":101},[91,14625,14626,14628,14631,14633],{"class":93,"line":364},[91,14627,14468],{"class":101},[91,14629,14630],{"class":97},"End",[91,14632,10060],{"class":97},[91,14634,14635],{"class":97}," section\n",[16,14637,14638,14641,14642,14645],{},[31,14639,14640],{},"hosts"," 파일에 DNS 정보를 넣어서 가상의 URL을 만들어준 후에, 이 URL로 로컬 테스트를 진행하면 된다. 나는 단순하게 ",[31,14643,14644],{},"blog.local"," 이라고 정했다.",[16,14647,14648],{},[19,14649],{"alt":21,"src":14650},"\u002Fblog\u002Fimg\u002Fmaking-blog-githubio-vue3-1\u002FUntitled18.png",[16,14652,14653],{},"나의 경우 실제 오픈한 블로그와 로컬 테스트 블로그 각각에서 잡히는 데이터를 분리하고 싶었다. 그래서 아예 속성 자체를 분리했다. 그래야 섞이지 않고 올바르게 데이터를 쌓을 수 있다.",[82,14655,14657],{"className":11559,"code":14656,"language":11561,"meta":87,"style":87},"\u002F\u002F vue.config.js\nmodule.exports = {\n    devServer: {\n        \u002F\u002F webpack4\n        disableHostCheck: true,\n        \u002F\u002F webpack5\n    \u002F\u002F allowedHosts: ['.host.com', 'host2.com'],\n    allowedHosts: 'all',\n  }\n}\n",[31,14658,14659,14663,14675,14680,14685,14694,14699,14704,14714,14718],{"__ignoreMap":87},[91,14660,14661],{"class":93,"line":94},[91,14662,10961],{"class":1343},[91,14664,14665,14667,14669,14671,14673],{"class":93,"line":105},[91,14666,10966],{"class":108},[91,14668,1235],{"class":101},[91,14670,10971],{"class":108},[91,14672,1366],{"class":566},[91,14674,102],{"class":101},[91,14676,14677],{"class":93,"line":121},[91,14678,14679],{"class":101},"    devServer: {\n",[91,14681,14682],{"class":93,"line":134},[91,14683,14684],{"class":1343},"        \u002F\u002F webpack4\n",[91,14686,14687,14690,14692],{"class":93,"line":228},[91,14688,14689],{"class":101},"        disableHostCheck: ",[91,14691,7557],{"class":108},[91,14693,7560],{"class":101},[91,14695,14696],{"class":93,"line":250},[91,14697,14698],{"class":1343},"        \u002F\u002F webpack5\n",[91,14700,14701],{"class":93,"line":260},[91,14702,14703],{"class":1343},"    \u002F\u002F allowedHosts: ['.host.com', 'host2.com'],\n",[91,14705,14706,14709,14712],{"class":93,"line":274},[91,14707,14708],{"class":101},"    allowedHosts: ",[91,14710,14711],{"class":169},"'all'",[91,14713,7560],{"class":101},[91,14715,14716],{"class":93,"line":284},[91,14717,1698],{"class":101},[91,14719,14720],{"class":93,"line":299},[91,14721,137],{"class":101},[16,14723,14724,14725,14728,14729,14732],{},"vue.config.js 에다가 추가로 설정이 필요하다. Webpack4 를 사용 중이라면 ",[31,14726,14727],{},"disableHostCheck"," 속성을, Webpack5 사용 중이라면 ",[31,14730,14731],{},"allowedHosts"," 를 사용한다.",[757,14734,14736],{"id":14735},"vue에서-ga4로-데이터-전송하기","Vue에서 GA4로 데이터 전송하기",[82,14738,14740],{"className":11559,"code":14739,"language":11561,"meta":87,"style":87},"npm install vue-gtag-next\n",[31,14741,14742],{"__ignoreMap":87},[91,14743,14744,14747,14749,14752,14754],{"class":93,"line":94},[91,14745,14746],{"class":101},"npm install vue",[91,14748,8409],{"class":566},[91,14750,14751],{"class":101},"gtag",[91,14753,8409],{"class":566},[91,14755,14756],{"class":101},"next\n",[16,14758,14759,14760,14763,14764,14766,14767,14770],{},"Vue에서는 ",[31,14761,14762],{},"vue-gtag","라는 라이브러리를 사용해서 간단하게 GA 태그를 심을 수 있다. 하지만 ",[31,14765,14762],{}," 는 Vue2 까지 지원하며, Vue3 에서는 ",[31,14768,14769],{},"vue-gtag-next"," 를 사용해야한다. 사용법도 조금은 다르다.",[82,14772,14774],{"className":11559,"code":14773,"language":11561,"meta":87,"style":87},"\u002F\u002F main.ts\nimport VueGTag from \"vue-gtag-next\";\n\nlet GAID = \"G-XXYYZZXXTT\";  \u002F\u002F dev\nif(process.env.NODE_ENV === \"production\") {\n    GAID = \"G-XXYYZZXXEE\";  \u002F\u002F prod\n}\n\nconst app = createApp(App)\n.use(store)\n.use(router)\n**.use(VueGTag, {\n    property: {\n        id: GAID, \u002F\u002F prod\n    }\n})**\n.mount('#app')\n",[31,14775,14776,14781,14795,14799,14817,14833,14848,14852,14856,14871,14881,14890,14902,14907,14919,14923,14930],{"__ignoreMap":87},[91,14777,14778],{"class":93,"line":94},[91,14779,14780],{"class":1343},"\u002F\u002F main.ts\n",[91,14782,14783,14785,14788,14790,14793],{"class":93,"line":105},[91,14784,2499],{"class":566},[91,14786,14787],{"class":101}," VueGTag ",[91,14789,2505],{"class":566},[91,14791,14792],{"class":169}," \"vue-gtag-next\"",[91,14794,118],{"class":101},[91,14796,14797],{"class":93,"line":121},[91,14798,1450],{"emptyLinePlaceholder":846},[91,14800,14801,14803,14806,14808,14811,14814],{"class":93,"line":134},[91,14802,1349],{"class":566},[91,14804,14805],{"class":108}," GAID",[91,14807,1366],{"class":566},[91,14809,14810],{"class":169}," \"G-XXYYZZXXTT\"",[91,14812,14813],{"class":101},";  ",[91,14815,14816],{"class":1343},"\u002F\u002F dev\n",[91,14818,14819,14821,14824,14826,14828,14831],{"class":93,"line":228},[91,14820,5226],{"class":566},[91,14822,14823],{"class":101},"(process.env.",[91,14825,13332],{"class":108},[91,14827,13335],{"class":566},[91,14829,14830],{"class":169}," \"production\"",[91,14832,3866],{"class":101},[91,14834,14835,14838,14840,14843,14845],{"class":93,"line":250},[91,14836,14837],{"class":108},"    GAID",[91,14839,1366],{"class":566},[91,14841,14842],{"class":169}," \"G-XXYYZZXXEE\"",[91,14844,14813],{"class":101},[91,14846,14847],{"class":1343},"\u002F\u002F prod\n",[91,14849,14850],{"class":93,"line":260},[91,14851,137],{"class":101},[91,14853,14854],{"class":93,"line":274},[91,14855,1450],{"emptyLinePlaceholder":846},[91,14857,14858,14860,14863,14865,14868],{"class":93,"line":284},[91,14859,1968],{"class":566},[91,14861,14862],{"class":108}," app",[91,14864,1366],{"class":566},[91,14866,14867],{"class":97}," createApp",[91,14869,14870],{"class":101},"(App)\n",[91,14872,14873,14875,14878],{"class":93,"line":299},[91,14874,1235],{"class":101},[91,14876,14877],{"class":97},"use",[91,14879,14880],{"class":101},"(store)\n",[91,14882,14883,14885,14887],{"class":93,"line":319},[91,14884,1235],{"class":101},[91,14886,14877],{"class":97},[91,14888,14889],{"class":101},"(router)\n",[91,14891,14892,14895,14897,14899],{"class":93,"line":334},[91,14893,14894],{"class":566},"**",[91,14896,1235],{"class":101},[91,14898,14877],{"class":97},[91,14900,14901],{"class":101},"(VueGTag, {\n",[91,14903,14904],{"class":93,"line":355},[91,14905,14906],{"class":101},"    property: {\n",[91,14908,14909,14912,14915,14917],{"class":93,"line":364},[91,14910,14911],{"class":101},"        id: ",[91,14913,14914],{"class":108},"GAID",[91,14916,64],{"class":101},[91,14918,14847],{"class":1343},[91,14920,14921],{"class":93,"line":378},[91,14922,1693],{"class":101},[91,14924,14925,14928],{"class":93,"line":387},[91,14926,14927],{"class":101},"})",[91,14929,12474],{"class":566},[91,14931,14932,14934,14937,14939,14941],{"class":93,"line":402},[91,14933,1235],{"class":101},[91,14935,14936],{"class":97},"mount",[91,14938,795],{"class":101},[91,14940,13256],{"class":169},[91,14942,3487],{"class":101},[16,14944,14945,14946,14948],{},"우선 main.ts 에서 “측정 ID” 를 가지고 GA 초기화를 해야한다. 실서버와 로컬 환경의 키를 분리해서 할당하고는, Vue app의 ",[31,14947,14877],{}," 로 등록해주자.",[82,14950,14952],{"className":11559,"code":14951,"language":11561,"meta":87,"style":87},"\u002F\u002F router\u002Findex.ts\nimport { trackRouter } from 'vue-gtag-next'\nconst router = createRouter({\n    ...\n})\n\ntrackRouter(router);\n",[31,14953,14954,14959,14971,14985,14990,14994,14998],{"__ignoreMap":87},[91,14955,14956],{"class":93,"line":94},[91,14957,14958],{"class":1343},"\u002F\u002F router\u002Findex.ts\n",[91,14960,14961,14963,14966,14968],{"class":93,"line":105},[91,14962,2499],{"class":566},[91,14964,14965],{"class":101}," { trackRouter } ",[91,14967,2505],{"class":566},[91,14969,14970],{"class":169}," 'vue-gtag-next'\n",[91,14972,14973,14975,14978,14980,14983],{"class":93,"line":121},[91,14974,1968],{"class":566},[91,14976,14977],{"class":108}," router",[91,14979,1366],{"class":566},[91,14981,14982],{"class":97}," createRouter",[91,14984,7549],{"class":101},[91,14986,14987],{"class":93,"line":134},[91,14988,14989],{"class":566},"    ...\n",[91,14991,14992],{"class":93,"line":228},[91,14993,9444],{"class":101},[91,14995,14996],{"class":93,"line":250},[91,14997,1450],{"emptyLinePlaceholder":846},[91,14999,15000,15003],{"class":93,"line":260},[91,15001,15002],{"class":97},"trackRouter",[91,15004,15005],{"class":101},"(router);\n",[16,15007,15008,15010],{},[31,15009,15002],{}," 로 간단하게 Vue-Router 와 연동하여 라우팅 페이지 뷰를 자동으로 인식하고 데이터를 전송할 수 있다.",[829,15012,15013],{},"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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":87,"searchDepth":105,"depth":105,"links":15015},[15016,15017,15022,15023,15024,15025,15028,15029],{"id":10866,"depth":105,"text":10867},{"id":10890,"depth":105,"text":10891,"children":15018},[15019,15020,15021],{"id":10919,"depth":121,"text":10919},{"id":10935,"depth":121,"text":10910},{"id":11003,"depth":121,"text":11004},{"id":11350,"depth":105,"text":11351},{"id":12345,"depth":105,"text":12346},{"id":12641,"depth":105,"text":12642},{"id":13384,"depth":105,"text":13385,"children":15026},[15027],{"id":13692,"depth":121,"text":13693},{"id":13841,"depth":105,"text":13842},{"id":14389,"depth":105,"text":14390,"children":15030},[15031,15032],{"id":14396,"depth":121,"text":14397},{"id":14735,"depth":121,"text":14736},"2022-06-24","Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.","making-blog-githubio-vue3-1",{},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1",{"title":10845,"description":15034},{"loc":15037},"blog\u002Fmaking-blog-githubio-vue3-1",[15042,15043,15044,15045,15046,15047,15048],"Vue","Vue3","Github","Blog","Markdown","SEO","GoogleAnalytics","2022-06-25","VhLVJWHlcbYzSVK6NWdb5E6ZVzDAzpI1cuyMby9LifU",{"id":15052,"title":15053,"body":15054,"created":1501,"description":15275,"extension":843,"filename":15276,"meta":15277,"navigation":846,"path":15278,"seo":15279,"sitemap":15280,"stem":15281,"subject":15282,"tags":15283,"updated":1501,"volume":1863,"__hash__":15284},"blog\u002Fblog\u002Fnode-patch-version-yarn-semver.md","node patch 버전이 두자리 넘어가며 생긴 로직 문제",{"type":8,"value":15055,"toc":15269},[15056,15059,15064,15067,15071,15078,15086,15089,15093,15099,15102,15106,15178,15184,15187,15261],[16,15057,15058],{},"yarn 과 npm 의 버전을 다루는 형태에 차이가 있었다.",[1722,15060,15061],{},[16,15062,15063],{},"Updated package.json version from 2.13.10.0 to: 2.13.10.0.08191009\nnpm_package_version 2.13.1-0.0.8191009",[16,15065,15066],{},"이상하게 하이픈이 들어가는 문제가 있었다. 처음에는 뒤에 날짜 정보를 붙이면서 버그가 발생한 줄 알았다. 하지만 yarn 의 버전 체계가 npm 과 달라서 생긴 문제라고 클로드는 설명했다.",[49,15068,15070],{"id":15069},"yarn-의-주소체계","yarn 의 주소체계",[16,15072,15073,15074,15077],{},"2.13.10.0+08191030\n2.13.10.0.08191030\n2.13.10.008191030\n이 형태들 모두 3번째 버전에 하이픈이 들어간 버전( ",[31,15075,15076],{},"2.13.1-0.12345"," )으로 바뀌어버린다. 심지어 4번째 버전의 0은 패딩됨.",[24,15079,15080,15083],{},[27,15081,15082],{},"npm: 2.13.10.008191030  (그대로 유지)",[27,15084,15085],{},"yarn: 2.13.1-0.8191030 (하이픈으로 변환)",[16,15087,15088],{},"2.13.10.0-dev.08191030 -> 2.13.1-0.0-dev.8191030\n2.13.10-dev.08191030 -> 2.13.10-dev.08191030 (동일)",[757,15090,15092],{"id":15091},"semantic-versioning-200","Semantic Versioning 2.0.0",[1112,15094],{"description":15095,"favicon":15096,"host":15097,"title":15092,"url":15098},"Semantic Versioning spec and website","https:\u002F\u002Fsemver.org\u002Fassets\u002F500x500(dark).jpg","semver.org","https:\u002F\u002Fsemver.org\u002F",[16,15100,15101],{},"표준 형식: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]\n4자리 이상의 버전들은 모두 prerelease 로 변환해버린다.",[757,15103,15105],{"id":15104},"yarn-의-patch-버전-처리-버그-yarn-12222","yarn 의 patch 버전 처리 버그 (yarn 1.22.22)",[812,15107,15108,15124],{},[3001,15109,15110],{},[3004,15111,15112,15115,15118,15121],{},[3007,15113,15114],{},"입력 버전",[3007,15116,15117],{},"예상 결과",[3007,15119,15120],{},"실제 결과",[3007,15122,15123],{},"문제",[3017,15125,15126,15140,15153,15167],{},[3004,15127,15128,15131,15134,15137],{},[3022,15129,15130],{},"2.13.10.0.8191030",[3022,15132,15133],{},"2.13.10-0.8191030",[3022,15135,15136],{},"2.13.1-0.0.8191030",[3022,15138,15139],{},"❌ patch가 10→1로 변경",[3004,15141,15142,15145,15148,15151],{},[3022,15143,15144],{},"2.13.10.8191030",[3022,15146,15147],{},"2.13.10-8191030",[3022,15149,15150],{},"2.13.1-0.8191030",[3022,15152,15139],{},[3004,15154,15155,15158,15161,15164],{},[3022,15156,15157],{},"2.13.11.0.8191030",[3022,15159,15160],{},"2.13.11-0.8191030",[3022,15162,15163],{},"2.13.1-1.0.8191030",[3022,15165,15166],{},"❌ patch가 11→1로 변경",[3004,15168,15169,15172,15174,15176],{},[3022,15170,15171],{},"Patch가 잘못됨: 10 → 1, 11 → 1",[3022,15173],{},[3022,15175],{},[3022,15177],{},[82,15179,15182],{"className":15180,"code":15181,"language":1099},[1097],"yarn set version stable\n",[31,15183,15181],{"__ignoreMap":87},[16,15185,15186],{},"yarn 을 업데이트하는 방법도 있다.",[812,15188,15189,15204],{},[3001,15190,15191],{},[3004,15192,15193,15196,15198,15201],{},[3007,15194,15195],{},"Yarn 버전",[3007,15197,15114],{},[3007,15199,15200],{},"결과",[3007,15202,15203],{},"상태",[3017,15205,15206,15218,15228,15240,15250],{},[3004,15207,15208,15211,15213,15215],{},[3022,15209,15210],{},"1.22.22",[3022,15212,15130],{},[3022,15214,15136],{},[3022,15216,15217],{},"❌ 버그",[3004,15219,15220,15222,15224,15226],{},[3022,15221,15210],{},[3022,15223,15157],{},[3022,15225,15163],{},[3022,15227,15217],{},[3004,15229,15230,15233,15235,15237],{},[3022,15231,15232],{},"4.9.2",[3022,15234,15130],{},[3022,15236,15130],{},[3022,15238,15239],{},"✅ 정상",[3004,15241,15242,15244,15246,15248],{},[3022,15243,15232],{},[3022,15245,15157],{},[3022,15247,15157],{},[3022,15249,15239],{},[3004,15251,15252,15255,15257,15259],{},[3022,15253,15254],{},"4.9.2 에서는 아예 하이픈을 넣지도 않고 있다.",[3022,15256],{},[3022,15258],{},[3022,15260],{},[1722,15262,15263],{},[16,15264,15265,15268],{},[91,15266,15267],{},"!error"," Yarn 4.9.2 버전 사용하는 순간 에러가 해결되지 않음\nInternal Error: project@workspace:.: This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile\n아무리 해결을 하려고 해도 yarn 4.9.2 버전을 사용할 때 문제가 발생한다.",{"title":87,"searchDepth":105,"depth":105,"links":15270},[15271],{"id":15069,"depth":105,"text":15070,"children":15272},[15273,15274],{"id":15091,"depth":121,"text":15092},{"id":15104,"depth":121,"text":15105},"빌드 후 package.json 의 버전이 자기 멋대로 변경이 됐다. yarn 1.22 버전에서 sementic version 규칙을 따르면서 버전을 자체적으로 변경한 것.","node-patch-version-yarn-semver",{},"\u002Fblog\u002Fnode-patch-version-yarn-semver",{"title":15053,"description":15275},{"loc":15278},"blog\u002Fnode-patch-version-yarn-semver","Node",[5447,7203,7409],"s8WRsUgkWlP23YfDRVDL747iOk2X00E4nRdlvDPOCyM",{"id":15286,"title":15287,"body":15288,"created":15406,"description":15407,"extension":843,"filename":15408,"meta":15409,"navigation":846,"path":15410,"seo":15411,"sitemap":15412,"stem":15413,"subject":15282,"tags":15414,"updated":15406,"volume":1863,"__hash__":15418},"blog\u002Fblog\u002Fnpm-rollup-os.md","npm 의존성 설치 문제 애플 실리콘에서의 Rollup 패키지 (npm ERR notsup Unsupported platform for rollup-darwin-arm64)",{"type":8,"value":15289,"toc":15404},[15290,15296,15316,15344,15351,15377,15395,15401],[1112,15291],{"description":15292,"favicon":1320,"host":1317,"image":15293,"title":15294,"url":15295},"Rollup Version 4.8.0 Operating System (or Browser) MacOS M2 Pro Node Version (if applicable) 20.10.0 Link To Reproduction Nuxt 3, npm i Expected Behaviour module should be installed as expected. Ac...","https:\u002F\u002Fopengraph.githubassets.com\u002F4f1a9d9ff77dc018315c5faae0716be8d6e371e7a8f96f7acf8f9e0a847b5069\u002Frollup\u002Frollup\u002Fissues\u002F5295","Unsupported platform · Issue #5295 · rollup\u002Frollup","https:\u002F\u002Fgithub.com\u002Frollup\u002Frollup\u002Fissues\u002F5295#issuecomment-1942985686",[1722,15297,15298,15301,15304,15307,15310,15313],{},[16,15299,15300],{},"npm ERR! code EBADPLATFORM",[16,15302,15303],{},"npm ERR! notsup Unsupported platform for @rollup\u002Frollup-darwin-arm64@4.30.1: wanted {\"os\":\"darwin\",\"cpu\":\"arm64\"} (current: {\"os\":\"win32\",\"cpu\":\"x64\"})",[16,15305,15306],{},"npm ERR! notsup Valid os:   darwin",[16,15308,15309],{},"npm ERR! notsup Actual os:  win32",[16,15311,15312],{},"npm ERR! notsup Valid cpu:  arm64",[16,15314,15315],{},"npm ERR! notsup Actual cpu: x64",[82,15317,15319],{"className":8477,"code":15318,"language":8479,"meta":87,"style":87},"\"dependencies\": {\n    \"@rollup\u002Frollup-darwin-arm64\": \"^4.30.1\",\n}\n",[31,15320,15321,15328,15340],{"__ignoreMap":87},[91,15322,15323,15326],{"class":93,"line":94},[91,15324,15325],{"class":169},"\"dependencies\"",[91,15327,8789],{"class":101},[91,15329,15330,15333,15335,15338],{"class":93,"line":105},[91,15331,15332],{"class":108},"    \"@rollup\u002Frollup-darwin-arm64\"",[91,15334,112],{"class":101},[91,15336,15337],{"class":169},"\"^4.30.1\"",[91,15339,7560],{"class":101},[91,15341,15342],{"class":93,"line":121},[91,15343,137],{"class":101},[16,15345,15346,15347,15350],{},"package.json 파일에서 dependencies 에 ",[31,15348,15349],{},"@rollup\u002Frollup-darwin-arm64"," 를 종속성으로 등록해두었지만, 실행하는 환경이 Windows 혹은 Linux 등 애플실레콘이 아닐 때 일 때 설치할 수 없기 때문에 발생한다. dependencies 나 devDependencies 의 경우 설치에 실패하면 무조건 중단되며 실패로 끝난다.",[82,15352,15354],{"className":8477,"code":15353,"language":8479,"meta":87,"style":87},"\"optionalDependencies\": {\n    \"@rollup\u002Frollup-darwin-arm64\": \"^4.30.1\"\n},\n",[31,15355,15356,15363,15372],{"__ignoreMap":87},[91,15357,15358,15361],{"class":93,"line":94},[91,15359,15360],{"class":169},"\"optionalDependencies\"",[91,15362,8789],{"class":101},[91,15364,15365,15367,15369],{"class":93,"line":105},[91,15366,15332],{"class":108},[91,15368,112],{"class":101},[91,15370,15371],{"class":169},"\"^4.30.1\"\n",[91,15373,15374],{"class":93,"line":121},[91,15375,15376],{"class":101},"},\n",[16,15378,15379,15382,15383,15386,15387,15390,15391,15394],{},[31,15380,15381],{},"optionalDependencies","에 등록한 의존성은 ",[792,15384,15385],{},"설치 실패해도 전체 설치 과정에 영향을 주지 않는"," 의존성이다. 즉, ",[792,15388,15389],{},"설치 가능하면 설치하고",", 불가능하면 ",[792,15392,15393],{},"무시","한다.",[16,15396,15397,15398,15400],{},"플랫폼 환경에 따라서 설치해야하는 의존성이 있는 경우, 특히 이 파트를 사용한다. ",[31,15399,15349],{},"는 애플실리콘에서만 설치되는 패키지이다.",[829,15402,15403],{},"html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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":87,"searchDepth":105,"depth":105,"links":15405},[],"2025-01-20","npm의 의존성 설치 실패 문제. @rollup\u002Frollup-darwin-arm64 패키지가 애플 실리콘에서만 설치 가능하다. Windows 및 Linux 환경에서의 설치 불가 원인. optionalDependencies의 사용 방법.","npm-rollup-os",{},"\u002Fblog\u002Fnpm-rollup-os",{"title":15287,"description":15407},{"loc":15410},"blog\u002Fnpm-rollup-os",[15415,1261,15416,5447,15417],"rollup","dependencies","npm","9ngtBXz8zP9KDaoY46LJmbji5nAVozk7HlaIVwsvkZ4",{"id":15420,"title":15421,"body":15422,"created":16313,"description":16314,"extension":843,"filename":16315,"meta":16316,"navigation":846,"path":16317,"seo":16318,"sitemap":16319,"stem":16320,"subject":2862,"tags":16321,"updated":16313,"volume":853,"__hash__":16327},"blog\u002Fblog\u002Fnuxt-content-v2-custom-components.md","Nuxt Content v2에서 MDC 커스텀 컴포넌트 렌더링하기",{"type":8,"value":15423,"toc":16305},[15424,15427,15430,15434,15445,15466,15484,15490,15500,15504,15514,15742,15751,15755,15758,15798,15873,15883,15887,15909,15912,15926,15929,15982,15985,16261,16267,16271,16277,16285,16288,16290,16296,16302],[16,15425,15426],{},"Obsidian에서 작성한 기술 문서를 Nuxt Content v2 블로그로 옮기면서 단순 Markdown만으로 표현하기 어려운 요소가 생겼다. 링크의 제목, 설명, 파비콘과 대표 이미지를 한 묶음으로 보여 주는 CardLink가 대표적이었다.",[16,15428,15429],{},"처음에는 fenced code block 안의 텍스트를 직접 읽어 카드로 바꾸려고 했다. 하지만 Markdown 파서가 일반 문자열과 링크를 서로 다른 VNode로 나누기 때문에 슬롯의 자식 구조를 평탄화하는 코드가 복잡해졌다. Nuxt Content가 제공하는 MDC(Markdown Components) 구문으로 컴포넌트와 데이터를 명시하는 편이 구조가 단순했다.",[49,15431,15433],{"id":15432},"markdown이-ast의-컴포넌트-노드로-바뀌는-과정","Markdown이 AST의 컴포넌트 노드로 바뀌는 과정",[16,15435,15436,15437,15440,15441,15444],{},"Nuxt Content v2의 ",[31,15438,15439],{},"queryContent()","는 Markdown을 그대로 반환하지 않고 렌더링 가능한 AST로 변환한다. MDC 블록의 이름은 AST 노드의 ",[31,15442,15443],{},"tag","가 된다.",[82,15446,15449],{"className":15447,"code":15448,"language":843,"meta":87,"style":87},"language-md shiki shiki-themes github-light github-dark","::cardlink\nCardLink 내부에 전달할 내용\n::\n",[31,15450,15451,15456,15461],{"__ignoreMap":87},[91,15452,15453],{"class":93,"line":94},[91,15454,15455],{"class":101},"::cardlink\n",[91,15457,15458],{"class":93,"line":105},[91,15459,15460],{"class":101},"CardLink 내부에 전달할 내용\n",[91,15462,15463],{"class":93,"line":121},[91,15464,15465],{"class":101},"::\n",[16,15467,15468,15469,15472,15473,15476,15477,64,15479,64,15481,15483],{},"아래 화면에서는 ",[31,15470,15471],{},"::cardlink"," 블록이 ",[31,15474,15475],{},"tag: \"cardlink\"","인 element로 파싱된 것을 확인할 수 있다. 같은 문서 안의 ",[31,15478,82],{},[31,15480,16],{},[31,15482,4530],{}," 같은 Markdown 요소와 동일한 children 배열에 들어간다.",[16,15485,15486],{},[19,15487],{"alt":15488,"src":15489},"Nuxt Content AST에서 cardlink 컴포넌트 노드를 확인한 화면","\u002Fblog\u002Fimg\u002Fnuxt-content-v2-custom-components\u002Fcontent-ast-cardlink.png",[16,15491,15492,15493,15495,15496,15499],{},"이 단계에서는 ",[31,15494,1112],{},"라는 이름만 AST에 존재한다. 실제 Vue 컴포넌트로 렌더링하려면 ",[31,15497,15498],{},"ContentRendererMarkdown","에 이름과 컴포넌트의 매핑을 전달해야 한다.",[49,15501,15503],{"id":15502},"contentrenderermarkdown에-컴포넌트-매핑하기","ContentRendererMarkdown에 컴포넌트 매핑하기",[16,15505,15506,15507,15509,15510,15513],{},"Nuxt Content v2에서 기본 슬롯을 직접 구성하고 ",[31,15508,15498],{},"을 사용한다면 ",[31,15511,15512],{},"components"," prop을 함께 넘긴다.",[82,15515,15517],{"className":1934,"code":15516,"language":1936,"meta":87,"style":87},"\u003Cscript setup lang=\"ts\">\nimport CardLink from '~\u002Fcomponents\u002Fcontent\u002FCardLink.vue'\n\nconst route = useRoute()\nconst { data: article } = await useAsyncData(\n  `article:${route.path}`,\n  () => queryContent(route.path).findOne(),\n)\n\nconst contentComponents = {\n  cardlink: CardLink,\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CContentRenderer v-if=\"article\" :value=\"article\">\n    \u003CContentRendererMarkdown\n      :value=\"article\"\n      :components=\"contentComponents\"\n    \u002F>\n  \u003C\u002FContentRenderer>\n\u003C\u002Ftemplate>\n",[31,15518,15519,15535,15547,15551,15563,15587,15603,15621,15625,15629,15640,15645,15649,15657,15661,15669,15693,15700,15710,15720,15725,15734],{"__ignoreMap":87},[91,15520,15521,15523,15525,15527,15529,15531,15533],{"class":93,"line":94},[91,15522,156],{"class":101},[91,15524,1945],{"class":159},[91,15526,1948],{"class":97},[91,15528,1951],{"class":97},[91,15530,166],{"class":101},[91,15532,1956],{"class":169},[91,15534,173],{"class":101},[91,15536,15537,15539,15542,15544],{"class":93,"line":105},[91,15538,2499],{"class":566},[91,15540,15541],{"class":101}," CardLink ",[91,15543,2505],{"class":566},[91,15545,15546],{"class":169}," '~\u002Fcomponents\u002Fcontent\u002FCardLink.vue'\n",[91,15548,15549],{"class":93,"line":121},[91,15550,1450],{"emptyLinePlaceholder":846},[91,15552,15553,15555,15557,15559,15561],{"class":93,"line":134},[91,15554,1968],{"class":566},[91,15556,12259],{"class":108},[91,15558,1366],{"class":566},[91,15560,12264],{"class":97},[91,15562,9313],{"class":101},[91,15564,15565,15567,15569,15571,15573,15576,15578,15580,15582,15585],{"class":93,"line":228},[91,15566,1968],{"class":566},[91,15568,13969],{"class":101},[91,15570,7901],{"class":1172},[91,15572,112],{"class":101},[91,15574,15575],{"class":108},"article",[91,15577,13985],{"class":101},[91,15579,166],{"class":566},[91,15581,1390],{"class":566},[91,15583,15584],{"class":97}," useAsyncData",[91,15586,9266],{"class":101},[91,15588,15589,15592,15594,15596,15599,15601],{"class":93,"line":250},[91,15590,15591],{"class":169},"  `article:${",[91,15593,14102],{"class":101},[91,15595,1235],{"class":169},[91,15597,15598],{"class":101},"path",[91,15600,1241],{"class":169},[91,15602,7560],{"class":101},[91,15604,15605,15608,15610,15613,15616,15619],{"class":93,"line":260},[91,15606,15607],{"class":101},"  () ",[91,15609,1179],{"class":566},[91,15611,15612],{"class":97}," queryContent",[91,15614,15615],{"class":101},"(route.path).",[91,15617,15618],{"class":97},"findOne",[91,15620,8275],{"class":101},[91,15622,15623],{"class":93,"line":274},[91,15624,3487],{"class":101},[91,15626,15627],{"class":93,"line":284},[91,15628,1450],{"emptyLinePlaceholder":846},[91,15630,15631,15633,15636,15638],{"class":93,"line":299},[91,15632,1968],{"class":566},[91,15634,15635],{"class":108}," contentComponents",[91,15637,1366],{"class":566},[91,15639,102],{"class":101},[91,15641,15642],{"class":93,"line":319},[91,15643,15644],{"class":101},"  cardlink: CardLink,\n",[91,15646,15647],{"class":93,"line":334},[91,15648,137],{"class":101},[91,15650,15651,15653,15655],{"class":93,"line":355},[91,15652,493],{"class":101},[91,15654,1945],{"class":159},[91,15656,173],{"class":101},[91,15658,15659],{"class":93,"line":364},[91,15660,1450],{"emptyLinePlaceholder":846},[91,15662,15663,15665,15667],{"class":93,"line":378},[91,15664,156],{"class":101},[91,15666,2118],{"class":159},[91,15668,173],{"class":101},[91,15670,15671,15673,15676,15679,15681,15684,15687,15689,15691],{"class":93,"line":387},[91,15672,2125],{"class":101},[91,15674,15675],{"class":159},"ContentRenderer",[91,15677,15678],{"class":97}," v-if",[91,15680,166],{"class":101},[91,15682,15683],{"class":169},"\"article\"",[91,15685,15686],{"class":97}," :value",[91,15688,166],{"class":101},[91,15690,15683],{"class":169},[91,15692,173],{"class":101},[91,15694,15695,15697],{"class":93,"line":402},[91,15696,178],{"class":101},[91,15698,15699],{"class":159},"ContentRendererMarkdown\n",[91,15701,15702,15705,15707],{"class":93,"line":422},[91,15703,15704],{"class":97},"      :value",[91,15706,166],{"class":101},[91,15708,15709],{"class":169},"\"article\"\n",[91,15711,15712,15715,15717],{"class":93,"line":438},[91,15713,15714],{"class":97},"      :components",[91,15716,166],{"class":101},[91,15718,15719],{"class":169},"\"contentComponents\"\n",[91,15721,15722],{"class":93,"line":458},[91,15723,15724],{"class":101},"    \u002F>\n",[91,15726,15727,15730,15732],{"class":93,"line":467},[91,15728,15729],{"class":101},"  \u003C\u002F",[91,15731,15675],{"class":159},[91,15733,173],{"class":101},[91,15735,15736,15738,15740],{"class":93,"line":481},[91,15737,493],{"class":101},[91,15739,2118],{"class":159},[91,15741,173],{"class":101},[16,15743,15744,15747,15748,15750],{},[31,15745,15746],{},"contentComponents","의 ",[31,15749,1112],{}," 키가 앞에서 확인한 AST의 tag와 일치해야 한다. 매핑이 빠지면 Markdown에는 노드가 있어도 기대한 CardLink UI로 렌더링되지 않는다.",[49,15752,15754],{"id":15753},"본문은-slot으로-전달하기","본문은 slot으로 전달하기",[16,15756,15757],{},"MDC 블록의 시작과 끝 사이에 작성한 Markdown은 기본 슬롯으로 전달된다. 단순한 안내 상자처럼 내부의 서식을 그대로 보여 주려면 컴포넌트에서 슬롯을 렌더링하면 된다.",[82,15759,15761],{"className":15447,"code":15760,"language":843,"meta":87,"style":87},"::notice-card\n이 안에서는 **굵은 글씨**와 [링크](https:\u002F\u002Fexample.com)를 사용할 수 있다.\n::\n",[31,15762,15763,15768,15794],{"__ignoreMap":87},[91,15764,15765],{"class":93,"line":94},[91,15766,15767],{"class":101},"::notice-card\n",[91,15769,15770,15773,15777,15780,15784,15787,15791],{"class":93,"line":105},[91,15771,15772],{"class":101},"이 안에서는 ",[91,15774,15776],{"class":15775},"sIZ1i","**굵은 글씨**",[91,15778,15779],{"class":101},"와 [",[91,15781,15783],{"class":15782},"svl0z","링크",[91,15785,15786],{"class":101},"](",[91,15788,15790],{"class":15789},"s2frl","https:\u002F\u002Fexample.com",[91,15792,15793],{"class":101},")를 사용할 수 있다.\n",[91,15795,15796],{"class":93,"line":121},[91,15797,15465],{"class":101},[82,15799,15801],{"className":1934,"code":15800,"language":1936,"meta":87,"style":87},"\u003C!-- components\u002Fcontent\u002FNoticeCard.vue -->\n\u003Ctemplate>\n  \u003Caside class=\"notice-card\">\n    \u003CContentSlot :use=\"$slots.default\" unwrap=\"p\" \u002F>\n  \u003C\u002Faside>\n\u003C\u002Ftemplate>\n",[31,15802,15803,15808,15816,15832,15857,15865],{"__ignoreMap":87},[91,15804,15805],{"class":93,"line":94},[91,15806,15807],{"class":1343},"\u003C!-- components\u002Fcontent\u002FNoticeCard.vue -->\n",[91,15809,15810,15812,15814],{"class":93,"line":105},[91,15811,156],{"class":101},[91,15813,2118],{"class":159},[91,15815,173],{"class":101},[91,15817,15818,15820,15823,15825,15827,15830],{"class":93,"line":121},[91,15819,2125],{"class":101},[91,15821,15822],{"class":159},"aside",[91,15824,163],{"class":97},[91,15826,166],{"class":101},[91,15828,15829],{"class":169},"\"notice-card\"",[91,15831,173],{"class":101},[91,15833,15834,15836,15839,15842,15844,15847,15850,15852,15855],{"class":93,"line":134},[91,15835,178],{"class":101},[91,15837,15838],{"class":159},"ContentSlot",[91,15840,15841],{"class":97}," :use",[91,15843,166],{"class":101},[91,15845,15846],{"class":169},"\"$slots.default\"",[91,15848,15849],{"class":97}," unwrap",[91,15851,166],{"class":101},[91,15853,15854],{"class":169},"\"p\"",[91,15856,2147],{"class":101},[91,15858,15859,15861,15863],{"class":93,"line":228},[91,15860,15729],{"class":101},[91,15862,15822],{"class":159},[91,15864,173],{"class":101},[91,15866,15867,15869,15871],{"class":93,"line":250},[91,15868,493],{"class":101},[91,15870,2118],{"class":159},[91,15872,173],{"class":101},[16,15874,15875,15876,15878,15879,15882],{},"Nuxt Content v2에서는 ",[31,15877,15838],{},"으로 Markdown 슬롯을 렌더링하고 ",[31,15880,15881],{},"unwrap=\"p\"","로 불필요한 바깥 문단을 제거할 수 있다. 슬롯은 설명문처럼 구조를 유지해야 하는 콘텐츠에 적합하다.",[49,15884,15886],{"id":15885},"구조화된-값은-yaml-props로-전달하기","구조화된 값은 YAML props로 전달하기",[16,15888,15889,15890,64,15892,64,15894,64,15896,64,15899,64,15902,15905,15906,15908],{},"CardLink는 본문보다 ",[31,15891,5177],{},[31,15893,13972],{},[31,15895,13977],{},[31,15897,15898],{},"host",[31,15900,15901],{},"favicon",[31,15903,15904],{},"image","처럼 이름이 정해진 값이 중요하다. 이 데이터를 슬롯의 VNode에서 다시 문자열로 조립하면 링크가 ",[31,15907,4974],{}," 노드로 분리되는 경우까지 처리해야 한다.",[16,15910,15911],{},"MDC는 중괄호를 사용하는 인라인 props를 지원한다.",[82,15913,15915],{"className":15447,"code":15914,"language":843,"meta":87,"style":87},"::cardlink{url=\"https:\u002F\u002Fexample.com\" title=\"Example\" host=\"example.com\"}\n::\n",[31,15916,15917,15922],{"__ignoreMap":87},[91,15918,15919],{"class":93,"line":94},[91,15920,15921],{"class":101},"::cardlink{url=\"https:\u002F\u002Fexample.com\" title=\"Example\" host=\"example.com\"}\n",[91,15923,15924],{"class":93,"line":105},[91,15925,15465],{"class":101},[16,15927,15928],{},"값이 많아지면 한 줄이 길어지므로 YAML props 방식이 읽고 수정하기 쉽다.",[82,15930,15932],{"className":15447,"code":15931,"language":843,"meta":87,"style":87},"::cardlink\n---\nurl: https:\u002F\u002Fexample.com\u002F\ntitle: \"Example\"\ndescription: \"CardLink 컴포넌트에 전달할 설명\"\nhost: example.com\nfavicon: https:\u002F\u002Fexample.com\u002Ffavicon.ico\nimage: https:\u002F\u002Fexample.com\u002Fog.png\n---\n::\n",[31,15933,15934,15938,15944,15949,15954,15959,15964,15969,15974,15978],{"__ignoreMap":87},[91,15935,15936],{"class":93,"line":94},[91,15937,15455],{"class":101},[91,15939,15940],{"class":93,"line":105},[91,15941,15943],{"class":15942},"sq-ep","---\n",[91,15945,15946],{"class":93,"line":121},[91,15947,15948],{"class":101},"url: https:\u002F\u002Fexample.com\u002F\n",[91,15950,15951],{"class":93,"line":134},[91,15952,15953],{"class":101},"title: \"Example\"\n",[91,15955,15956],{"class":93,"line":228},[91,15957,15958],{"class":101},"description: \"CardLink 컴포넌트에 전달할 설명\"\n",[91,15960,15961],{"class":93,"line":250},[91,15962,15963],{"class":101},"host: example.com\n",[91,15965,15966],{"class":93,"line":260},[91,15967,15968],{"class":101},"favicon: https:\u002F\u002Fexample.com\u002Ffavicon.ico\n",[91,15970,15971],{"class":93,"line":274},[91,15972,15973],{"class":101},"image: https:\u002F\u002Fexample.com\u002Fog.png\n",[91,15975,15976],{"class":93,"line":284},[91,15977,15943],{"class":15942},[91,15979,15980],{"class":93,"line":299},[91,15981,15465],{"class":101},[16,15983,15984],{},"컴포넌트에서는 일반 Vue props로 받는다.",[82,15986,15988],{"className":1934,"code":15987,"language":1936,"meta":87,"style":87},"\u003Cscript setup lang=\"ts\">\ndefineProps\u003C{\n  url: string\n  title: string\n  description?: string\n  host?: string\n  favicon?: string\n  image?: string\n}>()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Ca :href=\"url\" class=\"card-link\" target=\"_blank\" rel=\"noreferrer\">\n    \u003Cimg v-if=\"image\" :src=\"image\" alt=\"\" class=\"card-link__image\" \u002F>\n    \u003Cspan class=\"card-link__body\">\n      \u003Cstrong>{{ title }}\u003C\u002Fstrong>\n      \u003Cspan v-if=\"description\">{{ description }}\u003C\u002Fspan>\n      \u003Csmall v-if=\"host\">{{ host }}\u003C\u002Fsmall>\n    \u003C\u002Fspan>\n  \u003C\u002Fa>\n\u003C\u002Ftemplate>\n",[31,15989,15990,16006,16013,16022,16030,16040,16049,16058,16067,16072,16080,16084,16092,16131,16167,16182,16196,16216,16237,16245,16253],{"__ignoreMap":87},[91,15991,15992,15994,15996,15998,16000,16002,16004],{"class":93,"line":94},[91,15993,156],{"class":101},[91,15995,1945],{"class":159},[91,15997,1948],{"class":97},[91,15999,1951],{"class":97},[91,16001,166],{"class":101},[91,16003,1956],{"class":169},[91,16005,173],{"class":101},[91,16007,16008,16011],{"class":93,"line":105},[91,16009,16010],{"class":97},"defineProps",[91,16012,2205],{"class":101},[91,16014,16015,16017,16019],{"class":93,"line":121},[91,16016,11612],{"class":1172},[91,16018,1208],{"class":566},[91,16020,16021],{"class":108}," string\n",[91,16023,16024,16026,16028],{"class":93,"line":134},[91,16025,11645],{"class":1172},[91,16027,1208],{"class":566},[91,16029,16021],{"class":108},[91,16031,16032,16035,16038],{"class":93,"line":228},[91,16033,16034],{"class":1172},"  description",[91,16036,16037],{"class":566},"?:",[91,16039,16021],{"class":108},[91,16041,16042,16045,16047],{"class":93,"line":250},[91,16043,16044],{"class":1172},"  host",[91,16046,16037],{"class":566},[91,16048,16021],{"class":108},[91,16050,16051,16054,16056],{"class":93,"line":260},[91,16052,16053],{"class":1172},"  favicon",[91,16055,16037],{"class":566},[91,16057,16021],{"class":108},[91,16059,16060,16063,16065],{"class":93,"line":274},[91,16061,16062],{"class":1172},"  image",[91,16064,16037],{"class":566},[91,16066,16021],{"class":108},[91,16068,16069],{"class":93,"line":284},[91,16070,16071],{"class":101},"}>()\n",[91,16073,16074,16076,16078],{"class":93,"line":299},[91,16075,493],{"class":101},[91,16077,1945],{"class":159},[91,16079,173],{"class":101},[91,16081,16082],{"class":93,"line":319},[91,16083,1450],{"emptyLinePlaceholder":846},[91,16085,16086,16088,16090],{"class":93,"line":334},[91,16087,156],{"class":101},[91,16089,2118],{"class":159},[91,16091,173],{"class":101},[91,16093,16094,16096,16098,16101,16103,16106,16108,16110,16113,16116,16118,16121,16124,16126,16129],{"class":93,"line":355},[91,16095,2125],{"class":101},[91,16097,4306],{"class":159},[91,16099,16100],{"class":97}," :href",[91,16102,166],{"class":101},[91,16104,16105],{"class":169},"\"url\"",[91,16107,163],{"class":97},[91,16109,166],{"class":101},[91,16111,16112],{"class":169},"\"card-link\"",[91,16114,16115],{"class":97}," target",[91,16117,166],{"class":101},[91,16119,16120],{"class":169},"\"_blank\"",[91,16122,16123],{"class":97}," rel",[91,16125,166],{"class":101},[91,16127,16128],{"class":169},"\"noreferrer\"",[91,16130,173],{"class":101},[91,16132,16133,16135,16137,16139,16141,16144,16147,16149,16151,16154,16156,16158,16160,16162,16165],{"class":93,"line":364},[91,16134,178],{"class":101},[91,16136,19],{"class":159},[91,16138,15678],{"class":97},[91,16140,166],{"class":101},[91,16142,16143],{"class":169},"\"image\"",[91,16145,16146],{"class":97}," :src",[91,16148,166],{"class":101},[91,16150,16143],{"class":169},[91,16152,16153],{"class":97}," alt",[91,16155,166],{"class":101},[91,16157,13747],{"class":169},[91,16159,163],{"class":97},[91,16161,166],{"class":101},[91,16163,16164],{"class":169},"\"card-link__image\"",[91,16166,2147],{"class":101},[91,16168,16169,16171,16173,16175,16177,16180],{"class":93,"line":378},[91,16170,178],{"class":101},[91,16172,91],{"class":159},[91,16174,163],{"class":97},[91,16176,166],{"class":101},[91,16178,16179],{"class":169},"\"card-link__body\"",[91,16181,173],{"class":101},[91,16183,16184,16187,16189,16192,16194],{"class":93,"line":387},[91,16185,16186],{"class":101},"      \u003C",[91,16188,792],{"class":159},[91,16190,16191],{"class":101},">{{ title }}\u003C\u002F",[91,16193,792],{"class":159},[91,16195,173],{"class":101},[91,16197,16198,16200,16202,16204,16206,16209,16212,16214],{"class":93,"line":402},[91,16199,16186],{"class":101},[91,16201,91],{"class":159},[91,16203,15678],{"class":97},[91,16205,166],{"class":101},[91,16207,16208],{"class":169},"\"description\"",[91,16210,16211],{"class":101},">{{ description }}\u003C\u002F",[91,16213,91],{"class":159},[91,16215,173],{"class":101},[91,16217,16218,16220,16223,16225,16227,16230,16233,16235],{"class":93,"line":422},[91,16219,16186],{"class":101},[91,16221,16222],{"class":159},"small",[91,16224,15678],{"class":97},[91,16226,166],{"class":101},[91,16228,16229],{"class":169},"\"host\"",[91,16231,16232],{"class":101},">{{ host }}\u003C\u002F",[91,16234,16222],{"class":159},[91,16236,173],{"class":101},[91,16238,16239,16241,16243],{"class":93,"line":438},[91,16240,277],{"class":101},[91,16242,91],{"class":159},[91,16244,173],{"class":101},[91,16246,16247,16249,16251],{"class":93,"line":458},[91,16248,15729],{"class":101},[91,16250,4306],{"class":159},[91,16252,173],{"class":101},[91,16254,16255,16257,16259],{"class":93,"line":467},[91,16256,493],{"class":101},[91,16258,2118],{"class":159},[91,16260,173],{"class":101},[16,16262,16263,16264,16266],{},"이 방식에서는 파서가 props를 구성하므로 컴포넌트가 슬롯의 내부 VNode 형태에 의존하지 않는다. URL 안의 ",[31,16265,1208],{},"나 제목의 특수 문자가 YAML 해석을 방해할 수 있으므로 값이 복잡하면 따옴표로 감싸는 편이 안전하다.",[49,16268,16270],{"id":16269},"기존-markdown-표현을-바꿀지-결정하기","기존 Markdown 표현을 바꿀지 결정하기",[16,16272,16273,16274,16276],{},"Obsidian 플러그인이 생성한 fenced ",[31,16275,1112],{}," 블록이나 callout은 MDC와 문법이 다르다. 선택지는 두 가지다.",[24,16278,16279,16282],{},[27,16280,16281],{},"원고를 발행할 때 fenced block을 MDC로 변환한다.",[27,16283,16284],{},"Markdown의 기본 태그를 유지해야 한다면 Prose 컴포넌트나 Content transformer에서 변환한다.",[16,16286,16287],{},"CardLink처럼 독립된 블록은 발행 단계에서 MDC로 변환하는 방법이 단순하다. 반면 모든 링크나 문단의 표현을 바꾸려면 해당 HTML 태그를 담당하는 Prose 컴포넌트를 재정의하는 편이 낫다. 문서 전체의 파싱 결과를 컴포넌트 안에서 다시 해석하는 방식은 AST 구조가 바뀔 때 깨지기 쉬우므로 마지막 수단으로 남긴다.",[49,16289,6005],{"id":6004},[1112,16291],{"description":16292,"host":16293,"title":16294,"url":16295},"Nuxt Content v2의 ContentRenderer와 커스텀 컴포넌트 매핑 방법","v2.content.nuxt.com","ContentRenderer - Nuxt Content v2","https:\u002F\u002Fv2.content.nuxt.com\u002Fcomponents\u002Fcontent-renderer\u002F",[1112,16297],{"description":16298,"host":16299,"title":16300,"url":16301},"MDC의 Vue 컴포넌트, 슬롯, 인라인 props와 YAML props 구문","content.nuxt.com","Markdown - Nuxt Content","https:\u002F\u002Fcontent.nuxt.com\u002Fdocs\u002Ffiles\u002Fmarkdown",[829,16303,16304],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sIZ1i, html code.shiki .sIZ1i{--shiki-default:#24292E;--shiki-default-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold}html pre.shiki code .svl0z, html code.shiki .svl0z{--shiki-default:#032F62;--shiki-default-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline}html pre.shiki code .s2frl, html code.shiki .s2frl{--shiki-default:#24292E;--shiki-default-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline}html pre.shiki code .sq-ep, html code.shiki .sq-ep{--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}",{"title":87,"searchDepth":105,"depth":105,"links":16306},[16307,16308,16309,16310,16311,16312],{"id":15432,"depth":105,"text":15433},{"id":15502,"depth":105,"text":15503},{"id":15753,"depth":105,"text":15754},{"id":15885,"depth":105,"text":15886},{"id":16269,"depth":105,"text":16270},{"id":6004,"depth":105,"text":6005},"2025-03-28","Nuxt Content v2의 Markdown AST에 CardLink 같은 Vue 컴포넌트를 매핑하고, MDC의 슬롯·인라인 props·YAML props 중 유지보수하기 좋은 작성 방식을 정리한다.","nuxt-content-v2-custom-components",{},"\u002Fblog\u002Fnuxt-content-v2-custom-components",{"title":15421,"description":16314},{"loc":16317},"blog\u002Fnuxt-content-v2-custom-components",[16322,16323,16324,16325,16326],"nuxt","nuxt-content","vue3","markdown","mdc","WtkfuruQRvgssY1hoYxmHVO_XOLBuW9YRFqw6hgE9eA",{"id":16329,"title":16330,"body":16331,"created":15406,"description":17124,"extension":843,"filename":17125,"meta":17126,"navigation":846,"path":17127,"seo":17128,"sitemap":17129,"stem":17130,"subject":2862,"tags":17131,"updated":15406,"volume":853,"__hash__":17133},"blog\u002Fblog\u002Fnuxt-pinia-get-active-pinia.md","Nuxt Pinia 시작하기 + getActivePinia 에러",{"type":8,"value":16332,"toc":17114},[16333,16336,16340,16364,16368,16399,16405,16409,16418,16424,16567,16571,16578,16691,16695,16701,16752,16755,16759,16779,16782,16796,16800,16853,16856,16870,16873,16948,16962,16965,16969,17054,17057,17108,17111],[16,16334,16335],{},"Nuxt 프로젝트에서 Pinia를 사용하는 방법은 Vue3와 다르다.",[49,16337,16339],{"id":16338},"pinia-설치","Pinia 설치",[82,16341,16343],{"className":8427,"code":16342,"language":8429,"meta":87,"style":87},"npm install @pinia\u002Fnuxt\nyarn add @pinia\u002Fnuxt\n",[31,16344,16345,16354],{"__ignoreMap":87},[91,16346,16347,16349,16351],{"class":93,"line":94},[91,16348,15417],{"class":97},[91,16350,8653],{"class":169},[91,16352,16353],{"class":169}," @pinia\u002Fnuxt\n",[91,16355,16356,16359,16362],{"class":93,"line":105},[91,16357,16358],{"class":97},"yarn",[91,16360,16361],{"class":169}," add",[91,16363,16353],{"class":169},[49,16365,16367],{"id":16366},"nuxt-설정-파일에-pinia-추가","Nuxt 설정 파일에 Pinia 추가",[82,16369,16371],{"className":1154,"code":16370,"language":1156,"meta":87,"style":87},"export default defineNuxtConfig({\n  modules: ['@pinia\u002Fnuxt'],\n})\n",[31,16372,16373,16384,16395],{"__ignoreMap":87},[91,16374,16375,16377,16379,16382],{"class":93,"line":94},[91,16376,2574],{"class":566},[91,16378,12107],{"class":566},[91,16380,16381],{"class":97}," defineNuxtConfig",[91,16383,7549],{"class":101},[91,16385,16386,16389,16392],{"class":93,"line":105},[91,16387,16388],{"class":101},"  modules: [",[91,16390,16391],{"class":169},"'@pinia\u002Fnuxt'",[91,16393,16394],{"class":101},"],\n",[91,16396,16397],{"class":93,"line":121},[91,16398,9444],{"class":101},[16,16400,16401,16404],{},[31,16402,16403],{},"nuxt.config.ts"," 파일에 모듈을 추가해야 한다.",[49,16406,16408],{"id":16407},"스토어-생성","스토어 생성",[16,16410,16411,16414,16415,16417],{},[31,16412,16413],{},"stores"," 폴더를 만들고 그 안에 스토어 파일을 작성한다. Nuxt에서 ",[31,16416,16413],{}," 폴더를 자동으로 인식해서 따로 import할 필요 없다.",[16,16419,16420,16421],{},"예시: ",[31,16422,16423],{},"stores\u002Fcounter.ts",[82,16425,16427],{"className":1154,"code":16426,"language":1156,"meta":87,"style":87},"import { defineStore } from 'pinia'\nimport { ref } from 'vue'\n\nexport const useCounterStore = defineStore('counter', () => {\n  const count = ref(0)\n  const doubleCount = computed(() => count.value * 2)\n\n  function increment() {\n    count.value++\n  }\n\n  return { count, doubleCount, increment }\n})\n",[31,16428,16429,16441,16453,16457,16483,16501,16526,16530,16540,16548,16552,16556,16563],{"__ignoreMap":87},[91,16430,16431,16433,16436,16438],{"class":93,"line":94},[91,16432,2499],{"class":566},[91,16434,16435],{"class":101}," { defineStore } ",[91,16437,2505],{"class":566},[91,16439,16440],{"class":169}," 'pinia'\n",[91,16442,16443,16445,16448,16450],{"class":93,"line":105},[91,16444,2499],{"class":566},[91,16446,16447],{"class":101}," { ref } ",[91,16449,2505],{"class":566},[91,16451,16452],{"class":169}," 'vue'\n",[91,16454,16455],{"class":93,"line":121},[91,16456,1450],{"emptyLinePlaceholder":846},[91,16458,16459,16461,16464,16467,16469,16472,16474,16477,16479,16481],{"class":93,"line":134},[91,16460,2574],{"class":566},[91,16462,16463],{"class":566}," const",[91,16465,16466],{"class":108}," useCounterStore",[91,16468,1366],{"class":566},[91,16470,16471],{"class":97}," defineStore",[91,16473,795],{"class":101},[91,16475,16476],{"class":169},"'counter'",[91,16478,9612],{"class":101},[91,16480,1179],{"class":566},[91,16482,102],{"class":101},[91,16484,16485,16487,16490,16492,16495,16497,16499],{"class":93,"line":228},[91,16486,2641],{"class":566},[91,16488,16489],{"class":108}," count",[91,16491,1366],{"class":566},[91,16493,16494],{"class":97}," ref",[91,16496,795],{"class":101},[91,16498,1578],{"class":108},[91,16500,3487],{"class":101},[91,16502,16503,16505,16508,16510,16512,16514,16516,16519,16521,16524],{"class":93,"line":250},[91,16504,2641],{"class":566},[91,16506,16507],{"class":108}," doubleCount",[91,16509,1366],{"class":566},[91,16511,12308],{"class":97},[91,16513,2088],{"class":101},[91,16515,1179],{"class":566},[91,16517,16518],{"class":101}," count.value ",[91,16520,6591],{"class":566},[91,16522,16523],{"class":108}," 2",[91,16525,3487],{"class":101},[91,16527,16528],{"class":93,"line":260},[91,16529,1450],{"emptyLinePlaceholder":846},[91,16531,16532,16535,16538],{"class":93,"line":274},[91,16533,16534],{"class":566},"  function",[91,16536,16537],{"class":97}," increment",[91,16539,2007],{"class":101},[91,16541,16542,16545],{"class":93,"line":284},[91,16543,16544],{"class":101},"    count.value",[91,16546,16547],{"class":566},"++\n",[91,16549,16550],{"class":93,"line":299},[91,16551,1698],{"class":101},[91,16553,16554],{"class":93,"line":319},[91,16555,1450],{"emptyLinePlaceholder":846},[91,16557,16558,16560],{"class":93,"line":334},[91,16559,2695],{"class":566},[91,16561,16562],{"class":101}," { count, doubleCount, increment }\n",[91,16564,16565],{"class":93,"line":355},[91,16566,9444],{"class":101},[49,16568,16570],{"id":16569},"컴포넌트에서-사용하기","컴포넌트에서 사용하기",[16,16572,16573,16574,16577],{},"컴포넌트에서 ",[31,16575,16576],{},"useCounterStore","를 불러와서 사용하면 된다.",[82,16579,16581],{"className":1934,"code":16580,"language":1936,"meta":87,"style":87},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cp>Count: {{ counter.count }}\u003C\u002Fp>\n    \u003Cbutton @click=\"counter.increment\">증가\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst counter = useCounterStore()\n\u003C\u002Fscript>\n",[31,16582,16583,16591,16599,16612,16634,16642,16650,16654,16670,16683],{"__ignoreMap":87},[91,16584,16585,16587,16589],{"class":93,"line":94},[91,16586,156],{"class":101},[91,16588,2118],{"class":159},[91,16590,173],{"class":101},[91,16592,16593,16595,16597],{"class":93,"line":105},[91,16594,2125],{"class":101},[91,16596,160],{"class":159},[91,16598,173],{"class":101},[91,16600,16601,16603,16605,16608,16610],{"class":93,"line":121},[91,16602,178],{"class":101},[91,16604,16],{"class":159},[91,16606,16607],{"class":101},">Count: {{ counter.count }}\u003C\u002F",[91,16609,16],{"class":159},[91,16611,173],{"class":101},[91,16613,16614,16616,16619,16622,16624,16627,16630,16632],{"class":93,"line":134},[91,16615,178],{"class":101},[91,16617,16618],{"class":159},"button",[91,16620,16621],{"class":97}," @click",[91,16623,166],{"class":101},[91,16625,16626],{"class":169},"\"counter.increment\"",[91,16628,16629],{"class":101},">증가\u003C\u002F",[91,16631,16618],{"class":159},[91,16633,173],{"class":101},[91,16635,16636,16638,16640],{"class":93,"line":228},[91,16637,15729],{"class":101},[91,16639,160],{"class":159},[91,16641,173],{"class":101},[91,16643,16644,16646,16648],{"class":93,"line":250},[91,16645,493],{"class":101},[91,16647,2118],{"class":159},[91,16649,173],{"class":101},[91,16651,16652],{"class":93,"line":260},[91,16653,1450],{"emptyLinePlaceholder":846},[91,16655,16656,16658,16660,16662,16664,16666,16668],{"class":93,"line":274},[91,16657,156],{"class":101},[91,16659,1945],{"class":159},[91,16661,1948],{"class":97},[91,16663,1951],{"class":97},[91,16665,166],{"class":101},[91,16667,1956],{"class":169},[91,16669,173],{"class":101},[91,16671,16672,16674,16677,16679,16681],{"class":93,"line":284},[91,16673,1968],{"class":566},[91,16675,16676],{"class":108}," counter",[91,16678,1366],{"class":566},[91,16680,16466],{"class":97},[91,16682,9313],{"class":101},[91,16684,16685,16687,16689],{"class":93,"line":299},[91,16686,493],{"class":101},[91,16688,1945],{"class":159},[91,16690,173],{"class":101},[49,16692,16694],{"id":16693},"선택-서버-사이드-렌더링ssr-설정","(선택) 서버 사이드 렌더링(SSR) 설정",[16,16696,16697,16698,16700],{},"Pinia는 SSR도 지원한다. 특별한 설정 없이도 기본적으로 SSR에서 잘 작동하지만, 커스텀이 필요하면 ",[31,16699,16403],{},"에 아래와 같이 옵션을 추가할 수 있다.",[82,16702,16704],{"className":1154,"code":16703,"language":1156,"meta":87,"style":87},"export default defineNuxtConfig({\n  modules: ['@pinia\u002Fnuxt'],\n  pinia: {\n    autoImports: ['defineStore', 'acceptHMRUpdate'],\n  },\n})\n",[31,16705,16706,16716,16724,16729,16744,16748],{"__ignoreMap":87},[91,16707,16708,16710,16712,16714],{"class":93,"line":94},[91,16709,2574],{"class":566},[91,16711,12107],{"class":566},[91,16713,16381],{"class":97},[91,16715,7549],{"class":101},[91,16717,16718,16720,16722],{"class":93,"line":105},[91,16719,16388],{"class":101},[91,16721,16391],{"class":169},[91,16723,16394],{"class":101},[91,16725,16726],{"class":93,"line":121},[91,16727,16728],{"class":101},"  pinia: {\n",[91,16730,16731,16734,16737,16739,16742],{"class":93,"line":134},[91,16732,16733],{"class":101},"    autoImports: [",[91,16735,16736],{"class":169},"'defineStore'",[91,16738,64],{"class":101},[91,16740,16741],{"class":169},"'acceptHMRUpdate'",[91,16743,16394],{"class":101},[91,16745,16746],{"class":93,"line":228},[91,16747,10581],{"class":101},[91,16749,16750],{"class":93,"line":250},[91,16751,9444],{"class":101},[16,16753,16754],{},"이렇게 하면 Pinia를 Nuxt 프로젝트에서 손쉽게 사용할 수 있다.",[11,16756,16758],{"id":16757},"getactivepinia-was-called-but-there-was-no-active-pinia-are-you-trying-to-use-a-store-before-calling-appusepinia","getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?",[1722,16760,16761,16768,16776],{},[16,16762,16763,16764,16767],{},"[nuxt] error caught during app initialization Error: ",[91,16765,16766],{},"🍍",": \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?",[16,16769,16770,16771,16775],{},"See ",[4306,16772,16773],{"href":16773,"rel":16774},"https:\u002F\u002Fpinia.vuejs.org\u002Fcore-concepts\u002Foutside-component-usage.html",[4310]," for help.",[16,16777,16778],{},"This will fail in production.\nat useStore (pinia.js?v=859d6957:1322:13)",[16,16780,16781],{},"다 설정하고 보니 위 에러가 발생했다.",[4530,16783,16784,16787,16793],{},[27,16785,16786],{},"모듈 누락 확인",[27,16788,16789,16792],{},[31,16790,16791],{},"@pinia\u002Fnuxt"," 추가했는지 확인",[27,16794,16795],{},"비동기 로직 이후 스토어 접근 ㄴㄴ",[757,16797,16799],{"id":16798},"캐시-및-라이브러리-다시-설치","캐시 및 라이브러리 다시 설치",[82,16801,16803],{"className":6839,"code":16802,"language":6841,"meta":87,"style":87},"rm -rf node_modules\u002F.cache\nrm -rf .nuxt\nrm -rf node_modules\nnpm install  # 또는 yarn install\nnpm run dev\n",[31,16804,16805,16816,16825,16834,16843],{"__ignoreMap":87},[91,16806,16807,16810,16813],{"class":93,"line":94},[91,16808,16809],{"class":97},"rm",[91,16811,16812],{"class":108}," -rf",[91,16814,16815],{"class":169}," node_modules\u002F.cache\n",[91,16817,16818,16820,16822],{"class":93,"line":105},[91,16819,16809],{"class":97},[91,16821,16812],{"class":108},[91,16823,16824],{"class":169}," .nuxt\n",[91,16826,16827,16829,16831],{"class":93,"line":121},[91,16828,16809],{"class":97},[91,16830,16812],{"class":108},[91,16832,16833],{"class":169}," node_modules\n",[91,16835,16836,16838,16840],{"class":93,"line":134},[91,16837,15417],{"class":97},[91,16839,8653],{"class":169},[91,16841,16842],{"class":1343},"  # 또는 yarn install\n",[91,16844,16845,16847,16850],{"class":93,"line":228},[91,16846,15417],{"class":97},[91,16848,16849],{"class":169}," run",[91,16851,16852],{"class":169}," dev\n",[16,16854,16855],{},"잔류 캐시나 이전버전 라이브러리 등의 충돌이 있을 수 있으니!",[1722,16857,16858,16863],{},[16,16859,16860,16862],{},[91,16861,1728],{},"\nWARN  Module pinia is disabled due to incompatibility issues:                      오후 9:18:14",[24,16864,16865],{},[27,16866,16867,16869],{},[91,16868,16322],{}," Nuxt version ^2.0.0 || >=3.13.0 is required but currently using 3.12.1",[16,16871,16872],{},"버전도 확인해보자. 호환이 안되는 라이브러리일 수 있다. 나의 경우 nuxt 는 3.12.1 버전인데, pinia 2.3.x 버전을 사용하려면 3.13.0 이상의 버전을 요한다고 경고한다.",[812,16874,16875,16894],{},[3001,16876,16877],{},[3004,16878,16879,16884,16889],{},[3007,16880,16881],{},[792,16882,16883],{},"라이브러리",[3007,16885,16886],{},[792,16887,16888],{},"현재 버전",[3007,16890,16891],{},[792,16892,16893],{},"권장 버전",[3017,16895,16896,16914,16932],{},[3004,16897,16898,16903,16908],{},[3022,16899,16900],{},[792,16901,16902],{},"Nuxt",[3022,16904,16905],{},[31,16906,16907],{},"3.12.1",[3022,16909,16910,16913],{},[31,16911,16912],{},"3.13.0"," 이상",[3004,16915,16916,16921,16926],{},[3022,16917,16918],{},[792,16919,16920],{},"Pinia",[3022,16922,16923],{},[31,16924,16925],{},"^2.3.0",[3022,16927,16928,16931],{},[31,16929,16930],{},"2.3.x"," (OK)",[3004,16933,16934,16938,16943],{},[3022,16935,16936],{},[792,16937,16791],{},[3022,16939,16940],{},[31,16941,16942],{},"^0.9.0",[3022,16944,16945,16931],{},[31,16946,16947],{},"0.9.x",[82,16949,16951],{"className":6839,"code":16950,"language":6841,"meta":87,"style":87},"npm install nuxt@latest\n",[31,16952,16953],{"__ignoreMap":87},[91,16954,16955,16957,16959],{"class":93,"line":94},[91,16956,15417],{"class":97},[91,16958,8653],{"class":169},[91,16960,16961],{"class":169}," nuxt@latest\n",[16,16963,16964],{},"nuxt 버전을 최신버전으로 업데이트 한다. 그럼 아래 pinia 를 수동등록하지 않아도 위 방법대로 잘 동작한다.",[757,16966,16968],{"id":16967},"pinia-사용을-수동으로-등록","Pinia 사용을 수동으로 등록",[82,16970,16972],{"className":1154,"code":16971,"language":1156,"meta":87,"style":87},"\u002F\u002F plugins\u002Fpinia.ts\nimport { defineNuxtPlugin } from '#app'\nimport { createPinia } from 'pinia'\n\nexport default defineNuxtPlugin((nuxtApp) => {\n  const pinia = createPinia()\n  nuxtApp.vueApp.use(pinia)\n})\n",[31,16973,16974,16979,16991,17002,17006,17026,17040,17050],{"__ignoreMap":87},[91,16975,16976],{"class":93,"line":94},[91,16977,16978],{"class":1343},"\u002F\u002F plugins\u002Fpinia.ts\n",[91,16980,16981,16983,16986,16988],{"class":93,"line":105},[91,16982,2499],{"class":566},[91,16984,16985],{"class":101}," { defineNuxtPlugin } ",[91,16987,2505],{"class":566},[91,16989,16990],{"class":169}," '#app'\n",[91,16992,16993,16995,16998,17000],{"class":93,"line":121},[91,16994,2499],{"class":566},[91,16996,16997],{"class":101}," { createPinia } ",[91,16999,2505],{"class":566},[91,17001,16440],{"class":169},[91,17003,17004],{"class":93,"line":134},[91,17005,1450],{"emptyLinePlaceholder":846},[91,17007,17008,17010,17012,17015,17017,17020,17022,17024],{"class":93,"line":228},[91,17009,2574],{"class":566},[91,17011,12107],{"class":566},[91,17013,17014],{"class":97}," defineNuxtPlugin",[91,17016,1169],{"class":101},[91,17018,17019],{"class":1172},"nuxtApp",[91,17021,1176],{"class":101},[91,17023,1179],{"class":566},[91,17025,102],{"class":101},[91,17027,17028,17030,17033,17035,17038],{"class":93,"line":250},[91,17029,2641],{"class":566},[91,17031,17032],{"class":108}," pinia",[91,17034,1366],{"class":566},[91,17036,17037],{"class":97}," createPinia",[91,17039,9313],{"class":101},[91,17041,17042,17045,17047],{"class":93,"line":260},[91,17043,17044],{"class":101},"  nuxtApp.vueApp.",[91,17046,14877],{"class":97},[91,17048,17049],{"class":101},"(pinia)\n",[91,17051,17052],{"class":93,"line":274},[91,17053,9444],{"class":101},[16,17055,17056],{},"결국 이 방법으로 해결했다. nuxt 를",[82,17058,17060],{"className":8477,"code":17059,"language":8479,"meta":87,"style":87},"\"dependencies\": {\n    \"@pinia\u002Fnuxt\": \"^0.9.0\",\n    \"nuxt\": \"^3.12.1\",\n    \"pinia\": \"^2.3.0\",\n},\n",[31,17061,17062,17068,17080,17092,17104],{"__ignoreMap":87},[91,17063,17064,17066],{"class":93,"line":94},[91,17065,15325],{"class":169},[91,17067,8789],{"class":101},[91,17069,17070,17073,17075,17078],{"class":93,"line":105},[91,17071,17072],{"class":108},"    \"@pinia\u002Fnuxt\"",[91,17074,112],{"class":101},[91,17076,17077],{"class":169},"\"^0.9.0\"",[91,17079,7560],{"class":101},[91,17081,17082,17085,17087,17090],{"class":93,"line":121},[91,17083,17084],{"class":108},"    \"nuxt\"",[91,17086,112],{"class":101},[91,17088,17089],{"class":169},"\"^3.12.1\"",[91,17091,7560],{"class":101},[91,17093,17094,17097,17099,17102],{"class":93,"line":134},[91,17095,17096],{"class":108},"    \"pinia\"",[91,17098,112],{"class":101},[91,17100,17101],{"class":169},"\"^2.3.0\"",[91,17103,7560],{"class":101},[91,17105,17106],{"class":93,"line":228},[91,17107,15376],{"class":101},[16,17109,17110],{},"이 버전들의 조합으로는 수동으로 등록하는 것이 답이었다",[829,17112,17113],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":87,"searchDepth":105,"depth":105,"links":17115},[17116,17117,17118,17119,17120],{"id":16338,"depth":105,"text":16339},{"id":16366,"depth":105,"text":16367},{"id":16407,"depth":105,"text":16408},{"id":16569,"depth":105,"text":16570},{"id":16693,"depth":105,"text":16694,"children":17121},[17122,17123],{"id":16798,"depth":121,"text":16799},{"id":16967,"depth":121,"text":16968},"Nuxt 프로젝트에서 Pinia를 설정하고 사용하는 방법을 안내. Pinia 설치, Nuxt 설정 파일에 추가하는 방법, 스토어 생성을 포함하여 컴포넌트에서의 사용 예시. 서버 사이드 렌더링(SSR) 설정 및 일반적인 오류 해결 방법.","nuxt-pinia-get-active-pinia",{},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia",{"title":16330,"description":17124},{"loc":17127},"blog\u002Fnuxt-pinia-get-active-pinia",[16322,16324,17132],"vue3\u002Fpinia","K-FLMYJ58ghcTodfg6z3xE3PqWR9lgaD7MSmMatTC2A",{"id":17135,"title":17136,"body":17137,"created":17541,"description":17542,"extension":843,"filename":17543,"meta":17544,"navigation":846,"path":17545,"seo":17546,"sitemap":17547,"stem":17548,"subject":17549,"tags":17550,"updated":17541,"volume":1863,"__hash__":17554},"blog\u002Fblog\u002Fobject-hasown-estoolkit-crash.md","구형 스마트 TV 브라우저 es-toolkit 호환성 트러블슈팅",{"type":8,"value":17138,"toc":17536},[17139,17142,17145,17149,17152,17158,17168,17176,17331,17341,17345,17354,17438,17447,17453,17457,17460,17533],[16,17140,17141],{},"최근 오프라인 박람회 부스에 배치한 스마트 디스플레이 기기(LG 스탠바이미 등)에서 페이지를 띄웠을 때 특정 통계 그래프가 화면에 전혀 출력되지 않는 장애가 보고되었다.",[16,17143,17144],{},"보통의 크롬 브라우저 환경에서는 정상동작하던 통계 화면이 임베디드 기기에서만 오동작하는 원인을 파악해 보니 최신 자바스크립트 표준 API의 하위 호환성 문제였다.",[49,17146,17148],{"id":17147},"장애-원인-분석","장애 원인 분석",[16,17150,17151],{},"디버깅 콘솔을 통해 확인한 에러 메시지는 다음과 같았다.",[82,17153,17156],{"className":17154,"code":17155,"language":1099,"meta":87},[1097],"TypeError: Object.hasOwn is not a function\nat assets\u002FWasteStatisticsView-CdzOCbpi.js\n",[31,17157,17155],{"__ignoreMap":87},[16,17159,17160,17161,15747,17164,17167],{},"해당 통계 뷰 컴포넌트 내에서 데이터를 그룹화하기 위해 ",[792,17162,17163],{},"es-toolkit",[31,17165,17166],{},"groupBy"," 함수를 도입하여 활용하고 있었는데, 이것이 화근이었다. 원래는 lodash 를 사용하고 있었음",[16,17169,17170,17172,17173,17175],{},[31,17171,17163],{},"의 내부 ",[31,17174,17166],{}," 구현 코드는 다음과 같다.",[82,17177,17179],{"className":1154,"code":17178,"language":1156,"meta":87,"style":87},"function groupBy(arr, getKeyFromItem) {\n  const result = {};\n  for (let i = 0; i \u003C arr.length; i++) {\n    const item = arr[i];\n    const key = getKeyFromItem(item, i, arr);\n    if (!Object.hasOwn(result, key)) { \u002F\u002F 이 부분에서 크래시 발생\n      result[key] = [];\n    }\n    result[key].push(item);\n  }\n  return result;\n}\n",[31,17180,17181,17200,17212,17246,17258,17273,17293,17302,17306,17316,17320,17327],{"__ignoreMap":87},[91,17182,17183,17185,17188,17190,17193,17195,17198],{"class":93,"line":94},[91,17184,7471],{"class":566},[91,17186,17187],{"class":97}," groupBy",[91,17189,795],{"class":101},[91,17191,17192],{"class":1172},"arr",[91,17194,64],{"class":101},[91,17196,17197],{"class":1172},"getKeyFromItem",[91,17199,3866],{"class":101},[91,17201,17202,17204,17207,17209],{"class":93,"line":105},[91,17203,2641],{"class":566},[91,17205,17206],{"class":108}," result",[91,17208,1366],{"class":566},[91,17210,17211],{"class":101}," {};\n",[91,17213,17214,17217,17219,17221,17224,17226,17228,17231,17233,17236,17238,17241,17244],{"class":93,"line":121},[91,17215,17216],{"class":566},"  for",[91,17218,2662],{"class":101},[91,17220,1349],{"class":566},[91,17222,17223],{"class":101}," i ",[91,17225,166],{"class":566},[91,17227,11817],{"class":108},[91,17229,17230],{"class":101},"; i ",[91,17232,156],{"class":566},[91,17234,17235],{"class":101}," arr.",[91,17237,11811],{"class":108},[91,17239,17240],{"class":101},"; i",[91,17242,17243],{"class":566},"++",[91,17245,3866],{"class":101},[91,17247,17248,17250,17253,17255],{"class":93,"line":134},[91,17249,1382],{"class":566},[91,17251,17252],{"class":108}," item",[91,17254,1366],{"class":566},[91,17256,17257],{"class":101}," arr[i];\n",[91,17259,17260,17262,17265,17267,17270],{"class":93,"line":228},[91,17261,1382],{"class":566},[91,17263,17264],{"class":108}," key",[91,17266,1366],{"class":566},[91,17268,17269],{"class":97}," getKeyFromItem",[91,17271,17272],{"class":101},"(item, i, arr);\n",[91,17274,17275,17277,17279,17281,17284,17287,17290],{"class":93,"line":250},[91,17276,8218],{"class":566},[91,17278,2662],{"class":101},[91,17280,2665],{"class":566},[91,17282,17283],{"class":101},"Object.",[91,17285,17286],{"class":97},"hasOwn",[91,17288,17289],{"class":101},"(result, key)) { ",[91,17291,17292],{"class":1343},"\u002F\u002F 이 부분에서 크래시 발생\n",[91,17294,17295,17298,17300],{"class":93,"line":260},[91,17296,17297],{"class":101},"      result[key] ",[91,17299,166],{"class":566},[91,17301,11734],{"class":101},[91,17303,17304],{"class":93,"line":274},[91,17305,1693],{"class":101},[91,17307,17308,17311,17313],{"class":93,"line":284},[91,17309,17310],{"class":101},"    result[key].",[91,17312,13348],{"class":97},[91,17314,17315],{"class":101},"(item);\n",[91,17317,17318],{"class":93,"line":299},[91,17319,1698],{"class":101},[91,17321,17322,17324],{"class":93,"line":319},[91,17323,2695],{"class":566},[91,17325,17326],{"class":101}," result;\n",[91,17328,17329],{"class":93,"line":334},[91,17330,137],{"class":101},[16,17332,17333,17336,17337,17340],{},[31,17334,17335],{},"Object.hasOwn","은 ES2022 표준에 포함된 비교적 최신 문법이다. 기존의 ",[31,17338,17339],{},"Object.prototype.hasOwnProperty","를 간결하게 쓸 수 있도록 도입되었다. 데스크톱 크롬 93+(2021년 출시) 이상에서는 문제없이 동작하지만, 스탠바이미의 웹 브라우저 엔진은 이에 해당하는 함수가 없어서 런타임 에러가 발생한 것이다.",[49,17342,17344],{"id":17343},"라이브러리별-호환성-비교-es-toolkit-vs-lodash","라이브러리별 호환성 비교 (es-toolkit vs lodash)",[16,17346,17347,17348,15747,17351,17353],{},"전통적으로 많이 쓰이는 ",[792,17349,17350],{},"lodash",[31,17352,17166],{}," 함수 구현부를 확인하면 다음과 같이 범용적인 호환성을 확보하고 있다.",[82,17355,17357],{"className":1154,"code":17356,"language":1156,"meta":87,"style":87},"var groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) { \u002F\u002F 안전한 예전 문법 사용\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n",[31,17358,17359,17390,17405,17414,17422,17430,17434],{"__ignoreMap":87},[91,17360,17361,17363,17366,17368,17371,17373,17375,17377,17380,17382,17384,17386,17388],{"class":93,"line":94},[91,17362,5626],{"class":566},[91,17364,17365],{"class":101}," groupBy ",[91,17367,166],{"class":566},[91,17369,17370],{"class":97}," createAggregator",[91,17372,795],{"class":101},[91,17374,7471],{"class":566},[91,17376,795],{"class":101},[91,17378,17379],{"class":1172},"result",[91,17381,64],{"class":101},[91,17383,8343],{"class":1172},[91,17385,64],{"class":101},[91,17387,9452],{"class":1172},[91,17389,3866],{"class":101},[91,17391,17392,17394,17397,17400,17402],{"class":93,"line":105},[91,17393,2439],{"class":566},[91,17395,17396],{"class":101}," (hasOwnProperty.",[91,17398,17399],{"class":97},"call",[91,17401,17289],{"class":101},[91,17403,17404],{"class":1343},"\u002F\u002F 안전한 예전 문법 사용\n",[91,17406,17407,17409,17411],{"class":93,"line":121},[91,17408,17310],{"class":101},[91,17410,13348],{"class":97},[91,17412,17413],{"class":101},"(value);\n",[91,17415,17416,17418,17420],{"class":93,"line":134},[91,17417,2053],{"class":101},[91,17419,5258],{"class":566},[91,17421,102],{"class":101},[91,17423,17424,17427],{"class":93,"line":228},[91,17425,17426],{"class":97},"    baseAssignValue",[91,17428,17429],{"class":101},"(result, key, [value]);\n",[91,17431,17432],{"class":93,"line":250},[91,17433,1698],{"class":101},[91,17435,17436],{"class":93,"line":260},[91,17437,1303],{"class":101},[16,17439,17440,17442,17443,17446],{},[31,17441,17350],{},"는 모든 자바스크립트 환경에서 동작하는 ",[31,17444,17445],{},"Object.prototype.hasOwnProperty.call()"," 방식을 사용하기 때문에, 저사양 임베디드 브라우저에서도 정상적으로 동작한다.",[16,17448,17449,17450,17452],{},"최근 자바스크립트 번들 크기를 줄이고 최신 브라우저 성능을 100% 활용하기 위해 ",[31,17451,17163],{},"과 같은 Modern 라이브러리를 많이 차용하지만, 구형 스마트 TV, 무인 키오스크, 혹은 오래된 하이브리드 태블릿 디바이스를 지원해야 하는 프로젝트에서는 치명적인 런타임 오류의 원인이 될 수 있다.",[49,17454,17456],{"id":17455},"해결-방안","해결 방안",[16,17458,17459],{},"이 문제를 극복하기 위한 방법은 간단히 요약할 수 있다.",[24,17461,17462,17467,17523],{},[27,17463,17464],{},[792,17465,17466],{},"lodash 등 이전 문법 사용",[27,17468,17469,17472,17480],{},[792,17470,17471],{},"폴리필 설정",[24,17473,17474],{},[27,17475,17476,17477,17479],{},"프로젝트 전역 Entry 지점에 ",[31,17478,17335],{}," 관련 폴리필을 수동으로 주입하여 브라우저의 빌트인 API가 없는 경우 스스로 정의하게 한다.",[82,17481,17483],{"className":1154,"code":17482,"language":1156,"meta":87,"style":87},"const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);\n",[31,17484,17485],{"__ignoreMap":87},[91,17486,17487,17489,17492,17494,17496,17499,17501,17503,17505,17507,17510,17512,17515,17518,17520],{"class":93,"line":94},[91,17488,1968],{"class":566},[91,17490,17491],{"class":97}," hasOwn",[91,17493,1366],{"class":566},[91,17495,2662],{"class":101},[91,17497,17498],{"class":1172},"obj",[91,17500,64],{"class":101},[91,17502,9452],{"class":1172},[91,17504,1176],{"class":101},[91,17506,1179],{"class":566},[91,17508,17509],{"class":108}," Object",[91,17511,1235],{"class":101},[91,17513,17514],{"class":108},"prototype",[91,17516,17517],{"class":101},".hasOwnProperty.",[91,17519,17399],{"class":97},[91,17521,17522],{"class":101},"(obj, key);\n",[27,17524,17525,17528],{},[792,17526,17527],{},"Transpile 대상 브라우저 정의",[24,17529,17530],{},[27,17531,17532],{},"빌드 도구 설정에서 브라우저 지원 범위를 스마트 TV 등 구형 기기를 포함하도록 낮춰 선언하고 폴리필 주입 옵션을 활성화한다.",[829,17534,17535],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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":87,"searchDepth":105,"depth":105,"links":17537},[17538,17539,17540],{"id":17147,"depth":105,"text":17148},{"id":17343,"depth":105,"text":17344},{"id":17455,"depth":105,"text":17456},"2026-06-09","구형 스마트 TV 브라우저에서 특정 화면의 렌더링이 중단되는 샘플 에러를 바탕으로 ES2022의 Object.hasOwn 하위 호환성 문제와 유틸리티 라이브러리(es-toolkit vs lodash) 선택 시 고려사항을 정리한다.","object-hasown-estoolkit-crash",{},"\u002Fblog\u002Fobject-hasown-estoolkit-crash",{"title":17136,"description":17542},{"loc":17545},"blog\u002Fobject-hasown-estoolkit-crash","JS\u002FTS",[2865,17551,17552,17553],"compatibility","estoolkit","webos","xxU8I9DXAAwAmw6W8he8Qg-QKd6H5ASTQSM0egWNuBw",{"id":17556,"title":17557,"body":17558,"created":17676,"description":17677,"extension":843,"filename":17678,"meta":17679,"navigation":846,"path":17680,"seo":17681,"sitemap":17682,"stem":17683,"subject":4438,"tags":17684,"updated":17676,"volume":1863,"__hash__":17687},"blog\u002Fblog\u002Fpostman-fcm-test.md","Postman 으로 FCM 알림 테스트하기",{"type":8,"value":17559,"toc":17674},[17560,17566,17569,17574,17577,17585,17595,17668,17671],[82,17561,17564],{"className":17562,"code":17563,"language":1099},[1097],"POST https:\u002F\u002Ffcm.googleapis.com\u002Ffcm\u002Fsend\n",[31,17565,17563],{"__ignoreMap":87},[16,17567,17568],{},"위 경로로 메세지를 보낸다.",[16,17570,17571],{},[19,17572],{"alt":21,"src":17573},"\u002Fblog\u002Fimg\u002Fpostman-fcm-test\u002Fimg.png",[16,17575,17576],{},"헤더 데이터",[24,17578,17579,17582],{},[27,17580,17581],{},"Authorization : key=AAAXXXXXX",[27,17583,17584],{},"Content-Type : application\u002Fjson",[16,17586,17587,17590,17591,17594],{},[31,17588,17589],{},"Authorization"," 은 ",[31,17592,17593],{},"key=서버키"," 형태로 넣는다.",[82,17596,17598],{"className":8477,"code":17597,"language":8479,"meta":87,"style":87},"{\n    \"to\":\"FCMToken\",\n    \"data\" : {\n      \"title\":\"제목\",\n      \"body\":\"내용\",\n      \"otherKey\":\"asdf\",\n    }\n}\n",[31,17599,17600,17604,17616,17624,17636,17648,17660,17664],{"__ignoreMap":87},[91,17601,17602],{"class":93,"line":94},[91,17603,8486],{"class":101},[91,17605,17606,17609,17611,17614],{"class":93,"line":105},[91,17607,17608],{"class":108},"    \"to\"",[91,17610,1208],{"class":101},[91,17612,17613],{"class":169},"\"FCMToken\"",[91,17615,7560],{"class":101},[91,17617,17618,17621],{"class":93,"line":121},[91,17619,17620],{"class":108},"    \"data\"",[91,17622,17623],{"class":101}," : {\n",[91,17625,17626,17629,17631,17634],{"class":93,"line":134},[91,17627,17628],{"class":108},"      \"title\"",[91,17630,1208],{"class":101},[91,17632,17633],{"class":169},"\"제목\"",[91,17635,7560],{"class":101},[91,17637,17638,17641,17643,17646],{"class":93,"line":228},[91,17639,17640],{"class":108},"      \"body\"",[91,17642,1208],{"class":101},[91,17644,17645],{"class":169},"\"내용\"",[91,17647,7560],{"class":101},[91,17649,17650,17653,17655,17658],{"class":93,"line":250},[91,17651,17652],{"class":108},"      \"otherKey\"",[91,17654,1208],{"class":101},[91,17656,17657],{"class":169},"\"asdf\"",[91,17659,7560],{"class":101},[91,17661,17662],{"class":93,"line":260},[91,17663,1693],{"class":101},[91,17665,17666],{"class":93,"line":274},[91,17667,137],{"class":101},[16,17669,17670],{},"body 는 정해진 데이터대로 넣는다.",[829,17672,17673],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":87,"searchDepth":105,"depth":105,"links":17675},[],"2023-09-16","FCM 알림을 테스트하는 간단한 방법. Postman 을 비롯한 curl 기반 HTTP 요청 프로그램으로 테스트하기.","postman-fcm-test",{},"\u002Fblog\u002Fpostman-fcm-test",{"title":17557,"description":17677},{"loc":17680},"blog\u002Fpostman-fcm-test",[4438,17685,17686],"FCM","Postman","aIZcebxEkOsGqeXPMu-Q3vZqGbv9gKLxEn3RIBAUsv8",{"id":17689,"title":17690,"body":17691,"created":18076,"description":18077,"extension":843,"filename":18078,"meta":18079,"navigation":846,"path":18080,"seo":18081,"sitemap":18082,"stem":18083,"subject":18084,"tags":18085,"updated":6033,"volume":853,"__hash__":18089},"blog\u002Fblog\u002Fs3-cloudfront-cache-control.md","S3와 CloudFront에서 SPA 캐시를 분리해 배포 오류 막기",{"type":8,"value":17692,"toc":18070},[17693,17700,17717,17720,17731,17738,17745,17750,17756,17760,17763,17827,17833,17844,17849,17852,17856,17868,17880,17884,17887,18024,18030,18033,18037,18040,18057,18062,18067],[16,17694,17695,17696,17699],{},"S3를 오리진으로 두고 CloudFront로 SPA를 배포하면, 파일을 새로 올렸는데도 일부 사용자가 이전 화면을 보거나 앱이 시작하지 않는 일이 생길 수 있다. 이전 ",[31,17697,17698],{},"index.html","은 예전 해시의 JavaScript 파일을 가리키는데 새 오리진에는 그 파일이 없으면, 앱은 시작 단계에서 404를 받고 멈춘다. 웹뷰처럼 앱 데이터를 오래 보존하는 환경에서는 재설치나 데이터 삭제 후에만 정상으로 보일 수도 있다.",[4530,17701,17702,17708,17711,17714],{},[27,17703,17704,17705,17707],{},"사용자의 WebView가 이전 ",[31,17706,17698],{},"을 로컬 캐시에서 읽는다.",[27,17709,17710],{},"HTML은 이미 삭제됐거나 다른 경로로 이동한 이전 해시 에셋을 요청한다.",[27,17712,17713],{},"에셋 요청이 404가 되면 SPA가 초기화되지 못한다.",[27,17715,17716],{},"네이티브 앱이 웹 페이지의 초기화 신호를 기다리는 구조라면 로딩 화면이 끝나지 않을 수 있다.",[16,17718,17719],{},"S3 + CloudFront 에서 캐시를 사용하는 곳:",[4530,17721,17722,17725,17728],{},[27,17723,17724],{},"브라우저(WebView)",[27,17726,17727],{},"CloudFront 캐시",[27,17729,17730],{},"S3 오리진 객체와 메타데이터",[16,17732,17733,17734,17737],{},"S3 객체의 ",[31,17735,17736],{},"Cache-Control"," 메타데이터가 응답 헤더에 담긴다.\nCloudFront는 캐시 정책의 TTL과 오리진 응답 헤더를 함께 사용해 엣지 캐시의 유효 기간을 결정하고, 브라우저도 같은 응답 헤더를 보고 로컬 캐시를 판단한다.",[1112,17739],{"description":17740,"favicon":17741,"host":17742,"title":17743,"url":17744},"Find and change select Amazon S3 object metadata.","https:\u002F\u002Fdocs.aws.amazon.com\u002Fassets\u002Fimages\u002Ffavicon.ico","docs.aws.amazon.com","S3 객체 메타데이터 문서","https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonS3\u002Flatest\u002Fuserguide\u002FUsingMetadata.html",[1112,17746],{"description":17747,"favicon":17741,"host":17742,"title":17748,"url":17749},"Control how long files stay in the CloudFront cache and in browser caches.","CloudFront 만료 제어","https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonCloudFront\u002Flatest\u002FDeveloperGuide\u002FExpiration.html",[16,17751,17752,17753,17755],{},"따라서 CloudFront 무효화를 했으니 최신 파일을 받는다고 생각하면 안된다. 브라우저가 아직 유효하다고 판단한 ",[31,17754,17698],{},"을 그대로 쓸 수 있다.",[49,17757,17759],{"id":17758},"spa에서-캐시-규칙","SPA에서 캐시 규칙",[16,17761,17762],{},"Vite 같은 번들러가 만드는 SPA 결과물은 크게 세 종류로 나눌 수 있다.",[812,17764,17765,17778],{},[3001,17766,17767],{},[3004,17768,17769,17772,17775],{},[3007,17770,17771],{},"파일",[3007,17773,17774],{},"역할",[3007,17776,17777],{},"권장 캐시",[3017,17779,17780,17798,17812],{},[3004,17781,17782,17790,17793],{},[3022,17783,17784,64,17787],{},[31,17785,17786],{},"assets\u002Fapp-\u003Chash>.js",[31,17788,17789],{},"assets\u002Fapp-\u003Chash>.css",[3022,17791,17792],{},"내용이 바뀌면 파일명도 바뀌는 해시 에셋",[3022,17794,17795],{},[31,17796,17797],{},"public, max-age=31536000, immutable",[3004,17799,17800,17804,17807],{},[3022,17801,17802],{},[31,17803,17698],{},[3022,17805,17806],{},"현재 배포의 해시 에셋 목록을 가리키는 진입점",[3022,17808,17809],{},[31,17810,17811],{},"no-cache",[3004,17813,17814,17820,17823],{},[3022,17815,17816,17819],{},[31,17817,17818],{},"version.json"," 같은 버전 확인 파일",[3022,17821,17822],{},"현재 버전을 판단하는 작은 메타 파일",[3022,17824,17825],{},[31,17826,17811],{},[16,17828,17829,17830,17832],{},"해시가 붙은 에셋은 동일한 URL에서 내용이 바뀌지 않는다. 캐시를 길게 적용해도 새로 배포하면 바뀐 URL을 참조하므로 안전하다. 반대로 ",[31,17831,17698],{},"은 URL이 고정되어 있고 매 배포마다 내용이 달라진다. 캐싱을 해버리면 이전 번들을 가리키는 HTML이 남는다.",[16,17834,17835,17837,17838,5733,17840,17843],{},[31,17836,17811],{},"는 파일을 저장하지 말라는 뜻은 아니다. 캐시된 응답을 사용하기 전에 서버에 재검증하라는 뜻이다. 변경되지 않았다면 304 응답으로 본문 전송을 줄이고, 변경됐다면 새 파일을 받아온다. 다만 CloudFront의 캐시 정책에서 Minimum TTL이 0보다 크면 오리진의 ",[31,17839,17811],{},[31,17841,17842],{},"no-store","보다 최소 TTL이 우선한다. 진입점 파일을 항상 재검증하려면 해당 캐시 동작의 Minimum TTL도 함께 확인해야 한다.",[1112,17845],{"description":17846,"favicon":17741,"host":17742,"title":17847,"url":17848},"Configure cache behavior settings for your CloudFront distribution to control how CloudFront handles requests for different URL path patterns, including origin selection, protocol policies, and caching options.","Cache behavior settings - Amazon CloudFront","https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonCloudFront\u002Flatest\u002FDeveloperGuide\u002FDownloadDistValuesCacheBehavior.html",[16,17850,17851],{},"위 링크에서 우선순위를 명시하고 있음.",[49,17853,17855],{"id":17854},"구버전-html과-새-버전-정보가-충돌","구버전 HTML과 새 버전 정보가 충돌",[16,17857,17858,17859,17861,17862,17864,17865,15394],{},"버전 확인 파일을 별도로 두고 있는데, 캐시된 ",[31,17860,17698],{},"은 이전 버전 코드를 실행하지만, ",[31,17863,17818],{},"은 새 버전을 응답하면 앱은 ",[792,17866,17867],{},"계속 업데이트가 필요하다고 판단",[16,17869,17870,17871,34,17873,17876,17877,17879],{},"새로고침 URL에 타임스탬프 쿼리를 붙이면 일시적으로 해결된 것처럼 보일 수 있다. 하지만 ",[31,17872,8361],{},[31,17874,17875],{},"\u002F?t=...","는 캐시 키가 다를 수 있으므로, 다음에 다시 ",[31,17878,8361],{},"로 접근하면 기존 HTML 캐시를 또 사용할 수 있다. 임시 쿼리 문자열보다 진입점 자체의 캐시 규칙을 바로잡는 편이 낫다.",[49,17881,17883],{"id":17882},"s3-업로드-시-cache-control-분리","S3 업로드 시 Cache-Control 분리",[16,17885,17886],{},"CI\u002FCD 구성 시 해시 에셋과 고정 이름 파일을 한 번에 동기화하지 않고, 서로 다른 명령으로 올렸다.",[82,17888,17890],{"className":6839,"code":17889,"language":6841,"meta":87,"style":87},"# 해시 에셋: index.html과 버전 파일은 제외한다.\naws s3 sync .\u002Fdist \"s3:\u002F\u002F$BUCKET\" \\\n  --exclude \"*.map\" \\\n  --exclude \"index.html\" \\\n  --exclude \"version.json\" \\\n  --cache-control \"public,max-age=31536000,immutable\"\n\n# 진입점과 버전 파일: 사용할 때마다 재검증하게 한다.\naws s3 cp .\u002Fdist\u002Findex.html \"s3:\u002F\u002F$BUCKET\u002Findex.html\" \\\n  --cache-control \"no-cache\"\n\naws s3 cp .\u002Fdist\u002Fversion.json \"s3:\u002F\u002F$BUCKET\u002Fversion.json\" \\\n  --cache-control \"no-cache\"\n",[31,17891,17892,17897,17921,17931,17940,17949,17957,17961,17966,17987,17994,17998,18018],{"__ignoreMap":87},[91,17893,17894],{"class":93,"line":94},[91,17895,17896],{"class":1343},"# 해시 에셋: index.html과 버전 파일은 제외한다.\n",[91,17898,17899,17902,17905,17908,17911,17914,17917,17919],{"class":93,"line":105},[91,17900,17901],{"class":97},"aws",[91,17903,17904],{"class":169}," s3",[91,17906,17907],{"class":169}," sync",[91,17909,17910],{"class":169}," .\u002Fdist",[91,17912,17913],{"class":169}," \"s3:\u002F\u002F",[91,17915,17916],{"class":101},"$BUCKET",[91,17918,2139],{"class":169},[91,17920,8442],{"class":108},[91,17922,17923,17926,17929],{"class":93,"line":121},[91,17924,17925],{"class":108},"  --exclude",[91,17927,17928],{"class":169}," \"*.map\"",[91,17930,8442],{"class":108},[91,17932,17933,17935,17938],{"class":93,"line":134},[91,17934,17925],{"class":108},[91,17936,17937],{"class":169}," \"index.html\"",[91,17939,8442],{"class":108},[91,17941,17942,17944,17947],{"class":93,"line":228},[91,17943,17925],{"class":108},[91,17945,17946],{"class":169}," \"version.json\"",[91,17948,8442],{"class":108},[91,17950,17951,17954],{"class":93,"line":250},[91,17952,17953],{"class":108},"  --cache-control",[91,17955,17956],{"class":169}," \"public,max-age=31536000,immutable\"\n",[91,17958,17959],{"class":93,"line":260},[91,17960,1450],{"emptyLinePlaceholder":846},[91,17962,17963],{"class":93,"line":274},[91,17964,17965],{"class":1343},"# 진입점과 버전 파일: 사용할 때마다 재검증하게 한다.\n",[91,17967,17968,17970,17972,17975,17978,17980,17982,17985],{"class":93,"line":284},[91,17969,17901],{"class":97},[91,17971,17904],{"class":169},[91,17973,17974],{"class":169}," cp",[91,17976,17977],{"class":169}," .\u002Fdist\u002Findex.html",[91,17979,17913],{"class":169},[91,17981,17916],{"class":101},[91,17983,17984],{"class":169},"\u002Findex.html\"",[91,17986,8442],{"class":108},[91,17988,17989,17991],{"class":93,"line":299},[91,17990,17953],{"class":108},[91,17992,17993],{"class":169}," \"no-cache\"\n",[91,17995,17996],{"class":93,"line":319},[91,17997,1450],{"emptyLinePlaceholder":846},[91,17999,18000,18002,18004,18006,18009,18011,18013,18016],{"class":93,"line":334},[91,18001,17901],{"class":97},[91,18003,17904],{"class":169},[91,18005,17974],{"class":169},[91,18007,18008],{"class":169}," .\u002Fdist\u002Fversion.json",[91,18010,17913],{"class":169},[91,18012,17916],{"class":101},[91,18014,18015],{"class":169},"\u002Fversion.json\"",[91,18017,8442],{"class":108},[91,18019,18020,18022],{"class":93,"line":355},[91,18021,17953],{"class":108},[91,18023,17993],{"class":169},[16,18025,18026,18027,18029],{},"첫 번째 명령은 파일명 자체가 배포 버전인 에셋에 장기 캐시를 설정한다. 나머지 두 명령은 고정 URL 파일을 별도로 업로드해 S3 객체 메타데이터에 다른 ",[31,18028,17736],{}," 값을 지정한다.",[16,18031,18032],{},"이미 배포된 객체의 캐시 메타데이터를 바꿔야 한다면 실제로 메타데이터가 교체되는지 확인해야 한다. 같은 파일을 다시 동기화했을 때 전송이 생략될 수 있으므로, 배포 후 S3 객체의 메타데이터와 CloudFront를 거친 최종 응답 헤더를 함께 확인하는 것이 안전하다.",[49,18034,18036],{"id":18035},"cloudfront에서는-캐시-정책도-같은-방향이어야-한다","CloudFront에서는 캐시 정책도 같은 방향이어야 한다",[16,18038,18039],{},"S3에서 no-cache 여도 CloudFront 캐시 정책에 따라서 기대한 대로 동작하지 않을 수 있다.",[24,18041,18042,18045,18048,18051],{},[27,18043,18044],{},"캐시를 최대한 사용하지 않으려면 behavior의 Minimum TTL을 0 으로 하기",[27,18046,18047],{},"그 외 일반적으로 캐시를 사용할 경우 behavior는 TTL 적절한 범위인지 확인",[27,18049,18050],{},"query string, 쿠키, 헤더를 캐시 키에 포함할 필요가 있는지 별도로 판단한다. 불필요한 값을 넣으면 같은 파일의 캐시가 지나치게 쪼개진다. 캐시 키 정책 문서를 확인하고 진행.",[27,18052,18053,18054,18056],{},"Response headers policy로 ",[31,18055,17736],{},"을 추가했다면, 이것은 브라우저에 보내는 응답 헤더를 바꾸는 설정이며 CloudFront 엣지 캐시 TTL 자체를 바꾸는 것은 아니다. 응답 헤더 추가 삭제 정책 확인.",[1112,18058],{"description":18059,"favicon":17741,"host":17742,"title":18060,"url":18061},"Use cache policies to control the cache key for cache behaviors in your Amazon CloudFront distributions.","캐시 키 정책 문서","https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonCloudFront\u002Flatest\u002FDeveloperGuide\u002Fcontrolling-the-cache-key.html",[1112,18063],{"description":18064,"favicon":17741,"host":17742,"title":18065,"url":18066},"Use a response headers policy to specify the HTTP headers that Amazon CloudFront adds or removes in HTTP responses.","CloudFront 응답에 헤더 추가 삭제 정책","https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonCloudFront\u002Flatest\u002FDeveloperGuide\u002Fmodifying-response-headers.html",[829,18068,18069],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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":87,"searchDepth":105,"depth":105,"links":18071},[18072,18073,18074,18075],{"id":17758,"depth":105,"text":17759},{"id":17854,"depth":105,"text":17855},{"id":17882,"depth":105,"text":17883},{"id":18035,"depth":105,"text":18036},"2026-04-09","S3와 CloudFront로 SPA를 배포할 때 index.html·버전 파일·해시 에셋의 캐시 규칙을 분리해 구버전 번들 404와 업데이트 루프를 막는 방법을 정리한다.","s3-cloudfront-cache-control",{},"\u002Fblog\u002Fs3-cloudfront-cache-control",{"title":17690,"description":18077},{"loc":18080},"blog\u002Fs3-cloudfront-cache-control","AWS",[17901,18086,18087,18088,12668,4954],"s3","cloudfront","cache","7_3YeUbS21OnBbXPSO4G8dIKlO4aYO5OffJAePr22Hc",{"id":18091,"title":18092,"body":18093,"created":18462,"description":18463,"extension":843,"filename":18464,"meta":18465,"navigation":846,"path":18466,"seo":18467,"sitemap":18468,"stem":18469,"subject":4438,"tags":18470,"updated":6033,"volume":853,"__hash__":18471},"blog\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue.md","갤럭시 S21 갤러리 다중 선택 오류와 호환성 해결 방법",{"type":8,"value":18094,"toc":18455},[18095,18098,18102,18115,18167,18178,18184,18187,18191,18195,18205,18211,18217,18223,18229,18233,18236,18272,18279,18281,18285,18299,18305,18323,18450,18453],[16,18096,18097],{},"웹뷰 기반 안드로이드 앱에서 사용자가 사진을 여러 장 선택해 업로드할 수 있도록 기능을 제공했다. 그런데 갤럭시 S21, 안드로이드 15에서 기본 갤러리 앱을 사용할 때, 여러 장 선택이 불가능하고 1장만 선택되는 문제가 있었다. 다른 사진 앨범 앱에서는 다중 선택이 됐다. 코드 레벨이나 기기 문제라기보다 삼성 기본 갤러리 앱 자체의 동작 방식 차이 로 추정했다.",[49,18099,18101],{"id":18100},"문제-상황","문제 상황",[16,18103,18104,18105,15747,18108,18110,18111,18114],{},"안드로이드의 웹뷰에서 ",[31,18106,18107],{},"WebChromeClient",[31,18109,962],{}," 콜백을 구현해 파일 선택 인텐트를 실행한다. 보통 갤러리 사진을 선택하게 유도할 때 아래와 같이 ",[31,18112,18113],{},"Intent.ACTION_PICK","을 많이 사용한다.",[82,18116,18118],{"className":1000,"code":18117,"language":1002,"meta":87,"style":87},"\u002F\u002F 갤러리 인텐트 설정\nval contentSelectionIntent = Intent(\n    Intent.ACTION_PICK,\n    MediaStore.Images.Media.EXTERNAL_CONTENT_URI\n)\ncontentSelectionIntent.type = MediaStore.Images.Media.CONTENT_TYPE\n\nif (isMultiple) {\n    contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)\n}\n",[31,18119,18120,18125,18130,18135,18140,18144,18149,18153,18158,18163],{"__ignoreMap":87},[91,18121,18122],{"class":93,"line":94},[91,18123,18124],{},"\u002F\u002F 갤러리 인텐트 설정\n",[91,18126,18127],{"class":93,"line":105},[91,18128,18129],{},"val contentSelectionIntent = Intent(\n",[91,18131,18132],{"class":93,"line":121},[91,18133,18134],{},"    Intent.ACTION_PICK,\n",[91,18136,18137],{"class":93,"line":134},[91,18138,18139],{},"    MediaStore.Images.Media.EXTERNAL_CONTENT_URI\n",[91,18141,18142],{"class":93,"line":228},[91,18143,3487],{},[91,18145,18146],{"class":93,"line":250},[91,18147,18148],{},"contentSelectionIntent.type = MediaStore.Images.Media.CONTENT_TYPE\n",[91,18150,18151],{"class":93,"line":260},[91,18152,1450],{"emptyLinePlaceholder":846},[91,18154,18155],{"class":93,"line":274},[91,18156,18157],{},"if (isMultiple) {\n",[91,18159,18160],{"class":93,"line":284},[91,18161,18162],{},"    contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)\n",[91,18164,18165],{"class":93,"line":299},[91,18166,137],{},[16,18168,18169,18170,18173,18174,18177],{},"하지만 삼성 갤러리 앱은 ",[31,18171,18172],{},"ACTION_PICK"," 인텐트를 처리할 때 ",[31,18175,18176],{},"Intent.EXTRA_ALLOW_MULTIPLE"," 옵션을 무시하는 경우가 많다. 이로 인해 사용자는 여러 장을 드래그하거나 선택할 수 없고 단일 이미지만 선택할 수밖에 없게 된다.",[16,18179,18180],{},[19,18181],{"alt":18182,"src":18183},"ACTION_PICK 시 단일 선택만 가능한 화면","\u002Fblog\u002Fimg\u002Fsamsung-gallery-webview-multiple-selection-issue\u002Fandroid-action-pick-single-selection-wireframe.svg",[16,18185,18186],{},"앱의 사진 선택 버튼에서 기본 갤러리로 이동할 수는 있었지만, 갤러리 화면에는 여러 항목을 고르는 상태가 나타나지 않았다. 실제 제품 화면과 사진은 제외하고 앱 선택 단계와 단일 선택 상태만 남겼다.",[49,18188,18190],{"id":18189},"해결-과정","해결 과정",[757,18192,18194],{"id":18193},"_1-action_get_content-사용-권장","1. ACTION_GET_CONTENT 사용 권장",[16,18196,18197,18198,18200,18201,18204],{},"안드로이드 공식 문서와 커뮤니티에서는 파일 다중 선택을 위해 ",[31,18199,18172],{},"보다는 ",[31,18202,18203],{},"Intent.ACTION_GET_CONTENT","를 사용할 것을 권장한다. 파일 종류나 개수에 상관없이 콘텐츠를 가져오는 안드로이드 표준 방식이기 때문에 호환성이 더 높다.",[16,18206,18207],{},[19,18208],{"alt":18209,"src":18210},"ACTION_GET_CONTENT 콘텐츠 선택기 화면","\u002Fblog\u002Fimg\u002Fsamsung-gallery-webview-multiple-selection-issue\u002Fandroid-action-get-content-picker-wireframe.svg",[16,18212,18213,18216],{},[31,18214,18215],{},"ACTION_GET_CONTENT","에서는 시스템 콘텐츠 선택기를 거쳐 사진 앱이나 파일 앱을 선택할 수 있고, 선택기에서 여러 항목을 고를 수 있다. 하지만 곧바로 갤러리가 열리기보다 '파일' 앱들이 먼저 뜨는 경우가 많아 UX 측면에서 불편할 수는 있다.",[1112,18218],{"description":18219,"host":1714,"image":18220,"title":18221,"url":18222},"I want to give to user the option to pick multiple images. This is my code in order to let the user choose the wanted gallery and pick images from there: public void pickImages() {        Intent","https:\u002F\u002Fcdn.sstatic.net\u002FSites\u002Fstackoverflow\u002FImg\u002Fapple-touch-icon@2.png?v=73d79a89bded","Trying To Pick images From Samsung's Gallery","https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F46016971\u002Ftrying-to-pick-images-from-samsungs-gallery",[1112,18224],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},"Before creating an issue, make sure that you are on the latest file_picker version and that there aren't already any similar opened inssues. Also, check if it isn't described on the Wiki, specially...","https:\u002F\u002Fopengraph.githubassets.com\u002Fa1a5b246c694b62a58cfe8f9ffb6b0c72f87dd401eccbf29c5e9cce4daa4c30f\u002Fmiguelpruivo\u002Fflutter_file_picker\u002Fissues\u002F846","Multiple selection is not available from Samsung Gallery application (Samsung Galaxy Android) · Issue #846 · miguelpruivo\u002Fflutter_file_picker","https:\u002F\u002Fgithub.com\u002Fmiguelpruivo\u002Fflutter_file_picker\u002Fissues\u002F846",[757,18230,18232],{"id":18231},"_2-삼성-갤러리-비공식-옵션-적용","2. 삼성 갤러리 비공식 옵션 적용",[16,18234,18235],{},"삼성 갤러리에서 다중 선택을 강제하기 위한 비공식 파라미터를 추가할 수 있다.",[82,18237,18239],{"className":1000,"code":18238,"language":1002,"meta":87,"style":87},"if (isMultiple) {\n    contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)\n    \n    \u002F\u002F 삼성 디바이스 호환성을 위한 추가 설정\n    contentSelectionIntent.putExtra(\"multi-pick\", true)\n    contentSelectionIntent.putExtra(\"return-data\", false)\n}\n",[31,18240,18241,18245,18249,18253,18258,18263,18268],{"__ignoreMap":87},[91,18242,18243],{"class":93,"line":94},[91,18244,18157],{},[91,18246,18247],{"class":93,"line":105},[91,18248,18162],{},[91,18250,18251],{"class":93,"line":121},[91,18252,1674],{},[91,18254,18255],{"class":93,"line":134},[91,18256,18257],{},"    \u002F\u002F 삼성 디바이스 호환성을 위한 추가 설정\n",[91,18259,18260],{"class":93,"line":228},[91,18261,18262],{},"    contentSelectionIntent.putExtra(\"multi-pick\", true)\n",[91,18264,18265],{"class":93,"line":250},[91,18266,18267],{},"    contentSelectionIntent.putExtra(\"return-data\", false)\n",[91,18269,18270],{"class":93,"line":260},[91,18271,137],{},[16,18273,18274,18275,18278],{},"이렇게 ",[31,18276,18277],{},"multi-pick"," 파라미터를 명시하니까 다중 선택이 가능했었다.",[1112,18280],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[771,18282,18284],{"id":18283},"응답result-파싱-규격-대응","응답(Result) 파싱 규격 대응",[16,18286,18287,18288,18290,18291,18294,18295,18298],{},"여기서 주의할 점이 있다. ",[31,18289,18277],{}," 옵션으로 응답을 받으면 안드로이드 표준 규격인 ",[31,18292,18293],{},"ClipData","가 아니라, 마치 파일을 공유하는 것처럼 ",[31,18296,18297],{},"ACTION_SEND_MULTIPLE"," 형태의 독자적인 규격으로 데이터가 넘어온다.",[82,18300,18303],{"className":18301,"code":18302,"language":1099,"meta":87},[1097],"\u002F\u002F standard\n😀 registerForActivityResult 콜백 ActivityResult{resultCode=RESULT_OK, data=Intent { dat=content:\u002F\u002Fcom.google.android.apps.photos.contentprovider\u002F-1\u002F1\u002Fcontent:\u002F\u002Fmedia\u002Fexternal\u002Fimages\u002Fmedia\u002F63\u002FORIGINAL\u002FNONE\u002Fimage\u002Fjpeg\u002F89489492 flg=0x1 clip={text\u002Furi-list U:content:\u002F\u002Fcom.google.android.apps.photos.contentprovider\u002F-1\u002F1\u002Fcontent%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63\u002FORIGINAL\u002FNONE\u002Fimage%2Fjpeg\u002F89489492} }}\n\n\u002F\u002F samsung multi pic\n😀 registerForActivityResult 콜백 ActivityResult{resultCode=RESULT_OK, data=Intent { act=android.intent.action.SEND_MULTIPLE flg=0x1 (has extras) }}\n\n10:21:06.813  D  ----------------- Extras Dump -----------------\n10:21:06.814  D  Key: selectedCount, Value: 4, Value Type: java.lang.Integer\n10:21:06.815  D  Key: selectedItems, Value: [content:\u002F\u002Fmedia\u002Fexternal\u002Fimages\u002Fmedia\u002F62, ...], Value Type: java.util.ArrayList\n10:21:06.815  D  ---------------------------------------------\n",[31,18304,18302],{"__ignoreMap":87},[16,18306,18307,18308,18311,18312,18315,18316,5733,18319,18322],{},"디버깅을 위해 응답 인텐트의 ",[31,18309,18310],{},"extras","를 덤프떠서 확인해봤다. ",[31,18313,18314],{},"selectedItems","라는 키에 Uri 목록이 담겨서 반환되므로, ",[31,18317,18318],{},"onActivityResult",[31,18320,18321],{},"registerForActivityResult"," 콜백에서 이 분기를 별도로 처리해야 한다.",[82,18324,18326],{"className":1000,"code":18325,"language":1002,"meta":87,"style":87},"val SAMSUNG_MULTI_PICK_KEY = \"selectedItems\"\n\n\u002F\u002F 1. 안드로이드 표준 규격 처리\nif (data.clipData != null) {\n    \u002F\u002F ClipData에서 URI 추출\n} \n\u002F\u002F 2. 삼성 갤러리 독자 규격 처리\nelse if (data.hasExtra(SAMSUNG_MULTI_PICK_KEY)) {\n    val uris = mutableListOf\u003CUri>()\n    \n    \u002F\u002F API 33(Tiramisu) 이상과 미만 호환성 분기\n    val parcelableUris = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {\n        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY, Uri::class.java)\n    } else {\n        @Suppress(\"DEPRECATION\")\n        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY)\n    }\n    \n    parcelableUris?.let {\n        uris.addAll(it)\n    }\n    \n    \u002F\u002F 웹뷰 콜백으로 Uri 배열 반환\n    filePathCallbackLollipop?.onReceiveValue(uris.toTypedArray())\n    filePathCallbackLollipop = null\n}\n",[31,18327,18328,18333,18337,18342,18347,18352,18357,18362,18367,18372,18376,18381,18386,18391,18395,18400,18405,18409,18413,18418,18423,18427,18431,18436,18441,18446],{"__ignoreMap":87},[91,18329,18330],{"class":93,"line":94},[91,18331,18332],{},"val SAMSUNG_MULTI_PICK_KEY = \"selectedItems\"\n",[91,18334,18335],{"class":93,"line":105},[91,18336,1450],{"emptyLinePlaceholder":846},[91,18338,18339],{"class":93,"line":121},[91,18340,18341],{},"\u002F\u002F 1. 안드로이드 표준 규격 처리\n",[91,18343,18344],{"class":93,"line":134},[91,18345,18346],{},"if (data.clipData != null) {\n",[91,18348,18349],{"class":93,"line":228},[91,18350,18351],{},"    \u002F\u002F ClipData에서 URI 추출\n",[91,18353,18354],{"class":93,"line":250},[91,18355,18356],{},"} \n",[91,18358,18359],{"class":93,"line":260},[91,18360,18361],{},"\u002F\u002F 2. 삼성 갤러리 독자 규격 처리\n",[91,18363,18364],{"class":93,"line":274},[91,18365,18366],{},"else if (data.hasExtra(SAMSUNG_MULTI_PICK_KEY)) {\n",[91,18368,18369],{"class":93,"line":284},[91,18370,18371],{},"    val uris = mutableListOf\u003CUri>()\n",[91,18373,18374],{"class":93,"line":299},[91,18375,1674],{},[91,18377,18378],{"class":93,"line":319},[91,18379,18380],{},"    \u002F\u002F API 33(Tiramisu) 이상과 미만 호환성 분기\n",[91,18382,18383],{"class":93,"line":334},[91,18384,18385],{},"    val parcelableUris = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {\n",[91,18387,18388],{"class":93,"line":355},[91,18389,18390],{},"        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY, Uri::class.java)\n",[91,18392,18393],{"class":93,"line":364},[91,18394,4267],{},[91,18396,18397],{"class":93,"line":378},[91,18398,18399],{},"        @Suppress(\"DEPRECATION\")\n",[91,18401,18402],{"class":93,"line":387},[91,18403,18404],{},"        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY)\n",[91,18406,18407],{"class":93,"line":402},[91,18408,1693],{},[91,18410,18411],{"class":93,"line":422},[91,18412,1674],{},[91,18414,18415],{"class":93,"line":438},[91,18416,18417],{},"    parcelableUris?.let {\n",[91,18419,18420],{"class":93,"line":458},[91,18421,18422],{},"        uris.addAll(it)\n",[91,18424,18425],{"class":93,"line":467},[91,18426,1693],{},[91,18428,18429],{"class":93,"line":481},[91,18430,1674],{},[91,18432,18433],{"class":93,"line":490},[91,18434,18435],{},"    \u002F\u002F 웹뷰 콜백으로 Uri 배열 반환\n",[91,18437,18438],{"class":93,"line":3310},[91,18439,18440],{},"    filePathCallbackLollipop?.onReceiveValue(uris.toTypedArray())\n",[91,18442,18443],{"class":93,"line":3315},[91,18444,18445],{},"    filePathCallbackLollipop = null\n",[91,18447,18448],{"class":93,"line":3321},[91,18449,137],{},[16,18451,18452],{},"이와 같이 삼성 전용 파라미터와 결과 처리 로직을 추가하면 기본 갤러리 앱에서도 다중 선택 기능을 온전히 제공할 수 있다.",[829,18454,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":18456},[18457,18458],{"id":18100,"depth":105,"text":18101},{"id":18189,"depth":105,"text":18190,"children":18459},[18460,18461],{"id":18193,"depth":121,"text":18194},{"id":18231,"depth":121,"text":18232},"2025-08-01","안드로이드 웹뷰에서 파일 선택 시 삼성 갤러리의 다중 선택(Multiple Selection)이 동작하지 않는 원인을 파악하고, ACTION_GET_CONTENT와 삼성 비공식 옵션으로 해결하는 방법을 정리한다.","samsung-gallery-webview-multiple-selection-issue",{},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue",{"title":18092,"description":18463},{"loc":18466},"blog\u002Fsamsung-gallery-webview-multiple-selection-issue",[1511,1002,4954],"WiODjfVjrLBtPhXUkB1c0OthcjAPc6ArAKBeTprdvxo",{"id":18473,"title":18474,"body":18475,"created":18579,"description":18580,"extension":843,"filename":18581,"meta":18582,"navigation":846,"path":18583,"seo":18584,"sitemap":18585,"stem":18586,"subject":15047,"tags":18587,"updated":18579,"volume":853,"__hash__":18590},"blog\u002Fblog\u002Fsemantic-web-seo-json-ld-and-rss.md","SEO JSON-LD",{"type":8,"value":18476,"toc":18577},[18477,18484,18491,18567,18574],[16,18478,18479,18480,18483],{},"SEO의 핵심 중 하나로 JSON-LD 가 있다. 메타 태그에 심는 것만 알고 있었는데, 이런 게 있었다. ",[792,18481,18482],{},"JSON-LD (JavaScript Object Notation for Linked Data)"," 는 json 으로 구성된 검색엔진용 페이지 정보다. 우리가 블로그 글이나 상품 상세 페이지를 예쁘게 만들어도, 구글 봇 입장에서는 그게 '리뷰'인지, '레시피'인지, '상품'인지 직관적으로 깨닫기 어렵다.",[16,18485,18486,18487,18490],{},"콘텐츠의 메타데이터를 구조화된 형태로 페이지의 ",[31,18488,18489],{},"\u003Chead>"," 태그 등에 심어두면, 검색 엔진이 페이지의 문맥을 완벽하게 이해하게 된다.",[82,18492,18494],{"className":147,"code":18493,"language":149,"meta":87,"style":87},"\u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"시맨틱 웹과 JSON-LD 이해하기\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"홍길동\"\n  },\n  \"datePublished\": \"2026-04-29\"\n}\n\u003C\u002Fscript>\n",[31,18495,18496,18512,18516,18521,18526,18531,18536,18541,18546,18550,18555,18559],{"__ignoreMap":87},[91,18497,18498,18500,18502,18505,18507,18510],{"class":93,"line":94},[91,18499,156],{"class":101},[91,18501,1945],{"class":159},[91,18503,18504],{"class":97}," type",[91,18506,166],{"class":101},[91,18508,18509],{"class":169},"\"application\u002Fld+json\"",[91,18511,173],{"class":101},[91,18513,18514],{"class":93,"line":105},[91,18515,8486],{"class":101},[91,18517,18518],{"class":93,"line":121},[91,18519,18520],{"class":101},"  \"@context\": \"https:\u002F\u002Fschema.org\",\n",[91,18522,18523],{"class":93,"line":134},[91,18524,18525],{"class":101},"  \"@type\": \"Article\",\n",[91,18527,18528],{"class":93,"line":228},[91,18529,18530],{"class":101},"  \"headline\": \"시맨틱 웹과 JSON-LD 이해하기\",\n",[91,18532,18533],{"class":93,"line":250},[91,18534,18535],{"class":101},"  \"author\": {\n",[91,18537,18538],{"class":93,"line":260},[91,18539,18540],{"class":101},"    \"@type\": \"Person\",\n",[91,18542,18543],{"class":93,"line":274},[91,18544,18545],{"class":101},"    \"name\": \"홍길동\"\n",[91,18547,18548],{"class":93,"line":284},[91,18549,10581],{"class":101},[91,18551,18552],{"class":93,"line":299},[91,18553,18554],{"class":101},"  \"datePublished\": \"2026-04-29\"\n",[91,18556,18557],{"class":93,"line":319},[91,18558,137],{"class":101},[91,18560,18561,18563,18565],{"class":93,"line":334},[91,18562,493],{"class":101},[91,18564,1945],{"class":159},[91,18566,173],{"class":101},[16,18568,18569,18570,18573],{},"이렇게 명시해주면 구글이나 네이버 서치어드바이저의 검색 결과 화면에서 평범한 텍스트 덩어리가 아니라 별점, 작성자, 썸네일 이미지가 함께 뜨는 ",[792,18571,18572],{},"리치 결과(Rich Snippets)"," 로 노출될 확률이 비약적으로 올라간다. 구글 서치 콘솔 가이드라인에서도 가장 권장하는 방식이다.",[829,18575,18576],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":87,"searchDepth":105,"depth":105,"links":18578},[],"2026-04-29","구글 등 검색 엔진이 웹사이트의 콘텐츠를 구조적으로 이해하도록 돕는 JSON-LD(구조화된 데이터)의 개념과, 여전히 유효한 콘텐츠 구독 프로토콜인 RSS에 대해 알아본다.","semantic-web-seo-json-ld-and-rss",{},"\u002Fblog\u002Fsemantic-web-seo-json-ld-and-rss",{"title":18474,"description":18580},{"loc":18583},"blog\u002Fsemantic-web-seo-json-ld-and-rss",[18588,149,18589],"seo","rss","HprR2xTaaIa0gV82jGqW3GN9NhEfW5S3ui-9N1g6jn4",{"id":18592,"title":18593,"body":18594,"created":18884,"description":18885,"extension":843,"filename":18886,"meta":18887,"navigation":846,"path":18888,"seo":18889,"sitemap":18890,"stem":18891,"subject":18892,"tags":18893,"updated":18884,"volume":853,"__hash__":18896},"blog\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port.md","같은 localhost 포트에서 이전 프로젝트가 열릴 때 Service Worker 정리하기",{"type":8,"value":18595,"toc":18878},[18596,18603,18606,18612,18616,18629,18639,18642,18646,18653,18667,18673,18682,18685,18697,18700,18704,18707,18782,18785,18850,18857,18859,18865,18870,18875],[16,18597,18598,18599,18602],{},"동시에 두 로컬 프로젝트를 작업하다가 한 프로젝트가 쓰던 ",[31,18600,18601],{},"localhost:11111"," 포트를 다른 프로젝트에서 열었다. 새 프로젝트의 개발 서버를 실행했는데도 브라우저는 이전 화면을 열려고 해서 자꾸 하얀 화면이 뜨는 것.",[16,18604,18605],{},"강력 새로고침을 하면 잠시 달라지는 것처럼 보였지만 일반 새로고침을 하면 다시 같은 문제가 나타났다. 이 경우에는 HTTP 캐시만 의심하기보다, 이전 프로젝트가 등록한 Service Worker가 아직 해당 origin의 요청을 제어하고 있는지 확인해야 했다.",[16,18607,18608],{},[19,18609],{"alt":18610,"src":18611},"이전 앱이 표시된 localhost 화면","\u002Fblog\u002Fimg\u002Fservice-worker-cache-on-reused-localhost-port\u002Freused-localhost-white-screen.png",[49,18613,18615],{"id":18614},"같은-포트를-쓰면-같은-origin을-다시-쓰게-된다","같은 포트를 쓰면 같은 origin을 다시 쓰게 된다",[16,18617,18618,18619,5321,18622,18625,18626,18628],{},"브라우저는 웹 저장소와 Service Worker를 URL 전체가 아니라 origin 단위로 구분한다. origin은 스킴, 호스트, 포트의 조합이다. 따라서 ",[31,18620,18621],{},"http:\u002F\u002Flocalhost:11111",[31,18623,18624],{},"http:\u002F\u002Flocalhost:3000","은 포트가 달라 서로 다른 origin이지만, 이전 프로젝트와 새 프로젝트가 모두 ",[31,18627,18621],{},"을 사용하면 브라우저 입장에서는 같은 웹 앱의 주소다.",[16,18630,18631,18632,18634,18635,18638],{},"PWA 또는 개발용 Service Worker가 ",[31,18633,8361],{}," 범위로 등록되어 있었다면 이 origin 아래의 페이지와 리소스 요청을 제어할 수 있다. 이전 프로젝트의 개발 서버를 멈춘 뒤에도 등록 자체가 자동으로 사라지는 것은 아니었다. 기존 Service Worker가 ",[31,18636,18637],{},"fetch"," 이벤트를 받아 캐시, 오프라인 응답, 이전 앱 셸을 반환하고 있던 것이다.",[16,18640,18641],{},"Service Worker는 브라우저와 네트워크 사이에서 요청을 가로채는 프록시처럼 동작하기 때문에 일반 새로고침이나 HTTP 캐시 무효화만으로는 활성 Service Worker를 제거하지 못한다.",[49,18643,18645],{"id":18644},"service-worker-상태-확인","Service Worker 상태 확인",[16,18647,18648,18649,18652],{},"Chrome DevTools에서 문제 주소를 연 뒤 ",[31,18650,18651],{},"Application > Service workers","로 이동한다. 이 화면에서 현재 origin에 등록된 Service Worker와 제어 상태를 확인할 수 있다.",[16,18654,18655,18656,18659,18660,64,18663,18666],{},"아래 화면에서 ",[31,18657,18658],{},"http:\u002F\u002Flocalhost:11111\u002F","에 등록된 Service Worker와 ",[31,18661,18662],{},"Bypass for network",[31,18664,18665],{},"Unregister"," 항목을 확인할 수 있다.",[16,18668,18669],{},[19,18670],{"alt":18671,"src":18672},"Chrome DevTools의 Service Worker 등록 상태","\u002Fblog\u002Fimg\u002Fservice-worker-cache-on-reused-localhost-port\u002Fservice-worker-registration.png",[16,18674,18675,18677,18678,18681],{},[31,18676,18658],{},"에 활성 상태의 Worker가 있었다. 현재 포트에서 이전 앱의 Worker가 계속 실행 중인 것이다. ",[31,18679,18680],{},"Source","에 표시되는 파일명도 이전 프로젝트의 등록 코드와 맞는지 확인한다.",[16,18683,18684],{},"같은 화면에서 해결 방법은 두 가지다.",[24,18686,18687,18692],{},[27,18688,18689,18691],{},[31,18690,18662],{},": 현재 DevTools 세션에서 Service Worker를 거치지 않고 네트워크 요청을 보낸다. Worker가 원인인지 빠르게 구분할 때 쓴다.",[27,18693,18694,18696],{},[31,18695,18665],{},": 해당 origin에 등록된 Service Worker를 해제한다. 이전 프로젝트의 Worker를 더 이상 쓰지 않을 때 선택한다.",[16,18698,18699],{},"바로 Unregister 해서 워커를 꺼버렸더니 바로 정상작동했다.",[49,18701,18703],{"id":18702},"콘솔에서-등록을-확인하거나-해제하는-방법","콘솔에서 등록을 확인하거나 해제하는 방법",[16,18705,18706],{},"DevTools 화면을 열기 어려운 경우에는 현재 origin의 등록 목록을 콘솔에서 확인할 수 있다.",[82,18708,18710],{"className":7462,"code":18709,"language":7464,"meta":87,"style":87},"const registrations = await navigator.serviceWorker.getRegistrations()\n\nconsole.table(\n  registrations.map((registration) => ({\n    scope: registration.scope,\n    active: registration.active?.scriptURL,\n  }))\n)\n",[31,18711,18712,18731,18735,18744,18763,18768,18773,18778],{"__ignoreMap":87},[91,18713,18714,18716,18719,18721,18723,18726,18729],{"class":93,"line":94},[91,18715,1968],{"class":566},[91,18717,18718],{"class":108}," registrations",[91,18720,1366],{"class":566},[91,18722,1390],{"class":566},[91,18724,18725],{"class":101}," navigator.serviceWorker.",[91,18727,18728],{"class":97},"getRegistrations",[91,18730,9313],{"class":101},[91,18732,18733],{"class":93,"line":105},[91,18734,1450],{"emptyLinePlaceholder":846},[91,18736,18737,18740,18742],{"class":93,"line":121},[91,18738,18739],{"class":101},"console.",[91,18741,812],{"class":97},[91,18743,9266],{"class":101},[91,18745,18746,18749,18751,18753,18756,18758,18760],{"class":93,"line":134},[91,18747,18748],{"class":101},"  registrations.",[91,18750,13083],{"class":97},[91,18752,1169],{"class":101},[91,18754,18755],{"class":1172},"registration",[91,18757,1176],{"class":101},[91,18759,1179],{"class":566},[91,18761,18762],{"class":101}," ({\n",[91,18764,18765],{"class":93,"line":228},[91,18766,18767],{"class":101},"    scope: registration.scope,\n",[91,18769,18770],{"class":93,"line":250},[91,18771,18772],{"class":101},"    active: registration.active?.scriptURL,\n",[91,18774,18775],{"class":93,"line":260},[91,18776,18777],{"class":101},"  }))\n",[91,18779,18780],{"class":93,"line":274},[91,18781,3487],{"class":101},[16,18783,18784],{},"이 코드는 현재 origin에 등록된 Service Worker의 범위와 활성 스크립트 주소만 보여 준다. 다른 origin의 등록은 보이지 않으므로, 포트를 바꿨다면 문제가 발생한 정확한 주소에서 실행해야 한다.",[82,18786,18788],{"className":7462,"code":18787,"language":7464,"meta":87,"style":87},"const registrations = await navigator.serviceWorker.getRegistrations()\nawait Promise.all(registrations.map((registration) => registration.unregister()))\nlocation.reload()\n",[31,18789,18790,18806,18840],{"__ignoreMap":87},[91,18791,18792,18794,18796,18798,18800,18802,18804],{"class":93,"line":94},[91,18793,1968],{"class":566},[91,18795,18718],{"class":108},[91,18797,1366],{"class":566},[91,18799,1390],{"class":566},[91,18801,18725],{"class":101},[91,18803,18728],{"class":97},[91,18805,9313],{"class":101},[91,18807,18808,18811,18813,18815,18818,18821,18823,18825,18827,18829,18831,18834,18837],{"class":93,"line":105},[91,18809,18810],{"class":566},"await",[91,18812,1976],{"class":108},[91,18814,1235],{"class":101},[91,18816,18817],{"class":97},"all",[91,18819,18820],{"class":101},"(registrations.",[91,18822,13083],{"class":97},[91,18824,1169],{"class":101},[91,18826,18755],{"class":1172},[91,18828,1176],{"class":101},[91,18830,1179],{"class":566},[91,18832,18833],{"class":101}," registration.",[91,18835,18836],{"class":97},"unregister",[91,18838,18839],{"class":101},"()))\n",[91,18841,18842,18845,18848],{"class":93,"line":121},[91,18843,18844],{"class":101},"location.",[91,18846,18847],{"class":97},"reload",[91,18849,9313],{"class":101},[16,18851,18852,18853,18856],{},"로컬 개발 환경에서 이전 Worker를 모두 해제해야 한다면 위 코드를 실행한다. ",[31,18854,18855],{},"unregister()","는 현재 origin의 등록을 대상으로 한다.",[49,18858,6005],{"id":6004},[1112,18860],{"description":18861,"host":18862,"title":18863,"url":18864},"Application 패널을 사용하여 웹 앱 매니페스트, 서비스 워커 및 서비스 워커 캐시를 검사, 수정 및 디버그합니다.","developer.chrome.com","프로그레시브 웹 앱 디버그 | Chrome DevTools | Chrome for Developers","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002Fprogressive-web-apps",[1112,18866],{"description":18867,"host":5541,"title":18868,"url":18869,"favicon":9248},"Service Worker의 등록, 설치, 활성화, 캐시 제어와 요청 처리 흐름을 설명합니다.","Using Service Workers - Web APIs | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FService_Worker_API\u002FUsing_Service_Workers",[1112,18871],{"description":18872,"host":5541,"title":18873,"url":18874,"favicon":9248},"Origin은 스킴, 호스트, 포트의 조합으로 정의됩니다.","Origin - Glossary | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FGlossary\u002FOrigin",[829,18876,18877],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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":87,"searchDepth":105,"depth":105,"links":18879},[18880,18881,18882,18883],{"id":18614,"depth":105,"text":18615},{"id":18644,"depth":105,"text":18645},{"id":18702,"depth":105,"text":18703},{"id":6004,"depth":105,"text":6005},"2026-02-14","로컬 개발 중 같은 localhost 포트를 다른 프로젝트가 사용했을 때 이전 PWA의 Service Worker가 요청을 가로채 흰 화면이 보이는 원인과 DevTools에서 정리하는 방법을 설명한다.","service-worker-cache-on-reused-localhost-port",{},"\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port",{"title":18593,"description":18885},{"loc":18888},"blog\u002Fservice-worker-cache-on-reused-localhost-port","Browser",[10141,18088,18894,18895,14430],"service-worker","pwa","9lRBNMjK8Jsco0Y4YLVPamsDFwZB71mdGnOn7bom4Ek",{"id":18898,"title":18899,"body":18900,"created":19588,"description":19589,"extension":843,"filename":19590,"meta":19591,"navigation":846,"path":19592,"seo":19593,"sitemap":19594,"stem":19595,"subject":851,"tags":19596,"updated":19588,"volume":1863,"__hash__":19597},"blog\u002Fblog\u002Ftailwindcss-color-preset-with-theme.md","tailwindcss color 프리셋 적용하기",{"type":8,"value":18901,"toc":19583},[18902,18905,18947,18950,18954,18960,19003,19010,19014,19017,19020,19026,19071,19095,19105,19110,19113,19119,19122,19217,19231,19255,19264,19308,19319,19466,19482,19486,19490,19571,19580],[16,18903,18904],{},"tailwindcss 에서 미리 기 정의된 color 프리셋을 제공한다. font, background 등등. 다만 기존에 사용하던 색상들을 tailwindcss 체계에 녹이고 싶다.",[812,18906,18907,18921],{},[3001,18908,18909],{},[3004,18910,18911,18916],{},[3007,18912,18913],{},[31,18914,18915],{},"text-black",[3007,18917,18918],{},[31,18919,18920],{},"color: var(--color-black); \u002F* #000 *\u002F",[3017,18922,18923,18935],{},[3004,18924,18925,18930],{},[3022,18926,18927],{},[31,18928,18929],{},"text-white",[3022,18931,18932],{},[31,18933,18934],{},"color: var(--color-white); \u002F* #fff *\u002F",[3004,18936,18937,18942],{},[3022,18938,18939],{},[31,18940,18941],{},"text-red-50",[3022,18943,18944],{},[31,18945,18946],{},"color: var(--color-red-50); \u002F* oklch(0.971 0.013 17.38) *\u002F",[16,18948,18949],{},"비슷한 형태로, 우리의 color 프리셋을 사용해보자.",[49,18951,18953],{"id":18952},"font-color-preset-custom","font color preset custom",[1112,18955],{"host":5599,"title":18956,"url":18957,"description":18958,"image":18959,"favicon":5598},"color - Typography","https:\u002F\u002Ftailwindcss.com\u002Fdocs\u002Fcolor#using-a-custom-value","Utilities for controlling the text color of an element.","https:\u002F\u002Ftailwindcss.com\u002Fapi\u002Fog?path=\u002Fdocs\u002Fcolor",[82,18961,18963],{"className":147,"code":18962,"language":149,"meta":87,"style":87},"\u003Cp class=\"text-[#50d71e] ...\">\u003C\u002Fp>\n\u003Cp class=\"text-(--my-color) ...\">\u003C\u002Fp>\n",[31,18964,18965,18984],{"__ignoreMap":87},[91,18966,18967,18969,18971,18973,18975,18978,18980,18982],{"class":93,"line":94},[91,18968,156],{"class":101},[91,18970,16],{"class":159},[91,18972,163],{"class":97},[91,18974,166],{"class":101},[91,18976,18977],{"class":169},"\"text-[#50d71e] ...\"",[91,18979,12566],{"class":101},[91,18981,16],{"class":159},[91,18983,173],{"class":101},[91,18985,18986,18988,18990,18992,18994,18997,18999,19001],{"class":93,"line":105},[91,18987,156],{"class":101},[91,18989,16],{"class":159},[91,18991,163],{"class":97},[91,18993,166],{"class":101},[91,18995,18996],{"class":169},"\"text-(--my-color) ...\"",[91,18998,12566],{"class":101},[91,19000,16],{"class":159},[91,19002,173],{"class":101},[16,19004,19005,19006,19009],{},"이런식으로 color 코드를 직접 넣거나, variables 를 지정하면 커스텀 컬러를 사용할 수 있다. 하지만 나는 ",[31,19007,19008],{},"text-error-90"," 형식으로 사용하고 싶다.",[49,19011,19013],{"id":19012},"customizing-theme","customizing theme",[16,19015,19016],{},"테마를 수정하는 방식을 제공한다.",[1112,19018],{"host":5599,"title":18956,"url":19019,"description":18958,"image":18959,"favicon":5598},"https:\u002F\u002Ftailwindcss.com\u002Fdocs\u002Fcolor#customizing-your-theme",[1112,19021],{"host":5599,"title":19022,"url":19023,"description":19024,"image":19025,"favicon":5598},"Theme variables - Core concepts","https:\u002F\u002Ftailwindcss.com\u002Fdocs\u002Ftheme","Using utility classes as an API for your design tokens.","https:\u002F\u002Ftailwindcss.com\u002Fapi\u002Fog?path=\u002Fdocs\u002Ftheme",[82,19027,19029],{"className":84,"code":19028,"language":86,"meta":87,"style":87},"@theme {\n  --color-base-10: #FFFFFF;\n  --color-base-20: #F8F8F9;\n  --color-base-30: #ECEDF0;\n  ...\n}\n",[31,19030,19031,19038,19046,19054,19062,19067],{"__ignoreMap":87},[91,19032,19033,19036],{"class":93,"line":94},[91,19034,19035],{"class":566},"@theme",[91,19037,102],{"class":101},[91,19039,19040,19043],{"class":93,"line":105},[91,19041,19042],{"class":101},"  --color-base-10: ",[91,19044,19045],{"class":5466},"#FFFFFF;\n",[91,19047,19048,19051],{"class":93,"line":121},[91,19049,19050],{"class":101},"  --color-base-20: ",[91,19052,19053],{"class":5466},"#F8F8F9;\n",[91,19055,19056,19059],{"class":93,"line":134},[91,19057,19058],{"class":101},"  --color-base-30: ",[91,19060,19061],{"class":5466},"#ECEDF0;\n",[91,19063,19064],{"class":93,"line":228},[91,19065,19066],{"class":101},"  ...\n",[91,19068,19069],{"class":93,"line":250},[91,19070,137],{"class":101},[82,19072,19074],{"className":147,"code":19073,"language":149,"meta":87,"style":87},"\u003Cp class=\"text-base-30\">\u003C\u002Fp>\n",[31,19075,19076],{"__ignoreMap":87},[91,19077,19078,19080,19082,19084,19086,19089,19091,19093],{"class":93,"line":94},[91,19079,156],{"class":101},[91,19081,16],{"class":159},[91,19083,163],{"class":97},[91,19085,166],{"class":101},[91,19087,19088],{"class":169},"\"text-base-30\"",[91,19090,12566],{"class":101},[91,19092,16],{"class":159},[91,19094,173],{"class":101},[16,19096,19097,19100,19101,19104],{},[31,19098,19099],{},"text-base-30"," ",[31,19102,19103],{},"bg-base-30"," 이런식으로 색상을 사용할 수 있게 된다. tailwindcss 가 변수를 읽어 자동으로 utility class 를 생성해준다.",[16,19106,19107],{},[19,19108],{"alt":21,"src":19109},"\u002Fblog\u002Fimg\u002Ftailwindcss-color-preset-with-theme\u002Fimg.png",[16,19111,19112],{},"오오",[1112,19114],{"host":1714,"title":19115,"url":19116,"description":19117,"image":19118},"How to use custom color themes in TailwindCSS v4","https:\u002F\u002Fstackoverflow.com\u002Fa\u002F79499827","My tailwind.config.js in v3 looks like this, but I can't find a way to use it in v4:theme: {  extend: {    colors: {      lightHover: '#fcf4ff',      darkHover: '#2a004a',      darktheme: '#1...","https:\u002F\u002Fcdn.sstatic.net\u002FSites\u002Fstackoverflow\u002Fimg\u002Fapple-touch-icon@2.png?v=73d79a89bded",[16,19120,19121],{},"다음은 테마를 적용해보자.",[82,19123,19125],{"className":84,"code":19124,"language":86,"meta":87,"style":87},"\n@custom-variant dark (&:where(.dark, .dark *));\n@theme {\n  --color-custom-10: #FFFFFF;\n  --color-custom-20: #F8F8F9;\n  --color-custom-30: #ECEDF0;\n    ...\n}\n@variant dark {\n  --color-custom-10: #0D152A;\n  --color-custom-20: #303445;\n  --color-custom-30: #555C6C;\n    ...\n}\n",[31,19126,19127,19131,19139,19145,19152,19159,19166,19170,19174,19182,19191,19200,19209,19213],{"__ignoreMap":87},[91,19128,19129],{"class":93,"line":94},[91,19130,1450],{"emptyLinePlaceholder":846},[91,19132,19133,19136],{"class":93,"line":105},[91,19134,19135],{"class":566},"@custom-variant",[91,19137,19138],{"class":101}," dark (&:where(.dark, .dark *));\n",[91,19140,19141,19143],{"class":93,"line":121},[91,19142,19035],{"class":566},[91,19144,102],{"class":101},[91,19146,19147,19150],{"class":93,"line":134},[91,19148,19149],{"class":101},"  --color-custom-10: ",[91,19151,19045],{"class":5466},[91,19153,19154,19157],{"class":93,"line":228},[91,19155,19156],{"class":101},"  --color-custom-20: ",[91,19158,19053],{"class":5466},[91,19160,19161,19164],{"class":93,"line":250},[91,19162,19163],{"class":101},"  --color-custom-30: ",[91,19165,19061],{"class":5466},[91,19167,19168],{"class":93,"line":260},[91,19169,14989],{"class":101},[91,19171,19172],{"class":93,"line":274},[91,19173,137],{"class":101},[91,19175,19176,19179],{"class":93,"line":284},[91,19177,19178],{"class":566},"@variant",[91,19180,19181],{"class":101}," dark {\n",[91,19183,19184,19186,19189],{"class":93,"line":299},[91,19185,19149],{"class":101},[91,19187,19188],{"class":5466},"#0D152A",[91,19190,118],{"class":101},[91,19192,19193,19195,19198],{"class":93,"line":319},[91,19194,19156],{"class":101},[91,19196,19197],{"class":5466},"#303445",[91,19199,118],{"class":101},[91,19201,19202,19204,19207],{"class":93,"line":334},[91,19203,19163],{"class":101},[91,19205,19206],{"class":5466},"#555C6C",[91,19208,118],{"class":101},[91,19210,19211],{"class":93,"line":355},[91,19212,14989],{"class":101},[91,19214,19215],{"class":93,"line":364},[91,19216,137],{"class":101},[16,19218,18274,19219,19222,19223,19226,19227,19230],{},[31,19220,19221],{},"@variant dark"," 로 컬러를 선언해주면, ",[31,19224,19225],{},"@custom-variant dark"," 에 의해서, ",[31,19228,19229],{},".dark"," 클래스 아래의 요소들은 variables 가 갈아끼워진다.",[82,19232,19234],{"className":147,"code":19233,"language":149,"meta":87,"style":87},"\u003Chtml class=\"dark\">\u003C\u002Fhtml>\n",[31,19235,19236],{"__ignoreMap":87},[91,19237,19238,19240,19242,19244,19246,19249,19251,19253],{"class":93,"line":94},[91,19239,156],{"class":101},[91,19241,149],{"class":159},[91,19243,163],{"class":97},[91,19245,166],{"class":101},[91,19247,19248],{"class":169},"\"dark\"",[91,19250,12566],{"class":101},[91,19252,149],{"class":159},[91,19254,173],{"class":101},[16,19256,19257,19258,19260,19261,19263],{},"위 형태로 ",[31,19259,149],{}," 태그의 클래스에 dark 가 포함되면, ",[31,19262,19221],{}," 의 변수들이 사용되는 구조이다.",[82,19265,19267],{"className":147,"code":19266,"language":149,"meta":87,"style":87},"\u003Cdiv class=\"text-custom-70 dark:text-custom-50\">test color tailwindcss\u003C\u002Fdiv>\n\u003Cdiv class=\"text-custom-70\">test color tailwindcss\u003C\u002Fdiv>\n",[31,19268,19269,19289],{"__ignoreMap":87},[91,19270,19271,19273,19275,19277,19279,19282,19285,19287],{"class":93,"line":94},[91,19272,156],{"class":101},[91,19274,160],{"class":159},[91,19276,163],{"class":97},[91,19278,166],{"class":101},[91,19280,19281],{"class":169},"\"text-custom-70 dark:text-custom-50\"",[91,19283,19284],{"class":101},">test color tailwindcss\u003C\u002F",[91,19286,160],{"class":159},[91,19288,173],{"class":101},[91,19290,19291,19293,19295,19297,19299,19302,19304,19306],{"class":93,"line":105},[91,19292,156],{"class":101},[91,19294,160],{"class":159},[91,19296,163],{"class":97},[91,19298,166],{"class":101},[91,19300,19301],{"class":169},"\"text-custom-70\"",[91,19303,19284],{"class":101},[91,19305,160],{"class":159},[91,19307,173],{"class":101},[16,19309,19310,19311,19314,19315,19318],{},"tailwindcss 에서는 dark mode 일 때는 ",[31,19312,19313],{},"dark:bg-base-10"," 이런식으로 특정 조건일 때 클래스를 적용할 수 있도록 기능을 제공한다.\n",[31,19316,19317],{},"dark:*"," 로 dark 모드일 때 데이터를 지정하여, dark 모드가 되었을 때 70 이 아닌 50을 사용하겠다는 뜻이 된다. 다만, dark 모드로 갈아끼워진 variable 의 50을 사용하게 되는 것을 주의해야 한다.",[82,19320,19322],{"className":1154,"code":19321,"language":1156,"meta":87,"style":87},"\u002F**\n * # 테마 컬러를 변경한다.\n *\u002F\nfunction changeTheme(theme: ColorTheme) {\n    document.documentElement.classList.remove(...[\"dark-mode\", ...]);\n    if (theme === ColorTheme.DARK) {\n        document.documentElement.classList.add(\"dark-mode\");\n    } else if (theme === ColorTheme.SOMETHEME) { ... }\n    localStorage.setItem(STORAGE_KEY, theme);\n    colorTheme.value = theme;\n}\n",[31,19323,19324,19328,19333,19337,19356,19381,19398,19412,19437,19452,19462],{"__ignoreMap":87},[91,19325,19326],{"class":93,"line":94},[91,19327,2559],{"class":1343},[91,19329,19330],{"class":93,"line":105},[91,19331,19332],{"class":1343}," * # 테마 컬러를 변경한다.\n",[91,19334,19335],{"class":93,"line":121},[91,19336,2569],{"class":1343},[91,19338,19339,19341,19344,19346,19349,19351,19354],{"class":93,"line":134},[91,19340,7471],{"class":566},[91,19342,19343],{"class":97}," changeTheme",[91,19345,795],{"class":101},[91,19347,19348],{"class":1172},"theme",[91,19350,1208],{"class":566},[91,19352,19353],{"class":97}," ColorTheme",[91,19355,3866],{"class":101},[91,19357,19358,19361,19364,19366,19368,19371,19374,19376,19378],{"class":93,"line":228},[91,19359,19360],{"class":101},"    document.documentElement.classList.",[91,19362,19363],{"class":97},"remove",[91,19365,795],{"class":101},[91,19367,1442],{"class":566},[91,19369,19370],{"class":101},"[",[91,19372,19373],{"class":169},"\"dark-mode\"",[91,19375,64],{"class":101},[91,19377,1442],{"class":566},[91,19379,19380],{"class":101},"]);\n",[91,19382,19383,19385,19388,19390,19393,19396],{"class":93,"line":250},[91,19384,8218],{"class":566},[91,19386,19387],{"class":101}," (theme ",[91,19389,9382],{"class":566},[91,19391,19392],{"class":101}," ColorTheme.",[91,19394,19395],{"class":108},"DARK",[91,19397,3866],{"class":101},[91,19399,19400,19403,19406,19408,19410],{"class":93,"line":260},[91,19401,19402],{"class":101},"        document.documentElement.classList.",[91,19404,19405],{"class":97},"add",[91,19407,795],{"class":101},[91,19409,19373],{"class":169},[91,19411,1594],{"class":101},[91,19413,19414,19416,19418,19421,19423,19425,19427,19430,19433,19435],{"class":93,"line":274},[91,19415,12893],{"class":101},[91,19417,5258],{"class":566},[91,19419,19420],{"class":566}," if",[91,19422,19387],{"class":101},[91,19424,9382],{"class":566},[91,19426,19392],{"class":101},[91,19428,19429],{"class":108},"SOMETHEME",[91,19431,19432],{"class":101},") { ",[91,19434,1442],{"class":566},[91,19436,1445],{"class":101},[91,19438,19439,19442,19444,19446,19449],{"class":93,"line":284},[91,19440,19441],{"class":101},"    localStorage.",[91,19443,9263],{"class":97},[91,19445,795],{"class":101},[91,19447,19448],{"class":108},"STORAGE_KEY",[91,19450,19451],{"class":101},", theme);\n",[91,19453,19454,19457,19459],{"class":93,"line":299},[91,19455,19456],{"class":101},"    colorTheme.value ",[91,19458,166],{"class":566},[91,19460,19461],{"class":101}," theme;\n",[91,19463,19464],{"class":93,"line":319},[91,19465,137],{"class":101},[16,19467,19468,19469,19471,19472,19474,19475,19478,19479,19481],{},"테마 변경을 ",[31,19470,7479],{}," 의 클래스로 활용했었다. ",[31,19473,149],{}," 태그의 클래스를 바꿔주기 위해서 대상을 ",[31,19476,19477],{},"document.documentElement"," 로 변경해주었다. ",[31,19480,19178],{}," 는 html 태그의 클래스를 인식한다.",[49,19483,19485],{"id":19484},"vue3-에서-css-variables-값-가져오기","vue3 에서 css variables 값 가져오기",[1112,19487],{"host":10802,"title":19488,"url":19489},"Reddit - The heart of the internet","https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fvuejs\u002Fcomments\u002F13o4z9y\u002Fhow_to_access_css_variable_varbackgrounf_color_in\u002F",[82,19491,19493],{"className":1154,"code":19492,"language":1156,"meta":87,"style":87},"const root = document.querySelector(':root');\nif(root) {\n    return {\n        100: getComputedStyle(root).getPropertyValue(`--color-${p}-100`),\n        ...\n    };\n} \n",[31,19494,19495,19516,19523,19529,19557,19562,19567],{"__ignoreMap":87},[91,19496,19497,19499,19502,19504,19506,19509,19511,19514],{"class":93,"line":94},[91,19498,1968],{"class":566},[91,19500,19501],{"class":108}," root",[91,19503,1366],{"class":566},[91,19505,5025],{"class":101},[91,19507,19508],{"class":97},"querySelector",[91,19510,795],{"class":101},[91,19512,19513],{"class":169},"':root'",[91,19515,1594],{"class":101},[91,19517,19518,19520],{"class":93,"line":105},[91,19519,5226],{"class":566},[91,19521,19522],{"class":101},"(root) {\n",[91,19524,19525,19527],{"class":93,"line":121},[91,19526,7717],{"class":566},[91,19528,102],{"class":101},[91,19530,19531,19534,19536,19539,19542,19545,19547,19550,19552,19555],{"class":93,"line":134},[91,19532,19533],{"class":108},"        100",[91,19535,112],{"class":101},[91,19537,19538],{"class":97},"getComputedStyle",[91,19540,19541],{"class":101},"(root).",[91,19543,19544],{"class":97},"getPropertyValue",[91,19546,795],{"class":101},[91,19548,19549],{"class":169},"`--color-${",[91,19551,16],{"class":101},[91,19553,19554],{"class":169},"}-100`",[91,19556,8037],{"class":101},[91,19558,19559],{"class":93,"line":228},[91,19560,19561],{"class":566},"        ...\n",[91,19563,19564],{"class":93,"line":250},[91,19565,19566],{"class":101},"    };\n",[91,19568,19569],{"class":93,"line":260},[91,19570,137],{"class":101},[16,19572,19573,19575,19576,19579],{},[31,19574,19178],{}," 로 지정한 테마의 색상 변수는 ",[31,19577,19578],{},":root"," 요소를 찾아야 한다. 계산된 style 을 찾아서 변수의 값을 가져오자.",[829,19581,19582],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":87,"searchDepth":105,"depth":105,"links":19584},[19585,19586,19587],{"id":18952,"depth":105,"text":18953},{"id":19012,"depth":105,"text":19013},{"id":19484,"depth":105,"text":19485},"2025-03-27","Tailwind CSS의 테마 커스터마이징 방법을 소개하며, 사용자 정의 색상 변수를 설정하여 디자인을 개선하는 기술을 다룬다. 다양한 테마 설정과 CSS 변수 사용 사례를 통해 원하는 스타일을 구현하는 방법을 배울 수 있다.","tailwindcss-color-preset-with-theme",{},"\u002Fblog\u002Ftailwindcss-color-preset-with-theme",{"title":18899,"description":19589},{"loc":19592},"blog\u002Ftailwindcss-color-preset-with-theme",[86,5721],"1XM8CItHPQ4Z-Ew8q8VbAO5P1XmqqLs1CT6kSCATWsE",{"id":19599,"title":19600,"body":19601,"created":19751,"description":19752,"extension":843,"filename":19753,"meta":19754,"navigation":846,"path":19755,"seo":19756,"sitemap":19757,"stem":19758,"subject":19759,"tags":19760,"updated":19751,"volume":853,"__hash__":19763},"blog\u002Fblog\u002Ftailwindcss-storybook-version-error.md","tailwindcss 4.0.8 버전 storybook 호환성 오류",{"type":8,"value":19602,"toc":19746},[19603,19607,19610,19613,19627,19633,19636,19642,19648,19651,19659,19664,19671,19675,19681,19684,19695,19699,19705,19716,19741,19744],[49,19604,19606],{"id":19605},"error-enoent-no-such-file-or-directory-stat-cusersprojectpathiframehtml","Error: ENOENT: no such file or directory, stat 'C:\\Users\\PROJECTPATH\\iframe.html'",[16,19608,19609],{},"어느날 갑자기 CICD가 안되어서 내용을 보니 storybook 빌드를 하면서 에러가 발생했었다. 분명 로컬에서는 되는데 원격 환경에서만 에러가 발생하는 것이었다.",[16,19611,19612],{},"사용 중인 버전정보는 다음과 같다,",[24,19614,19615,19618,19621,19624],{},[27,19616,19617],{},"tailwindcss@4.0.8",[27,19619,19620],{},"storybook@8.6.0",[27,19622,19623],{},"vite@6.1.0",[27,19625,19626],{},"vue3@3.5.13",[82,19628,19631],{"className":19629,"code":19630,"language":1099},[1097],"{projectname} build-storybook\nstorybook build\n\n@storybook\u002Fcore v8.6.0\n\ninfo => Cleaning outputDir: storybook-static\ninfo => Loading presets\nWARN The \"@storybook\u002Faddon-mdx-gfm\" addon is meant as a migration assistant for Storybook 8.0; and will likely be removed in a future version.\nWARN It's recommended you read this document:\nWARN https:\u002F\u002Fstorybook.js.org\u002Fdocs\u002Fwriting-docs\u002Fmdx#markdown-tables-arent-rendering-correctly\nWARN\nWARN Once you've made the necessary changes, you can remove the addon from your package.json and storybook config.\ninfo => Building manager..\ninfo => Manager built (236 ms)\ninfo => Building preview..\nmode production\nnpm_package_version 2.12.3\nplugin 'rollup-plugin-html-env' uses deprecated 'transform' option. Use 'handler' option instead.\nvite v6.1.0 building for production...\ntransforming (1) virtual:@storybook\\builder-vite\\vite-app.jsC:\\Users\\PROJECTPATH\\node_modules\\storybook\\bin\\index.cjs:23\nthrow error;\n^\n\nError: ENOENT: no such file or directory, stat 'C:\\Users\\PROJECTPATH\\iframe.html'\nat async Object.stat (node:internal\u002Ffs\u002Fpromises:1036:18)\nat async C.addBuildDependency (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002F@tailwindcss\u002Fvite\u002Fdist\u002Findex.mjs:1:5226) {\nerrno: -4058,\ncode: 'ENOENT',\nsyscall: 'stat',\npath: 'C:\\Users\\PROJECTPATH\\iframe.html'\n}\n",[31,19632,19630],{"__ignoreMap":87},[16,19634,19635],{},"iframe.html 파일을 찾지 못해서 발생한 에러이다. storybook 과 tailwindcss 를 같이 사용할 때, 미리보기 파일이 생성이 안되면서 발생하는 것으로 보인다.",[1112,19637],{"description":19638,"favicon":1320,"host":1317,"image":19639,"title":19640,"url":19641},"What version of Tailwind CSS are you using? v4.0.8 What build tool (or framework if it abstracts the build tool) are you using? Storybook v8.5.8 Vite v5.4.14 What version of Node.js are you using? ...","https:\u002F\u002Fopengraph.githubassets.com\u002Fe7a6f8fe1ba78e023dbfa9f44388e93bcbe3c43841cf0e9034777d276d47677c\u002Ftailwindlabs\u002Ftailwindcss\u002Fissues\u002F16785","4.0.8 + Vite + Storybook = new crash · Issue #16785 · tailwindlabs\u002Ftailwindcss","https:\u002F\u002Fgithub.com\u002Ftailwindlabs\u002Ftailwindcss\u002Fissues\u002F16785",[1112,19643],{"description":19644,"favicon":1320,"host":1317,"image":19645,"title":19646,"url":19647},"Fixes #16732If we can not get the mtime from a file, chances are that the resource is a virtual module. This is perfectly legit and we can fall back to what we did before the changes in 4.0.8 (whi...","https:\u002F\u002Fopengraph.githubassets.com\u002Ff4e77eb4132aa99f9be1cfadae376ec84a4a99df80f95e1692ae31ba1d1ef10a\u002Ftailwindlabs\u002Ftailwindcss\u002Fpull\u002F16780","Vite: Don't crash with virtual module dependencies by philipp-spiess · Pull Request #16780 · tailwindlabs\u002Ftailwindcss","https:\u002F\u002Fgithub.com\u002Ftailwindlabs\u002Ftailwindcss\u002Fpull\u002F16780",[16,19649,19650],{},"헤당 이슈 혹은 비슷한 이슈가 이미 오픈되어 있었다. 이 문제를 발견한 시점으로부터 바로 하루 전이었다.",[1722,19652,19653],{},[16,19654,19655,19658],{},[91,19656,19657],{},"!success","\n여기서 insider 라는 용어를 처음 알았다. 공식적으로 발표되지 않았지만, 사용해볼 수 있는 버전을 뜻하는듯 하다.",[16,19660,19661],{},[19,19662],{"alt":21,"src":19663},"\u002Fblog\u002Fimg\u002Ftailwindcss-storybook-version-error\u002Ftailwindcss-storybook-version-error.png",[16,19665,19666,19667,19670],{},"내용으로 봐서는 4.0.8 버전에 일부 문제가 있었던 것 같고, 4.0.9 버전에서 픽스가 되어서 바로 사용해볼 수 있었다. ",[31,19668,19669],{},"\"tailwindcss\": \"^4.0.9\""," 으로 세팅해서 lock 파일과 node_modules 폴더를 모두 지우고 다시 설치해서 이 문제는 해결되었다.",[49,19672,19674],{"id":19673},"cannot-be-closed-a","Cannot be closed: a",[82,19676,19679],{"className":19677,"code":19678,"language":1099},[1097],"✗ Build failed in 8.40s\n=> Failed to build the preview\n[vite:build-html] Cannot be closed: a\n    at ParseHTML.onCloseTagEndEvent (.\\node_modules\\vite-plugin-html-env\\lib\\parse\\index.js:313:15)\n    at ParseHTML.parse (.\\node_modules\\vite-plugin-html-env\\lib\\parse\\index.js:189:16)\n    at transform (.\\node_modules\\vite-plugin-html-env\\lib\\index.js:148:19)\n    at applyHtmlTransforms (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:42504:23)\n    at async Object.generateBundle (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:42244:18)\n    at async Bundle.generate (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:20116:9)\n    at async file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:22805:27\n    at async catchUnfinishedHookActions (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:22187:16)\n    at async buildEnvironment (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:51450:16)\n    at async build (.\\node_modules\\@storybook\\builder-vite\\dist\\index.js:80:230)\n",[31,19680,19678],{"__ignoreMap":87},[16,19682,19683],{},"다시 최신 커밋으로 돌아가 tailwindcss 버전만 4.0.9 로 올린다고 성공하진 않았다. storybook 버전은 그대로 사용해야 충돌이 안나는듯 했다. 이 에러는 storybook 의 에러로 보인다. story 파일도 모두 지우고 테스트해봐도 같은 결과인 걸 보면, 작성한 stories 에서 문제가 있던 건 아닌 거로 보인다.",[16,19685,19686,19687,19690,19691,19694],{},"문제가 된 커밋을 찾아보니, 이번엔 storybook 의 버전 문제였다. 원래 되던 것이 안되면 무조건 버전 문제다. ",[31,19688,19689],{},"8.4.7"," -> ",[31,19692,19693],{},"8.6.0"," 으로 올렸던 것이 문제가 되었었다. 이 커밋을 revert 하고 시도하니 해결되었다. 무작정 신버전이 능사는아니다.",[49,19696,19698],{"id":19697},"tailwindcssoxide-linux-x64-gnu","@tailwindcss\u002Foxide-linux-x64-gnu",[82,19700,19703],{"className":19701,"code":19702,"language":1099},[1097],"failed to load config from \u002Fhome\u002Frunner\u002Fwork\u002FUpbox-2.0-Front-Application\u002FUpbox-2.0-Front-Application\u002Fvite.config.ts\n=> Failed to build the preview\nError: Cannot find module '@tailwindcss\u002Foxide-linux-x64-gnu'\nRequire stack:\n- .\u002Fnode_modules\u002F@tailwindcss\u002Foxide\u002Findex.js\n    at Function.\u003Canonymous> (node:internal\u002Fmodules\u002Fcjs\u002Floader:1225:15)\n    at Module._resolveFilename (.\u002Fnode_modules\u002Fesbuild-register\u002Fdist\u002Fnode.js:4794:36)\n    at Function._load (node:internal\u002Fmodules\u002Fcjs\u002Floader:1055:27)\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n    at wrapModuleLoad (node:internal\u002Fmodules\u002Fcjs\u002Floader:220:24)\n    at Module.require (node:internal\u002Fmodules\u002Fcjs\u002Floader:1311:12)\n    at require (node:internal\u002Fmodules\u002Fhelpers:136:16)\n    at Object.\u003Canonymous> (.\u002Fnode_modules\u002F@tailwindcss\u002Foxide\u002Findex.js:190:31)\n    at Module._compile (node:internal\u002Fmodules\u002Fcjs\u002Floader:1554:14)\n    at node:internal\u002Fmodules\u002Fcjs\u002Floader:1706:10\n",[31,19704,19702],{"__ignoreMap":87},[16,19706,19707,19708,19711,19712,19715],{},"github actions 에서 빌드를 하려니 또 이런 에러가 발생한다. ",[31,19709,19710],{},"^4.0.6"," 버전일 때는 에러가 없었는데, ",[31,19713,19714],{},"^4.0.9"," 로 올리면서 에러가 발생한듯 하다. 일단 optionalDependencies 에 추가해주었다.",[82,19717,19719],{"className":8477,"code":19718,"language":8479,"meta":87,"style":87},"\"optionalDependencies\": {\n    \"@tailwindcss\u002Foxide-linux-x64-gnu\": \"^4.0.9\"\n}\n",[31,19720,19721,19727,19737],{"__ignoreMap":87},[91,19722,19723,19725],{"class":93,"line":94},[91,19724,15360],{"class":169},[91,19726,8789],{"class":101},[91,19728,19729,19732,19734],{"class":93,"line":105},[91,19730,19731],{"class":108},"    \"@tailwindcss\u002Foxide-linux-x64-gnu\"",[91,19733,112],{"class":101},[91,19735,19736],{"class":169},"\"^4.0.9\"\n",[91,19738,19739],{"class":93,"line":121},[91,19740,137],{"class":101},[16,19742,19743],{},"버전은 tailwindcss 버전과 맞추면 될듯 하다.",[829,19745,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":19747},[19748,19749,19750],{"id":19605,"depth":105,"text":19606},{"id":19673,"depth":105,"text":19674},{"id":19697,"depth":105,"text":19698},"2025-03-21","tailwindcss 와 storybook 의 호환성 문제 해결 과정. 특정 버전의 문제로 핫픽스 적용.","tailwindcss-storybook-version-error",{},"\u002Fblog\u002Ftailwindcss-storybook-version-error",{"title":19600,"description":19752},{"loc":19755},"blog\u002Ftailwindcss-storybook-version-error","Tailwindcss",[5721,1261,19761,16324,19762],"Vite","storybook","FyskTyAtVL8HXePtpTndlujVtQ8PIxzitYSgcARjUaQ",{"id":19765,"title":19766,"body":19767,"created":19923,"description":19924,"extension":843,"filename":19925,"meta":19926,"navigation":846,"path":19927,"seo":19928,"sitemap":19929,"stem":19930,"subject":19759,"tags":19931,"updated":19923,"volume":1863,"__hash__":19933},"blog\u002Fblog\u002Ftailwindcss-v4-vue-svelte-apply-directive-issue.md","Tailwind CSS v4: Vue\u002FSvelte \u003Cstyle> 블록에서 @apply가 작동하지 않는 이슈",{"type":8,"value":19768,"toc":19921},[19769,19783,19788,19886,19889,19898,19918],[16,19770,19771,19772,19775,19776,19778,19779,19782],{},"Tailwind CSS v4 버전으로 넘어오면서 컴파일러 아키텍처와 CSS 파싱 방식이 대폭 개편되었고, 기존 기능에서 호환성 문제가 좀 있었다. Vue의 ",[31,19773,19774],{},"\u003Cstyle>"," 블록이나 Svelte의 ",[31,19777,19774],{}," 블록 내부에서 Tailwind의 유틸리티 클래스를 묶어주는 ",[31,19780,19781],{},"@apply"," 디렉티브가 제대로 작동하지 않았다.",[16,19784,19785,19786,2997],{},"일반적으로 중복되는 Tailwind 클래스를 묶어 재사용하고 싶을 때 아래와 같이 ",[31,19787,19781],{},[82,19789,19791],{"className":84,"code":19790,"language":86,"meta":87,"style":87},"\u003Cstyle scoped>\n.my-custom-btn {\n  \u002F* 이렇게 기존에 제공되는 유틸리티들을 묶어 쓰고 싶은데 작동하지 않음 *\u002F\n  @apply bg-blue-500 text-white font-bold py-2 px-4 rounded;\n  \n  \u002F* 어쩔 수 없이 순수 CSS로 풀어써야 함 *\u002F\n  text-align: right; \n}\n\u003C\u002Fstyle>\n",[31,19792,19793,19804,19811,19816,19852,19856,19861,19874,19878],{"__ignoreMap":87},[91,19794,19795,19797,19799,19802],{"class":93,"line":94},[91,19796,156],{"class":101},[91,19798,829],{"class":159},[91,19800,19801],{"class":101}," scoped",[91,19803,173],{"class":566},[91,19805,19806,19809],{"class":93,"line":105},[91,19807,19808],{"class":97},".my-custom-btn",[91,19810,102],{"class":101},[91,19812,19813],{"class":93,"line":121},[91,19814,19815],{"class":1343},"  \u002F* 이렇게 기존에 제공되는 유틸리티들을 묶어 쓰고 싶은데 작동하지 않음 *\u002F\n",[91,19817,19818,19821,19824,19827,19830,19832,19835,19838,19841,19844,19847,19850],{"class":93,"line":134},[91,19819,19820],{"class":101},"  @",[91,19822,19823],{"class":108},"apply",[91,19825,19826],{"class":108}," bg-blue-",[91,19828,19829],{"class":101},"500 ",[91,19831,18929],{"class":108},[91,19833,19834],{"class":108}," font-bold",[91,19836,19837],{"class":108}," py-",[91,19839,19840],{"class":101},"2 ",[91,19842,19843],{"class":108},"px-",[91,19845,19846],{"class":101},"4 ",[91,19848,19849],{"class":108},"rounded",[91,19851,118],{"class":101},[91,19853,19854],{"class":93,"line":228},[91,19855,1629],{"class":101},[91,19857,19858],{"class":93,"line":250},[91,19859,19860],{"class":1343},"  \u002F* 어쩔 수 없이 순수 CSS로 풀어써야 함 *\u002F\n",[91,19862,19863,19866,19868,19871],{"class":93,"line":260},[91,19864,19865],{"class":108},"  text-align",[91,19867,112],{"class":101},[91,19869,19870],{"class":108},"right",[91,19872,19873],{"class":101},"; \n",[91,19875,19876],{"class":93,"line":274},[91,19877,137],{"class":101},[91,19879,19880,19882,19884],{"class":93,"line":284},[91,19881,493],{"class":101},[91,19883,829],{"class":159},[91,19885,173],{"class":566},[16,19887,19888],{},"v4(특히 4.0.0-beta 버전대) 빌드 도구 환경에서 위 코드를 작성하면, 빌드 파이프라인에서 해당 디렉티브를 해석하지 못하거나 빌드 에러, 혹은 스타일이 무시되었다.",[16,19890,19891,19892,19897],{},"이는 Tailwind v4가 Vite나 프레임워크 자체의 CSS 처리 파이프라인과 통합되는 방식이 완전히 달라졌기 때문이다. 이 이슈는 Tailwind Labs의 ",[4306,19893,19896],{"href":19894,"rel":19895},"https:\u002F\u002Fgithub.com\u002Ftailwindlabs\u002Ftailwindcss\u002Fdiscussions\u002F15205",[4310],"공식 Github Discussion #15205","에서도 활발히 논의되고 있다.",[16,19899,19900,19901,19903,19904,19906,19907,19910,19911,19914,19915,19917],{},"플러그인 업데이트나 프레임워크 플러그인의 지원이 완전해질 때까지는, 프레임워크 컴포넌트 내부 ",[31,19902,19774],{}," 블록에서의 ",[31,19905,19781],{}," 사용을 자제하고 대신 React의 ",[31,19908,19909],{},"className"," 조립이나 Vue\u002FSvelte의 클래스 바인딩, 혹은 Tailwind의 최상위 ",[31,19912,19913],{},"index.css"," 파일에서 ",[31,19916,19781],{},"를 정의하여 사용하는 우회 방식을 권장한다.",[829,19919,19920],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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":87,"searchDepth":105,"depth":105,"links":19922},[],"2026-04-04","Tailwind CSS v4 베타 버전 사용 시 Vue와 Svelte의 컴포넌트 스타일 블록에서 @apply 디렉티브가 정상 동작하지 않는 이슈 현상을 정리한다.","tailwindcss-v4-vue-svelte-apply-directive-issue",{},"\u002Fblog\u002Ftailwindcss-v4-vue-svelte-apply-directive-issue",{"title":19766,"description":19924},{"loc":19927},"blog\u002Ftailwindcss-v4-vue-svelte-apply-directive-issue",[5721,86,1936,19932],"svelte","QvENgzvdIQeP2crkHJDwo33f7y2b9jA9Nch8TXs2LmM",{"id":19935,"title":19936,"body":19937,"created":20877,"description":20878,"extension":843,"filename":20879,"meta":20880,"navigation":846,"path":20881,"seo":20882,"sitemap":20883,"stem":20884,"subject":17549,"tags":20885,"updated":20877,"volume":853,"__hash__":20887},"blog\u002Fblog\u002Ftypescript-type-interface-enum-choice.md","TypeScript에서 type, interface, enum을 선택하는 기준",{"type":8,"value":19938,"toc":20867},[19939,19953,19957,20037,20049,20148,20158,20296,20302,20319,20323,20394,20404,20420,20424,20513,20518,20524,20527,20530,20536,20545,20548,20552,20555,20559,20565,20640,20647,20651,20658,20678,20774,20785,20794,20798,20801,20864],[16,19940,19941,19942,5321,19945,19948,19949,19952],{},"TypeScript를 쓰다 보면 객체 모양을 만들 때는 ",[31,19943,19944],{},"type",[31,19946,19947],{},"interface"," 중 무엇을 써야 하는지, 상태 코드처럼 정해진 값을 만들 때는 ",[31,19950,19951],{},"enum","을 써야 하는지 자주 고민하게 된다. 문법을 통일하는 것도 중요하지만, 각 선언이 타입 검사에만 남는지 런타임 JavaScript까지 남는지를 구분하면 선택이 쉬워진다.",[49,19954,19956],{"id":19955},"객체-형태","객체 형태",[82,19958,19960],{"className":1154,"code":19959,"language":1156,"meta":87,"style":87},"interface User {\n  id: string;\n  name: string;\n}\n\ntype UserPreview = {\n  id: string;\n  name: string;\n};\n",[31,19961,19962,19971,19982,19993,19997,20001,20012,20022,20032],{"__ignoreMap":87},[91,19963,19964,19966,19969],{"class":93,"line":94},[91,19965,19947],{"class":566},[91,19967,19968],{"class":97}," User",[91,19970,102],{"class":101},[91,19972,19973,19976,19978,19980],{"class":93,"line":105},[91,19974,19975],{"class":1172},"  id",[91,19977,1208],{"class":566},[91,19979,1357],{"class":108},[91,19981,118],{"class":101},[91,19983,19984,19987,19989,19991],{"class":93,"line":121},[91,19985,19986],{"class":1172},"  name",[91,19988,1208],{"class":566},[91,19990,1357],{"class":108},[91,19992,118],{"class":101},[91,19994,19995],{"class":93,"line":134},[91,19996,137],{"class":101},[91,19998,19999],{"class":93,"line":228},[91,20000,1450],{"emptyLinePlaceholder":846},[91,20002,20003,20005,20008,20010],{"class":93,"line":250},[91,20004,19944],{"class":566},[91,20006,20007],{"class":97}," UserPreview",[91,20009,1366],{"class":566},[91,20011,102],{"class":101},[91,20013,20014,20016,20018,20020],{"class":93,"line":260},[91,20015,19975],{"class":1172},[91,20017,1208],{"class":566},[91,20019,1357],{"class":108},[91,20021,118],{"class":101},[91,20023,20024,20026,20028,20030],{"class":93,"line":274},[91,20025,19986],{"class":1172},[91,20027,1208],{"class":566},[91,20029,1357],{"class":108},[91,20031,118],{"class":101},[91,20033,20034],{"class":93,"line":284},[91,20035,20036],{"class":101},"};\n",[16,20038,20039,20041,20042,20044,20045,20048],{},[31,20040,19947],{},"와 객체 형태의 ",[31,20043,19944],{},"은 비슷하게 사용된다. TypeScript는 값이 선언 이름과 일치하는지보다 필요한 프로퍼티를 갖는지 확인하는 구조적 타입 시스템이라서, 위 두 방식은 ",[31,20046,20047],{},"User"," 형태를 설명하는 데 큰 차이가 없다.",[82,20050,20052],{"className":1154,"code":20051,"language":1156,"meta":87,"style":87},"interface Session {\n  userId: string;\n}\n\ninterface Session {\n  expiresAt: string;\n}\n\nconst session: Session = {\n  userId: \"user-1\",\n  expiresAt: \"2026-07-13T12:00:00Z\",\n};\n",[31,20053,20054,20063,20074,20078,20082,20090,20101,20105,20109,20124,20134,20144],{"__ignoreMap":87},[91,20055,20056,20058,20061],{"class":93,"line":94},[91,20057,19947],{"class":566},[91,20059,20060],{"class":97}," Session",[91,20062,102],{"class":101},[91,20064,20065,20068,20070,20072],{"class":93,"line":105},[91,20066,20067],{"class":1172},"  userId",[91,20069,1208],{"class":566},[91,20071,1357],{"class":108},[91,20073,118],{"class":101},[91,20075,20076],{"class":93,"line":121},[91,20077,137],{"class":101},[91,20079,20080],{"class":93,"line":134},[91,20081,1450],{"emptyLinePlaceholder":846},[91,20083,20084,20086,20088],{"class":93,"line":228},[91,20085,19947],{"class":566},[91,20087,20060],{"class":97},[91,20089,102],{"class":101},[91,20091,20092,20095,20097,20099],{"class":93,"line":250},[91,20093,20094],{"class":1172},"  expiresAt",[91,20096,1208],{"class":566},[91,20098,1357],{"class":108},[91,20100,118],{"class":101},[91,20102,20103],{"class":93,"line":260},[91,20104,137],{"class":101},[91,20106,20107],{"class":93,"line":274},[91,20108,1450],{"emptyLinePlaceholder":846},[91,20110,20111,20113,20116,20118,20120,20122],{"class":93,"line":284},[91,20112,1968],{"class":566},[91,20114,20115],{"class":108}," session",[91,20117,1208],{"class":566},[91,20119,20060],{"class":97},[91,20121,1366],{"class":566},[91,20123,102],{"class":101},[91,20125,20126,20129,20132],{"class":93,"line":299},[91,20127,20128],{"class":101},"  userId: ",[91,20130,20131],{"class":169},"\"user-1\"",[91,20133,7560],{"class":101},[91,20135,20136,20139,20142],{"class":93,"line":319},[91,20137,20138],{"class":101},"  expiresAt: ",[91,20140,20141],{"class":169},"\"2026-07-13T12:00:00Z\"",[91,20143,7560],{"class":101},[91,20145,20146],{"class":93,"line":334},[91,20147,20036],{"class":101},[16,20149,20150,20151,20153,20154,20157],{},"대신 ",[31,20152,19947],{},"는 객체 구조를 선언하고 ",[31,20155,20156],{},"extends","로 확장한다. 같은 이름의 interface를 다시 선언하면 프로퍼티가 병합되는 declaration merging도 가능하다.",[82,20159,20161],{"className":1154,"code":20160,"language":1156,"meta":87,"style":87},"type RequestState = \"idle\" | \"loading\" | \"success\" | \"error\";\n\ntype ApiResult\u003CT> =\n  | { ok: true; data: T }\n  | { ok: false; message: string };\n\ntype ClickHandler = (event: MouseEvent) => void;\n",[31,20162,20163,20192,20196,20214,20241,20265,20269],{"__ignoreMap":87},[91,20164,20165,20167,20170,20172,20175,20177,20180,20182,20185,20187,20190],{"class":93,"line":94},[91,20166,19944],{"class":566},[91,20168,20169],{"class":97}," RequestState",[91,20171,1366],{"class":566},[91,20173,20174],{"class":169}," \"idle\"",[91,20176,1360],{"class":566},[91,20178,20179],{"class":169}," \"loading\"",[91,20181,1360],{"class":566},[91,20183,20184],{"class":169}," \"success\"",[91,20186,1360],{"class":566},[91,20188,20189],{"class":169}," \"error\"",[91,20191,118],{"class":101},[91,20193,20194],{"class":93,"line":105},[91,20195,1450],{"emptyLinePlaceholder":846},[91,20197,20198,20200,20203,20205,20208,20211],{"class":93,"line":121},[91,20199,19944],{"class":566},[91,20201,20202],{"class":97}," ApiResult",[91,20204,156],{"class":101},[91,20206,20207],{"class":97},"T",[91,20209,20210],{"class":101},"> ",[91,20212,20213],{"class":566},"=\n",[91,20215,20216,20219,20221,20224,20226,20229,20232,20234,20236,20239],{"class":93,"line":134},[91,20217,20218],{"class":566},"  |",[91,20220,13969],{"class":101},[91,20222,20223],{"class":1172},"ok",[91,20225,1208],{"class":566},[91,20227,20228],{"class":108}," true",[91,20230,20231],{"class":101},"; ",[91,20233,7901],{"class":1172},[91,20235,1208],{"class":566},[91,20237,20238],{"class":97}," T",[91,20240,1445],{"class":101},[91,20242,20243,20245,20247,20249,20251,20254,20256,20258,20260,20262],{"class":93,"line":228},[91,20244,20218],{"class":566},[91,20246,13969],{"class":101},[91,20248,20223],{"class":1172},[91,20250,1208],{"class":566},[91,20252,20253],{"class":108}," false",[91,20255,20231],{"class":101},[91,20257,9808],{"class":1172},[91,20259,1208],{"class":566},[91,20261,1357],{"class":108},[91,20263,20264],{"class":101}," };\n",[91,20266,20267],{"class":93,"line":250},[91,20268,1450],{"emptyLinePlaceholder":846},[91,20270,20271,20273,20276,20278,20280,20282,20284,20287,20289,20291,20294],{"class":93,"line":260},[91,20272,19944],{"class":566},[91,20274,20275],{"class":97}," ClickHandler",[91,20277,1366],{"class":566},[91,20279,2662],{"class":101},[91,20281,9340],{"class":1172},[91,20283,1208],{"class":566},[91,20285,20286],{"class":97}," MouseEvent",[91,20288,1176],{"class":101},[91,20290,1179],{"class":566},[91,20292,20293],{"class":108}," void",[91,20295,118],{"class":101},[16,20297,20298,20299,20301],{},"반면 ",[31,20300,19944],{},"은 객체뿐 아니라 유니온, 튜플, 원시 값, 함수 시그니처에도 이름을 붙일 수 있다. 이미 만든 타입을 교차 타입으로 조합하는 것도 자연스럽다.",[16,20303,20304,20309,20310,20312,20313,20315,20316,20318],{},[4306,20305,20308],{"href":20306,"rel":20307},"https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002F2\u002Feveryday-types.html#differences-between-type-aliases-and-interfaces",[4310],"TypeScript 공식 문서","는 대부분의 경우 둘 중 하나를 고를 수 있다고 설명한다. 팀에 별도 규칙이 없다면 객체의 공개 계약에는 ",[31,20311,19947],{},"를 먼저 쓰고, 유니온·튜플·조건부 타입처럼 ",[31,20314,19944],{},"만 가능한 표현이 필요할 때 ",[31,20317,19944],{},"을 쓰는 기준이 실용적이다.",[49,20320,20322],{"id":20321},"같은-이름의-속성-유니온","같은 이름의 속성 유니온",[82,20324,20326],{"className":1154,"code":20325,"language":1156,"meta":87,"style":87},"type HasStringId = { id: string };\ntype HasNumberId = { id: number };\n\ntype ImpossibleId = HasStringId & HasNumberId;\n\u002F\u002F ImpossibleId의 id는 string과 number를 모두 만족해야 하므로 never가 된다.\n",[31,20327,20328,20347,20367,20371,20389],{"__ignoreMap":87},[91,20329,20330,20332,20335,20337,20339,20341,20343,20345],{"class":93,"line":94},[91,20331,19944],{"class":566},[91,20333,20334],{"class":97}," HasStringId",[91,20336,1366],{"class":566},[91,20338,13969],{"class":101},[91,20340,9066],{"class":1172},[91,20342,1208],{"class":566},[91,20344,1357],{"class":108},[91,20346,20264],{"class":101},[91,20348,20349,20351,20354,20356,20358,20360,20362,20365],{"class":93,"line":105},[91,20350,19944],{"class":566},[91,20352,20353],{"class":97}," HasNumberId",[91,20355,1366],{"class":566},[91,20357,13969],{"class":101},[91,20359,9066],{"class":1172},[91,20361,1208],{"class":566},[91,20363,20364],{"class":108}," number",[91,20366,20264],{"class":101},[91,20368,20369],{"class":93,"line":121},[91,20370,1450],{"emptyLinePlaceholder":846},[91,20372,20373,20375,20378,20380,20382,20385,20387],{"class":93,"line":134},[91,20374,19944],{"class":566},[91,20376,20377],{"class":97}," ImpossibleId",[91,20379,1366],{"class":566},[91,20381,20334],{"class":97},[91,20383,20384],{"class":566}," &",[91,20386,20353],{"class":97},[91,20388,118],{"class":101},[91,20390,20391],{"class":93,"line":228},[91,20392,20393],{"class":1343},"\u002F\u002F ImpossibleId의 id는 string과 number를 모두 만족해야 하므로 never가 된다.\n",[16,20395,20396,20399,20400,20403],{},[31,20397,20398],{},"interface extends","는 부모와 자식에 같은 이름의 프로퍼티가 있을 때 호환되는 타입을 요구한다. 반대로 교차 타입(",[31,20401,20402],{},"&",")도 “둘 중 하나”가 아니라 두 조건을 모두 만족해야 한다.",[16,20405,20406,20407,20409,20410,20413,20414,20419],{},"이름이 같지만 의미가 다른 값을 하나로 합쳐야 한다면 타입 선언으로 해결하려 하기보다, 프로퍼티 이름이나 데이터 모델을 먼저 나누는 편이 낫다. ",[31,20408,19944],{},"의 교차 타입이 충돌을 자동으로 유니온으로 바꿔 준다고 생각하면 실제 사용 시 ",[31,20411,20412],{},"never","를 만나기 쉽다. 이 차이는 ",[4306,20415,20418],{"href":20416,"rel":20417},"https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002F2\u002Fobjects.html",[4310],"객체 타입 공식 문서","에서도 interface 확장과 intersection의 충돌 처리 차이로 설명한다.",[49,20421,20423],{"id":20422},"enum은-타입-선언이면서-런타임-객체다","enum은 타입 선언이면서 런타임 객체다",[82,20425,20427],{"className":1154,"code":20426,"language":1156,"meta":87,"style":87},"enum LogLevel {\n  Error = \"ERROR\",\n  Warn = \"WARN\",\n  Info = \"INFO\",\n}\n\nfunction writeLog(level: LogLevel) {\n  console.log(level);\n}\n",[31,20428,20429,20438,20450,20462,20474,20478,20482,20500,20509],{"__ignoreMap":87},[91,20430,20431,20433,20436],{"class":93,"line":94},[91,20432,19951],{"class":566},[91,20434,20435],{"class":97}," LogLevel",[91,20437,102],{"class":101},[91,20439,20440,20443,20445,20448],{"class":93,"line":105},[91,20441,20442],{"class":108},"  Error",[91,20444,1366],{"class":566},[91,20446,20447],{"class":169}," \"ERROR\"",[91,20449,7560],{"class":101},[91,20451,20452,20455,20457,20460],{"class":93,"line":121},[91,20453,20454],{"class":108},"  Warn",[91,20456,1366],{"class":566},[91,20458,20459],{"class":169}," \"WARN\"",[91,20461,7560],{"class":101},[91,20463,20464,20467,20469,20472],{"class":93,"line":134},[91,20465,20466],{"class":108},"  Info",[91,20468,1366],{"class":566},[91,20470,20471],{"class":169}," \"INFO\"",[91,20473,7560],{"class":101},[91,20475,20476],{"class":93,"line":228},[91,20477,137],{"class":101},[91,20479,20480],{"class":93,"line":250},[91,20481,1450],{"emptyLinePlaceholder":846},[91,20483,20484,20486,20489,20491,20494,20496,20498],{"class":93,"line":260},[91,20485,7471],{"class":566},[91,20487,20488],{"class":97}," writeLog",[91,20490,795],{"class":101},[91,20492,20493],{"class":1172},"level",[91,20495,1208],{"class":566},[91,20497,20435],{"class":97},[91,20499,3866],{"class":101},[91,20501,20502,20504,20506],{"class":93,"line":274},[91,20503,2271],{"class":101},[91,20505,1225],{"class":97},[91,20507,20508],{"class":101},"(level);\n",[91,20510,20511],{"class":93,"line":284},[91,20512,137],{"class":101},[16,20514,20515,20517],{},[31,20516,19951],{},"은 TypeScript에만 있는 문법이다. 일반 enum은 컴파일 후에도 객체로 남으므로, 값 목록을 런타임에 전달하거나 멤버 이름으로 접근해야 할 때는 편리하다.",[16,20519,20520],{},[19,20521],{"alt":20522,"src":20523},"사용하지 않은 enum 객체가 Rollup 결과에 남는 화면","\u002Fblog\u002Fimg\u002Ftypescript-type-interface-enum-choice\u002Fenum-tree-shaking-rollup.png",[16,20525,20526],{},"실무에서는 enum 사용을 지양해야 한다는 목소리가 꾸준히 나오고 있다.",[16,20528,20529],{},"가장 큰 이유는 트리 쉐이킹(Tree-shaking) 문제다. TypeScript 코드가 JavaScript로 컴파일될 때, enum은 JavaScript에 없는 문법이므로 이를 흉내 내기 위해 즉시 실행 함수(IIFE) 형태로 변환된다.",[16,20531,20532,20533,20535],{},"여기서 Rollup이나 Webpack 같은 번들러는 IIFE 내부에서 어떤 객체가 조작되는지 정적 분석으로 판단하기 어렵다. 즉, 해당 enum을 프로젝트 어딘가에서 ",[31,20534,2499],{},"만 해두고 실제로는 쓰지 않더라도 번들러는 이를 사용하는 코드로 간주해 번들에 포함할 수 있다. 결과적으로 불필요한 코드 양이 증가한다.",[16,20537,20538,20539,20544],{},"숫자 enum은 값에서 이름으로 찾는 역방향 매핑까지 생성한다. 문자열 enum은 역방향 매핑을 만들지 않지만, 둘 다 일반 enum이라면 JavaScript 런타임에 객체가 존재한다. ",[4306,20540,20543],{"href":20541,"rel":20542},"https:\u002F\u002Fwww.typescriptlang.org\u002Fdocs\u002Fhandbook\u002Fenums.html#enums-at-runtime",[4310],"TypeScript enum 문서","를 보면 enum이 함수에 전달할 수 있는 실제 객체라는 점도 확인할 수 있다.",[16,20546,20547],{},"이 특성은 장점이자 비용이다. 단순히 고정된 문자열이나 숫자 집합이 필요할 뿐인데 enum 객체와 접근 코드를 꼭 만들 필요가 있는지는 별도로 판단해야 한다. 특히 번들 크기를 줄여야 하는 라이브러리나 여러 작은 모듈에서는 실제 생성된 JavaScript를 한 번 확인하는 게 좋다.",[49,20549,20551],{"id":20550},"enum을-대체하는-확실한-방법","Enum을 대체하는 확실한 방법",[16,20553,20554],{},"이러한 enum의 단점을 피하면서 동일한 효과를 내기 위해 두 가지 대안을 사용할 수 있다.",[757,20556,20558],{"id":20557},"const-enum-사용","const enum 사용",[16,20560,20561,20562,20564],{},"enum 선언 앞에 ",[31,20563,1968],{},"를 붙이면 TypeScript는 값을 변환할 때 즉시 실행 함수를 만들지 않고 해당 상수가 사용된 곳에 값을 직접 치환한다.",[82,20566,20568],{"className":1154,"code":20567,"language":1156,"meta":87,"style":87},"const enum Direction {\n  Up,\n  Down,\n}\n\nlet dir = Direction.Up;\n\n\u002F\u002F 컴파일된 JS\nlet dir = 0 \u002F* Direction.Up *\u002F;\n",[31,20569,20570,20582,20589,20596,20600,20604,20616,20620,20625],{"__ignoreMap":87},[91,20571,20572,20574,20577,20580],{"class":93,"line":94},[91,20573,1968],{"class":566},[91,20575,20576],{"class":566}," enum",[91,20578,20579],{"class":97}," Direction",[91,20581,102],{"class":101},[91,20583,20584,20587],{"class":93,"line":105},[91,20585,20586],{"class":108},"  Up",[91,20588,7560],{"class":101},[91,20590,20591,20594],{"class":93,"line":121},[91,20592,20593],{"class":108},"  Down",[91,20595,7560],{"class":101},[91,20597,20598],{"class":93,"line":134},[91,20599,137],{"class":101},[91,20601,20602],{"class":93,"line":228},[91,20603,1450],{"emptyLinePlaceholder":846},[91,20605,20606,20608,20611,20613],{"class":93,"line":250},[91,20607,1349],{"class":566},[91,20609,20610],{"class":101}," dir ",[91,20612,166],{"class":566},[91,20614,20615],{"class":101}," Direction.Up;\n",[91,20617,20618],{"class":93,"line":260},[91,20619,1450],{"emptyLinePlaceholder":846},[91,20621,20622],{"class":93,"line":274},[91,20623,20624],{"class":1343},"\u002F\u002F 컴파일된 JS\n",[91,20626,20627,20629,20631,20633,20635,20638],{"class":93,"line":284},[91,20628,1349],{"class":566},[91,20630,20610],{"class":101},[91,20632,166],{"class":566},[91,20634,11817],{"class":108},[91,20636,20637],{"class":1343}," \u002F* Direction.Up *\u002F",[91,20639,118],{"class":101},[16,20641,20642,20643,20646],{},"코드가 가벼워지고 트리 쉐이킹이 가능해진다. 다만 런타임에 객체가 존재하지 않기 때문에 ",[31,20644,20645],{},"Object.keys()"," 같은 메서드로 순회할 수 없으며, 양방향 매핑도 사용할 수 없다는 제약이 있다.",[757,20648,20650],{"id":20649},"as-const와-객체-리터럴의-조합","as const와 객체 리터럴의 조합",[16,20652,20653,20654,20657],{},"실무에서 enum을 대체하는 방법으로 객체 리터럴과 ",[31,20655,20656],{},"as const","를 조합할 수 있다.",[16,20659,20660,20661,20663,20664,64,20667,20670,20671,20673,20674,20677],{},"보통 객체를 ",[31,20662,1968],{},"로 선언해도 내부 속성값은 변경 가능한 ",[31,20665,20666],{},"string",[31,20668,20669],{},"number"," 타입으로 추론된다. 하지만 객체 뒤에 ",[31,20672,20656],{},"를 붙이면 객체의 모든 속성이 ",[31,20675,20676],{},"readonly","가 되며, 값 자체가 리터럴 타입으로 고정된다.",[82,20679,20681],{"className":1154,"code":20680,"language":1156,"meta":87,"style":87},"const HTTPRequestErrorCodeObject = {\n  UNAUTHORIZED: 401,\n  FORBIDDEN: 403,\n  NOT_FOUND: 404,\n  INTERNAL_SERVER_ERROR: 500,\n} as const;\n\nexport type HTTPRequestErrorCode =\n  typeof HTTPRequestErrorCodeObject[keyof typeof HTTPRequestErrorCodeObject];\n",[31,20682,20683,20694,20704,20714,20724,20733,20744,20748,20760],{"__ignoreMap":87},[91,20684,20685,20687,20690,20692],{"class":93,"line":94},[91,20686,1968],{"class":566},[91,20688,20689],{"class":108}," HTTPRequestErrorCodeObject",[91,20691,1366],{"class":566},[91,20693,102],{"class":101},[91,20695,20696,20699,20702],{"class":93,"line":105},[91,20697,20698],{"class":101},"  UNAUTHORIZED: ",[91,20700,20701],{"class":108},"401",[91,20703,7560],{"class":101},[91,20705,20706,20709,20712],{"class":93,"line":121},[91,20707,20708],{"class":101},"  FORBIDDEN: ",[91,20710,20711],{"class":108},"403",[91,20713,7560],{"class":101},[91,20715,20716,20719,20722],{"class":93,"line":134},[91,20717,20718],{"class":101},"  NOT_FOUND: ",[91,20720,20721],{"class":108},"404",[91,20723,7560],{"class":101},[91,20725,20726,20729,20731],{"class":93,"line":228},[91,20727,20728],{"class":101},"  INTERNAL_SERVER_ERROR: ",[91,20730,8075],{"class":108},[91,20732,7560],{"class":101},[91,20734,20735,20737,20740,20742],{"class":93,"line":250},[91,20736,1434],{"class":101},[91,20738,20739],{"class":566},"as",[91,20741,16463],{"class":566},[91,20743,118],{"class":101},[91,20745,20746],{"class":93,"line":260},[91,20747,1450],{"emptyLinePlaceholder":846},[91,20749,20750,20752,20754,20757],{"class":93,"line":274},[91,20751,2574],{"class":566},[91,20753,18504],{"class":566},[91,20755,20756],{"class":97}," HTTPRequestErrorCode",[91,20758,20759],{"class":566}," =\n",[91,20761,20762,20765,20768,20771],{"class":93,"line":284},[91,20763,20764],{"class":566},"  typeof",[91,20766,20767],{"class":101}," HTTPRequestErrorCodeObject[keyof ",[91,20769,20770],{"class":566},"typeof",[91,20772,20773],{"class":101}," HTTPRequestErrorCodeObject];\n",[16,20775,20776,20777,20780,20781,20784],{},"이렇게 하면 ",[31,20778,20779],{},"HTTPRequestErrorCode","는 ",[31,20782,20783],{},"401 | 403 | 404 | 500","이라는 리터럴 유니온 타입으로 좁혀진다.",[16,20786,20787,20788,5733,20790,20793],{},"이 방식은 enum 변환을 위한 IIFE를 생성하지 않으며, 필요하다면 ",[31,20789,20645],{},[31,20791,20792],{},"Object.values()","를 사용해 런타임에 상수 목록을 순회할 수도 있다. 타입과 값 저장소를 분리해서 사용해야 한다는 약간의 번거로움이 있지만, IDE의 인텔리센스 지원과 번들 최적화를 함께 고려할 수 있다.",[49,20795,20797],{"id":20796},"선택-기준","선택 기준",[16,20799,20800],{},"정답은 하나가 아니지만, 다음 기준으로 시작하면 팀 규칙을 만들기 쉽다.",[812,20802,20803,20812],{},[3001,20804,20805],{},[3004,20806,20807,20809],{},[3007,20808,9219],{},[3007,20810,20811],{},"우선 선택",[3017,20813,20814,20823,20832,20841,20853],{},[3004,20815,20816,20819],{},[3022,20817,20818],{},"확장 가능한 객체 계약, 선언 병합",[3022,20820,20821],{},[31,20822,19947],{},[3004,20824,20825,20828],{},[3022,20826,20827],{},"유니온·튜플·함수·조건부 타입",[3022,20829,20830],{},[31,20831,19944],{},[3004,20833,20834,20837],{},[3022,20835,20836],{},"런타임 객체와 enum 전용 동작이 꼭 필요함",[3022,20838,20839],{},[31,20840,19951],{},[3004,20842,20843,20846],{},[3022,20844,20845],{},"런타임 값 목록과 리터럴 유니온이 모두 필요함",[3022,20847,20848,20850,20851],{},[31,20849,20656],{}," 객체 + ",[31,20852,20770],{},[3004,20854,20855,20858],{},[3022,20856,20857],{},"앱 내부의 작은 상수를 인라인하고 싶음",[3022,20859,20860,20861],{},"제약을 확인한 뒤 ",[31,20862,20863],{},"const enum",[829,20865,20866],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":87,"searchDepth":105,"depth":105,"links":20868},[20869,20870,20871,20872,20876],{"id":19955,"depth":105,"text":19956},{"id":20321,"depth":105,"text":20322},{"id":20422,"depth":105,"text":20423},{"id":20550,"depth":105,"text":20551,"children":20873},[20874,20875],{"id":20557,"depth":121,"text":20558},{"id":20649,"depth":121,"text":20650},{"id":20796,"depth":105,"text":20797},"2026-03-12","객체 계약에는 interface, 조합과 유니온에는 type을 쓰고, 런타임 상수는 enum과 as const 중 요구사항에 맞게 고르는 기준을 정리한다.","typescript-type-interface-enum-choice",{},"\u002Fblog\u002Ftypescript-type-interface-enum-choice",{"title":19936,"description":20878},{"loc":20881},"blog\u002Ftypescript-type-interface-enum-choice",[2864,19944,19947,19951,20886],"as-const","PJZVMhCeeqDb3e3r5gopws9ONOsjO5BSBKGq_atVF-M",{"id":20889,"title":20890,"body":20891,"created":18076,"description":21610,"extension":843,"filename":21611,"meta":21612,"navigation":846,"path":21613,"seo":21614,"sitemap":21615,"stem":21616,"subject":15282,"tags":21617,"updated":6033,"volume":853,"__hash__":21621},"blog\u002Fblog\u002Fvite-monolith-build-split.md","Vite에서 하나의 코드베이스를 서비스별 앱으로 나누기: 엔트리와 라우터 분리",{"type":8,"value":20892,"toc":21604},[20893,20896,20900,20907,20927,20931,20942,21038,21045,21128,21135,21139,21159,21162,21337,21349,21352,21536,21542,21546,21549,21595,21598,21601],[16,20894,20895],{},"기존 프로젝트에서는 하나의 저장소로 여러 앱을 빌드하고 있었다. 하나의 결과물로 관리하다가 앱별로 빌드를 분리하게 되었다.",[49,20897,20899],{"id":20898},"문제는-라우터가-모두를-참조하는-구조였다","문제는 라우터가 모두를 참조하는 구조였다",[16,20901,20902,20903,20906],{},"기존에는 ",[31,20904,20905],{},"main.ts"," 하나에서 공통 앱과 전체 라우터를 등록했다. 특정 서비스에서 접근하지 않는 화면이라도 전체 라우트 배열에 포함되어 있었고, 그 라우트가 참조하는 컴포넌트와 의존성도 번들 그래프에 남았다.",[16,20908,20909,20910,20912,20913,20915,20916,5321,20921,20926],{},"Vite는 기본적으로 프로젝트 루트의 ",[31,20911,17698],{},"을 빌드 진입점으로 사용하고, HTML의 모듈 스크립트도 모듈 그래프의 일부로 처리한다. 따라서 ",[31,20914,17698],{},"이 가리키는 시작 파일과 그 파일이 가져오는 라우터를 서비스별로 좁히는 것이 먼저였다. ",[4306,20917,20920],{"href":20918,"rel":20919},"https:\u002F\u002Fvite.dev\u002Fguide\u002F",[4310],"Vite의 HTML 진입점 설명",[4306,20922,20925],{"href":20923,"rel":20924},"https:\u002F\u002Fvite.dev\u002Fguide\u002Fbuild",[4310],"프로덕션 빌드 문서","를 기준으로 보면, 별도의 JavaScript 입력을 직접 만들기보다 HTML이 가리키는 모듈을 바꾸는 방법을 선택했다.",[49,20928,20930],{"id":20929},"서비스별-엔트리에서-전용-라우터만-등록하기","서비스별 엔트리에서 전용 라우터만 등록하기",[16,20932,20933,20934,20937,20938,20941],{},"각 서비스에 ",[31,20935,20936],{},"main.{appType}.ts","를 만들고, 공통 초기화는 유지하되 해당 서비스의 라우터 생성 함수만 가져오도록 분리했다. 아래의 ",[31,20939,20940],{},"service-a","는 실제 서비스 이름을 대신한 예시다.",[82,20943,20945],{"className":1154,"code":20944,"language":1156,"meta":87,"style":87},"\u002F\u002F src\u002Fmain.service-a.ts\nimport app from \".\u002Fapp\";\nimport { createServiceARouter } from \".\u002Frouter\u002Fservice-a-entry\";\nimport \"@\u002Fassets\u002Fscss\u002Fmain.scss\";\nimport \"@\u002Fassets\u002Fstyle.css\";\n\nconst router = createServiceARouter();\n\napp.use(router).mount(\"#app\");\n",[31,20946,20947,20952,20966,20980,20989,20998,21002,21015,21019],{"__ignoreMap":87},[91,20948,20949],{"class":93,"line":94},[91,20950,20951],{"class":1343},"\u002F\u002F src\u002Fmain.service-a.ts\n",[91,20953,20954,20956,20959,20961,20964],{"class":93,"line":105},[91,20955,2499],{"class":566},[91,20957,20958],{"class":101}," app ",[91,20960,2505],{"class":566},[91,20962,20963],{"class":169}," \".\u002Fapp\"",[91,20965,118],{"class":101},[91,20967,20968,20970,20973,20975,20978],{"class":93,"line":121},[91,20969,2499],{"class":566},[91,20971,20972],{"class":101}," { createServiceARouter } ",[91,20974,2505],{"class":566},[91,20976,20977],{"class":169}," \".\u002Frouter\u002Fservice-a-entry\"",[91,20979,118],{"class":101},[91,20981,20982,20984,20987],{"class":93,"line":134},[91,20983,2499],{"class":566},[91,20985,20986],{"class":169}," \"@\u002Fassets\u002Fscss\u002Fmain.scss\"",[91,20988,118],{"class":101},[91,20990,20991,20993,20996],{"class":93,"line":228},[91,20992,2499],{"class":566},[91,20994,20995],{"class":169}," \"@\u002Fassets\u002Fstyle.css\"",[91,20997,118],{"class":101},[91,20999,21000],{"class":93,"line":250},[91,21001,1450],{"emptyLinePlaceholder":846},[91,21003,21004,21006,21008,21010,21013],{"class":93,"line":260},[91,21005,1968],{"class":566},[91,21007,14977],{"class":108},[91,21009,1366],{"class":566},[91,21011,21012],{"class":97}," createServiceARouter",[91,21014,2030],{"class":101},[91,21016,21017],{"class":93,"line":274},[91,21018,1450],{"emptyLinePlaceholder":846},[91,21020,21021,21024,21026,21029,21031,21033,21036],{"class":93,"line":284},[91,21022,21023],{"class":101},"app.",[91,21025,14877],{"class":97},[91,21027,21028],{"class":101},"(router).",[91,21030,14936],{"class":97},[91,21032,795],{"class":101},[91,21034,21035],{"class":169},"\"#app\"",[91,21037,1594],{"class":101},[16,21039,21040,21041,21044],{},"이 파일은 공통 스타일과 앱 인스턴스는 그대로 사용하지만, ",[31,21042,21043],{},"createServiceARouter","만 호출한다. 전용 라우터도 다른 서비스의 라우트 배열을 가져오지 않게 구성한다.",[82,21046,21048],{"className":1154,"code":21047,"language":1156,"meta":87,"style":87},"\u002F\u002F src\u002Frouter\u002Fservice-a-entry.ts\nimport { createRouter, createWebHistory } from \"vue-router\";\nimport { serviceARoutes } from \".\u002Fservice-a-routes\";\n\nexport function createServiceARouter() {\n  return createRouter({\n    history: createWebHistory(),\n    routes: serviceARoutes,\n  });\n}\n",[31,21049,21050,21055,21069,21083,21087,21097,21105,21115,21120,21124],{"__ignoreMap":87},[91,21051,21052],{"class":93,"line":94},[91,21053,21054],{"class":1343},"\u002F\u002F src\u002Frouter\u002Fservice-a-entry.ts\n",[91,21056,21057,21059,21062,21064,21067],{"class":93,"line":105},[91,21058,2499],{"class":566},[91,21060,21061],{"class":101}," { createRouter, createWebHistory } ",[91,21063,2505],{"class":566},[91,21065,21066],{"class":169}," \"vue-router\"",[91,21068,118],{"class":101},[91,21070,21071,21073,21076,21078,21081],{"class":93,"line":121},[91,21072,2499],{"class":566},[91,21074,21075],{"class":101}," { serviceARoutes } ",[91,21077,2505],{"class":566},[91,21079,21080],{"class":169}," \".\u002Fservice-a-routes\"",[91,21082,118],{"class":101},[91,21084,21085],{"class":93,"line":134},[91,21086,1450],{"emptyLinePlaceholder":846},[91,21088,21089,21091,21093,21095],{"class":93,"line":228},[91,21090,2574],{"class":566},[91,21092,2001],{"class":566},[91,21094,21012],{"class":97},[91,21096,2007],{"class":101},[91,21098,21099,21101,21103],{"class":93,"line":250},[91,21100,2695],{"class":566},[91,21102,14982],{"class":97},[91,21104,7549],{"class":101},[91,21106,21107,21110,21113],{"class":93,"line":260},[91,21108,21109],{"class":101},"    history: ",[91,21111,21112],{"class":97},"createWebHistory",[91,21114,8275],{"class":101},[91,21116,21117],{"class":93,"line":274},[91,21118,21119],{"class":101},"    routes: serviceARoutes,\n",[91,21121,21122],{"class":93,"line":284},[91,21123,7575],{"class":101},[91,21125,21126],{"class":93,"line":299},[91,21127,137],{"class":101},[16,21129,21130,21131,21134],{},"중요한 건 ",[31,21132,21133],{},"service-a-routes","에서 필요한 화면만 정적으로 참조하도록 만들어야 다른 서비스의 라우터와 그 하위 컴포넌트가 이 엔트리의 의존성 그래프에 들어오지 않는다. 트리 쉐이킹은 사용하지 않는 코드를 자동으로 전부 제거하는 것보다, 번들러가 필요한 것만 참조하도록 할 때 효과가 난다.",[49,21136,21138],{"id":21137},"indexhtml의-모듈-스크립트를-빌드-대상에-맞춰-바꾸기","index.html의 모듈 스크립트를 빌드 대상에 맞춰 바꾸기",[16,21140,21141,21142,21144,21145,21148,21149,21152,21153,21158],{},"Vite에서 ",[31,21143,17698],{},"은 단순한 정적 파일이 아니라 변환 대상이다. ",[31,21146,21147],{},"transformIndexHtml"," 훅은 HTML 진입점의 내용을 바꿀 수 있고, ",[31,21150,21151],{},"order: \"pre\"","를 주면 기본 HTML 변환 전에 적용할 수 있다. 자세한 반환 형식과 실행 순서는 ",[4306,21154,21157],{"href":21155,"rel":21156},"https:\u002F\u002Fvite.dev\u002Fguide\u002Fapi-plugin.html#transformindexhtml",[4310],"Vite Plugin API의 transformIndexHtml 문서","에서 확인할 수 있다.",[16,21160,21161],{},"처음에는 빌드가 끝난 뒤 HTML을 복사하고 수정하는 훅도 사용했다. 하지만 결과물이 만들어진 뒤에 다시 파일을 조작하면, 출력 경로와 다른 HTML 플러그인의 처리 순서를 함께 관리해야 했다. 최종적으로는 HTML을 처리하는 단계에서 모듈 스크립트 경로만 바꾸는 방식으로 결정했다.",[82,21163,21165],{"className":1154,"code":21164,"language":1156,"meta":87,"style":87},"\u002F\u002F build\u002Fentry-switcher.ts\nimport type { Plugin } from \"vite\";\n\nexport function entrySwitcherPlugin(appType?: string): Plugin {\n  return {\n    name: \"entry-switcher\",\n    transformIndexHtml: {\n      order: \"pre\",\n      handler(html) {\n        if (!appType) {\n          return html;\n        }\n\n        return html.replace(\n          \"\u002Fsrc\u002Fmain.ts\",\n          `\u002Fsrc\u002Fmain.${appType}.ts`,\n        );\n      },\n    },\n  };\n}\n",[31,21166,21167,21172,21188,21192,21219,21225,21234,21239,21249,21260,21271,21278,21282,21286,21296,21303,21315,21320,21325,21329,21333],{"__ignoreMap":87},[91,21168,21169],{"class":93,"line":94},[91,21170,21171],{"class":1343},"\u002F\u002F build\u002Fentry-switcher.ts\n",[91,21173,21174,21176,21178,21181,21183,21186],{"class":93,"line":105},[91,21175,2499],{"class":566},[91,21177,18504],{"class":566},[91,21179,21180],{"class":101}," { Plugin } ",[91,21182,2505],{"class":566},[91,21184,21185],{"class":169}," \"vite\"",[91,21187,118],{"class":101},[91,21189,21190],{"class":93,"line":121},[91,21191,1450],{"emptyLinePlaceholder":846},[91,21193,21194,21196,21198,21201,21203,21206,21208,21210,21212,21214,21217],{"class":93,"line":134},[91,21195,2574],{"class":566},[91,21197,2001],{"class":566},[91,21199,21200],{"class":97}," entrySwitcherPlugin",[91,21202,795],{"class":101},[91,21204,21205],{"class":1172},"appType",[91,21207,16037],{"class":566},[91,21209,1357],{"class":108},[91,21211,4618],{"class":101},[91,21213,1208],{"class":566},[91,21215,21216],{"class":97}," Plugin",[91,21218,102],{"class":101},[91,21220,21221,21223],{"class":93,"line":228},[91,21222,2695],{"class":566},[91,21224,102],{"class":101},[91,21226,21227,21229,21232],{"class":93,"line":250},[91,21228,8003],{"class":101},[91,21230,21231],{"class":169},"\"entry-switcher\"",[91,21233,7560],{"class":101},[91,21235,21236],{"class":93,"line":260},[91,21237,21238],{"class":101},"    transformIndexHtml: {\n",[91,21240,21241,21244,21247],{"class":93,"line":274},[91,21242,21243],{"class":101},"      order: ",[91,21245,21246],{"class":169},"\"pre\"",[91,21248,7560],{"class":101},[91,21250,21251,21254,21256,21258],{"class":93,"line":284},[91,21252,21253],{"class":97},"      handler",[91,21255,795],{"class":101},[91,21257,149],{"class":1172},[91,21259,3866],{"class":101},[91,21261,21262,21264,21266,21268],{"class":93,"line":299},[91,21263,10068],{"class":566},[91,21265,2662],{"class":101},[91,21267,2665],{"class":566},[91,21269,21270],{"class":101},"appType) {\n",[91,21272,21273,21276],{"class":93,"line":319},[91,21274,21275],{"class":566},"          return",[91,21277,14355],{"class":101},[91,21279,21280],{"class":93,"line":334},[91,21281,3307],{"class":101},[91,21283,21284],{"class":93,"line":355},[91,21285,1450],{"emptyLinePlaceholder":846},[91,21287,21288,21290,21292,21294],{"class":93,"line":364},[91,21289,11866],{"class":566},[91,21291,14292],{"class":101},[91,21293,14010],{"class":97},[91,21295,9266],{"class":101},[91,21297,21298,21301],{"class":93,"line":378},[91,21299,21300],{"class":169},"          \"\u002Fsrc\u002Fmain.ts\"",[91,21302,7560],{"class":101},[91,21304,21305,21308,21310,21313],{"class":93,"line":387},[91,21306,21307],{"class":169},"          `\u002Fsrc\u002Fmain.${",[91,21309,21205],{"class":101},[91,21311,21312],{"class":169},"}.ts`",[91,21314,7560],{"class":101},[91,21316,21317],{"class":93,"line":402},[91,21318,21319],{"class":101},"        );\n",[91,21321,21322],{"class":93,"line":422},[91,21323,21324],{"class":101},"      },\n",[91,21326,21327],{"class":93,"line":438},[91,21328,3477],{"class":101},[91,21330,21331],{"class":93,"line":458},[91,21332,8083],{"class":101},[91,21334,21335],{"class":93,"line":467},[91,21336,137],{"class":101},[16,21338,21339,21340,15747,21342,3752,21345,21348],{},"이 플러그인은 ",[31,21341,17698],{},[31,21343,21344],{},"\u002Fsrc\u002Fmain.ts",[31,21346,21347],{},"\u002Fsrc\u002Fmain.service-a.ts","처럼 바꾼다. 목적이 되는 파일만 잘 바뀌도록 구성해야 한다. 엉뚱한 문자열이 함께 바뀌지 않도록 치환 대상을 명확하게 지정한다.",[16,21350,21351],{},"플러그인은 HTML 내용을 읽거나 치환하는 다른 플러그인보다 앞에 둔다. 빌드 대상은 설정에서 받아 출력 폴더도 나눴다.",[82,21353,21355],{"className":1154,"code":21354,"language":1156,"meta":87,"style":87},"\u002F\u002F vite.config.ts\nimport { defineConfig } from \"vite\";\nimport { entrySwitcherPlugin } from \".\u002Fbuild\u002Fentry-switcher\";\n\nexport default defineConfig(({ mode }) => {\n  const appType = mode.startsWith(\"service-\")\n    ? mode.replace(\"service-\", \"\")\n    : undefined;\n\n  return {\n    plugins: [\n      entrySwitcherPlugin(appType),\n      \u002F\u002F HTML을 후속 처리하는 플러그인\n    ],\n    build: {\n      outDir: appType ? `dist\u002F${appType}` : \"dist\",\n    },\n  };\n});\n",[31,21356,21357,21362,21375,21389,21393,21415,21437,21456,21465,21469,21475,21480,21488,21493,21498,21503,21524,21528,21532],{"__ignoreMap":87},[91,21358,21359],{"class":93,"line":94},[91,21360,21361],{"class":1343},"\u002F\u002F vite.config.ts\n",[91,21363,21364,21366,21369,21371,21373],{"class":93,"line":105},[91,21365,2499],{"class":566},[91,21367,21368],{"class":101}," { defineConfig } ",[91,21370,2505],{"class":566},[91,21372,21185],{"class":169},[91,21374,118],{"class":101},[91,21376,21377,21379,21382,21384,21387],{"class":93,"line":121},[91,21378,2499],{"class":566},[91,21380,21381],{"class":101}," { entrySwitcherPlugin } ",[91,21383,2505],{"class":566},[91,21385,21386],{"class":169}," \".\u002Fbuild\u002Fentry-switcher\"",[91,21388,118],{"class":101},[91,21390,21391],{"class":93,"line":134},[91,21392,1450],{"emptyLinePlaceholder":846},[91,21394,21395,21397,21399,21402,21405,21408,21411,21413],{"class":93,"line":228},[91,21396,2574],{"class":566},[91,21398,12107],{"class":566},[91,21400,21401],{"class":97}," defineConfig",[91,21403,21404],{"class":101},"(({ ",[91,21406,21407],{"class":1172},"mode",[91,21409,21410],{"class":101}," }) ",[91,21412,1179],{"class":566},[91,21414,102],{"class":101},[91,21416,21417,21419,21422,21424,21427,21430,21432,21435],{"class":93,"line":250},[91,21418,2641],{"class":566},[91,21420,21421],{"class":108}," appType",[91,21423,1366],{"class":566},[91,21425,21426],{"class":101}," mode.",[91,21428,21429],{"class":97},"startsWith",[91,21431,795],{"class":101},[91,21433,21434],{"class":169},"\"service-\"",[91,21436,3487],{"class":101},[91,21438,21439,21442,21444,21446,21448,21450,21452,21454],{"class":93,"line":260},[91,21440,21441],{"class":566},"    ?",[91,21443,21426],{"class":101},[91,21445,14010],{"class":97},[91,21447,795],{"class":101},[91,21449,21434],{"class":169},[91,21451,64],{"class":101},[91,21453,13747],{"class":169},[91,21455,3487],{"class":101},[91,21457,21458,21461,21463],{"class":93,"line":274},[91,21459,21460],{"class":566},"    :",[91,21462,11771],{"class":108},[91,21464,118],{"class":101},[91,21466,21467],{"class":93,"line":284},[91,21468,1450],{"emptyLinePlaceholder":846},[91,21470,21471,21473],{"class":93,"line":299},[91,21472,2695],{"class":566},[91,21474,102],{"class":101},[91,21476,21477],{"class":93,"line":319},[91,21478,21479],{"class":101},"    plugins: [\n",[91,21481,21482,21485],{"class":93,"line":334},[91,21483,21484],{"class":97},"      entrySwitcherPlugin",[91,21486,21487],{"class":101},"(appType),\n",[91,21489,21490],{"class":93,"line":355},[91,21491,21492],{"class":1343},"      \u002F\u002F HTML을 후속 처리하는 플러그인\n",[91,21494,21495],{"class":93,"line":364},[91,21496,21497],{"class":101},"    ],\n",[91,21499,21500],{"class":93,"line":378},[91,21501,21502],{"class":101},"    build: {\n",[91,21504,21505,21508,21510,21513,21515,21517,21519,21522],{"class":93,"line":387},[91,21506,21507],{"class":101},"      outDir: appType ",[91,21509,8372],{"class":566},[91,21511,21512],{"class":169}," `dist\u002F${",[91,21514,21205],{"class":101},[91,21516,1241],{"class":169},[91,21518,2131],{"class":566},[91,21520,21521],{"class":169}," \"dist\"",[91,21523,7560],{"class":101},[91,21525,21526],{"class":93,"line":402},[91,21527,3477],{"class":101},[91,21529,21530],{"class":93,"line":422},[91,21531,8083],{"class":101},[91,21533,21534],{"class":93,"line":438},[91,21535,1303],{"class":101},[16,21537,21538,21539,21541],{},"이 방식은 기본 ",[31,21540,17698],{}," 진입점은 유지한다. 앱별로 여러 HTML 파일을 운영하는 편이 더 명확한 경우에는 Vite의 멀티 페이지 애플리케이션 구성을 선택할 수도 있다. 다만 같은 HTML 템플릿을 공유하고 진입 모듈만 달라지는 상황에서는 변환 훅 하나로 관리할 수 있었다.",[49,21543,21545],{"id":21544},"측정값은-서비스별-배포물-크기로-비교했다","측정값은 서비스별 배포물 크기로 비교했다",[16,21547,21548],{},"분리 전후의 효과는 브라우저 성능 지표가 아니라, 생성해 배포한 압축 아티팩트의 크기로 확인했다. 즉 요청 수, 초기 렌더링 시간, 실제 전송 크기가 같은 비율로 줄었다는 뜻은 아니다.",[812,21550,21551,21561],{},[3001,21552,21553],{},[3004,21554,21555,21558],{},[3007,21556,21557],{},"빌드 대상",[3007,21559,21560],{"align":19870},"아티팩트 크기",[3017,21562,21563,21571,21579,21587],{},[3004,21564,21565,21568],{},[3022,21566,21567],{},"분리 전 통합 빌드",[3022,21569,21570],{"align":19870},"29.6 MB",[3004,21572,21573,21576],{},[3022,21574,21575],{},"서비스 A",[3022,21577,21578],{"align":19870},"29.0 MB",[3004,21580,21581,21584],{},[3022,21582,21583],{},"서비스 B",[3022,21585,21586],{"align":19870},"23.9 MB",[3004,21588,21589,21592],{},[3022,21590,21591],{},"서비스 C",[3022,21593,21594],{"align":19870},"23.6 MB",[16,21596,21597],{},"모든 기능을 포함하는 서비스 A는 감소 폭이 작았고, 제한된 화면만 사용하는 서비스 B와 C는 더 작은 결과물이 나왔다. 크기가 생각보다 크게 줄어들지는 않았다.",[16,21599,21600],{},"크기만 비교하면 공통 의존성이 중복되어 결국 전체로는 크기가 늘어난다. 그래서 서비스별 배포가 필요한지, 공통 청크를 공유할 수 있는지, 각 서비스의 실제 초기 로딩에서 어떤 청크가 내려오는지도 함께 확인해야 한다.",[829,21602,21603],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":87,"searchDepth":105,"depth":105,"links":21605},[21606,21607,21608,21609],{"id":20898,"depth":105,"text":20899},{"id":20929,"depth":105,"text":20930},{"id":21137,"depth":105,"text":21138},{"id":21544,"depth":105,"text":21545},"여러 앱이 한 Vite 프로젝트에 섞여 있을 때, 빌드 대상별 엔트리와 라우터를 분리해 필요한 모듈만 번들에 포함하는 방법을 정리한다.","vite-monolith-build-split",{},"\u002Fblog\u002Fvite-monolith-build-split",{"title":20890,"description":21610},{"loc":21613},"blog\u002Fvite-monolith-build-split",[16324,21618,21619,21620,15415],"vite","build","tree-shaking","bTfRUZgLGJ3PCzagWtbqu77OEIlvjvspMQyVmAV5P7E",{"id":21623,"title":21624,"body":21625,"created":24437,"description":24438,"extension":843,"filename":24439,"meta":24440,"navigation":846,"path":24441,"seo":24442,"sitemap":24443,"stem":24444,"subject":2862,"tags":24445,"updated":24437,"volume":4441,"__hash__":24446},"blog\u002Fblog\u002Fvite-vue-and-github-pages.md","Vite vue + Github Pages 페이지 구축",{"type":8,"value":21626,"toc":24414},[21627,21630,21638,21642,21648,21651,21654,21666,21669,21675,21690,21721,21724,21806,21816,21819,21829,21839,21845,21931,21936,21948,21950,21960,21963,21969,21972,22125,22131,22135,22148,22162,22165,22169,22180,22183,22188,22318,22325,22416,22425,22428,22438,22441,22447,22500,22507,22565,22571,22718,22721,22724,22734,22737,22743,22840,22852,22856,22863,22886,22926,22933,22973,22976,23041,23047,23051,23054,23064,23070,23073,23083,23089,23093,23096,23287,23294,23317,23368,23374,23377,23387,23396,23463,23469,23502,23513,23516,23524,23527,23546,23549,23555,23775,23782,24074,24077,24219,24222,24224,24228,24234,24241,24316,24330,24332,24341,24347,24353,24405,24411],[16,21628,21629],{},"기존 vue-cli 를 사용한 vue 프로젝트로 github pages 를 구축했는데, 대세에 따라 vite 로 변경하기로 했다. 말이 변경이지 새로 만들었다.",[16,21631,21632,21633,21637],{},"기존 vue-cli 로 했던 것에서 vite 로 변경하며 필요한 부분만 작성하였고, github actions 등의 기능은 ",[4306,21634,10845],{"href":21635,"rel":21636},"https:\u002F\u002Flhs-source.github.io\u002Fposts\u002Fmaking-blog-githubio-vue3-1#github-actions-%EB%A1%9C-github-pages-%EB%B0%B0%ED%8F%AC",[4310]," 를 참고하면 된다.",[49,21639,21641],{"id":21640},"vite-프로젝트-생성","vite 프로젝트 생성",[82,21643,21646],{"className":21644,"code":21645,"language":1099},[1097],"npm create vite@latest\n",[31,21647,21645],{"__ignoreMap":87},[16,21649,21650],{},"우선 빈 vite 프로젝트를 만들어준다. 우리는 vue3 와 typescript 를 활용해서 개발할 것이다.",[49,21652,21653],{"id":21653},"vite-ssg",[1722,21655,21656],{},[16,21657,21658,21659,21662],{},"Vite SSG",[21660,21661],"br",{},[4306,21663,21664],{"href":21664,"rel":21665},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-ssg",[4310],[16,21667,21668],{},"vite 로 static site generating 하는 라이브러리이다. 우리가 만드는 포스트 마다 정적 사이트로 만들어준다",[82,21670,21673],{"className":21671,"code":21672,"language":1099},[1097],"npm i -D vite-ssg vue-router @vueuse\u002Fhead\n",[31,21674,21672],{"__ignoreMap":87},[16,21676,21677,21678,21681,21682,21685,21686,21689],{},"위 커맨드로 ",[31,21679,21680],{},"vue-router","  와 ",[31,21683,21684],{},"@vueuse\u002Fhead","  도 함께 설치해주라고 나와 있는데, 나는 ",[31,21687,21688],{},"@unhead\u002Fvue"," 를 사용했다.",[82,21691,21693],{"className":8477,"code":21692,"language":8479,"meta":87,"style":87},"\u002F\u002F package.json\n\"scripts\": {\n  \"build:ssg\": \"vite-ssg build\"\n}\n",[31,21694,21695,21700,21707,21717],{"__ignoreMap":87},[91,21696,21697],{"class":93,"line":94},[91,21698,21699],{"class":1343},"\u002F\u002F package.json\n",[91,21701,21702,21705],{"class":93,"line":105},[91,21703,21704],{"class":169},"\"scripts\"",[91,21706,8789],{"class":101},[91,21708,21709,21712,21714],{"class":93,"line":121},[91,21710,21711],{"class":108},"  \"build:ssg\"",[91,21713,112],{"class":101},[91,21715,21716],{"class":169},"\"vite-ssg build\"\n",[91,21718,21719],{"class":93,"line":134},[91,21720,137],{"class":101},[16,21722,21723],{},"빌드 커맨드를 대체 혹은 추가해준다.",[82,21725,21727],{"className":1154,"code":21726,"filename":20905,"language":1156,"meta":87,"style":87},"export const createApp = ViteSSG(\n    \u002F\u002F 루트 컴포넌트\n    App,\n    { routes },\n    ({ app, router, routes, isClient, initialState }) => {\n        \u002F\u002F 플러그인 세팅\n    },\n)\n",[31,21728,21729,21744,21749,21754,21759,21793,21798,21802],{"__ignoreMap":87},[91,21730,21731,21733,21735,21737,21739,21742],{"class":93,"line":94},[91,21732,2574],{"class":566},[91,21734,16463],{"class":566},[91,21736,14867],{"class":108},[91,21738,1366],{"class":566},[91,21740,21741],{"class":97}," ViteSSG",[91,21743,9266],{"class":101},[91,21745,21746],{"class":93,"line":105},[91,21747,21748],{"class":1343},"    \u002F\u002F 루트 컴포넌트\n",[91,21750,21751],{"class":93,"line":121},[91,21752,21753],{"class":101},"    App,\n",[91,21755,21756],{"class":93,"line":134},[91,21757,21758],{"class":101},"    { routes },\n",[91,21760,21761,21764,21767,21769,21772,21774,21777,21779,21782,21784,21787,21789,21791],{"class":93,"line":228},[91,21762,21763],{"class":101},"    ({ ",[91,21765,21766],{"class":1172},"app",[91,21768,64],{"class":101},[91,21770,21771],{"class":1172},"router",[91,21773,64],{"class":101},[91,21775,21776],{"class":1172},"routes",[91,21778,64],{"class":101},[91,21780,21781],{"class":1172},"isClient",[91,21783,64],{"class":101},[91,21785,21786],{"class":1172},"initialState",[91,21788,21410],{"class":101},[91,21790,1179],{"class":566},[91,21792,102],{"class":101},[91,21794,21795],{"class":93,"line":250},[91,21796,21797],{"class":1343},"        \u002F\u002F 플러그인 세팅\n",[91,21799,21800],{"class":93,"line":260},[91,21801,3477],{"class":101},[91,21803,21804],{"class":93,"line":274},[91,21805,3487],{"class":101},[16,21807,21808,21811,21812,21815],{},[31,21809,21810],{},"createApp","  을 ",[31,21813,21814],{},"ViteSSG","  로 변경한다. 이러면 빌드했을 때, SPA 앱이 아니라, MPA로 빌드가 된다. 각 라우트마다 html 페이지가 따로 생성된다.",[49,21817,21818],{"id":21818},"vite-plugin-pages-sitemap",[1722,21820,21821],{},[16,21822,21818,21823,21825],{},[21660,21824],{},[4306,21826,21827],{"href":21827,"rel":21828},"https:\u002F\u002Fgithub.com\u002Fjbaubree\u002Fvite-plugin-pages-sitemap",[4310],[16,21830,21831,21832,21834,21835,21838],{},"사이트맵 자동 생성기이다. ",[31,21833,21653],{},"  와 ",[31,21836,21837],{},"vite-plugin-pages","  를 같이 지원한다.",[82,21840,21843],{"className":21841,"code":21842,"language":1099},[1097],"npm install -D vite-plugin-pages-sitemap\n",[31,21844,21842],{"__ignoreMap":87},[82,21846,21848],{"className":1154,"code":21847,"language":1156,"meta":87,"style":87},"import Pages from 'vite-plugin-pages'\nimport generateSitemap from 'vite-plugin-pages-sitemap'\nexport default {\n  plugins: [\n    \u002F\u002F ...\n    Pages({\n      onRoutesGenerated: routes => (generateSitemap({ routes })),\n    }),\n  ],\n}\n\n",[31,21849,21850,21862,21874,21882,21887,21892,21899,21918,21922,21927],{"__ignoreMap":87},[91,21851,21852,21854,21857,21859],{"class":93,"line":94},[91,21853,2499],{"class":566},[91,21855,21856],{"class":101}," Pages ",[91,21858,2505],{"class":566},[91,21860,21861],{"class":169}," 'vite-plugin-pages'\n",[91,21863,21864,21866,21869,21871],{"class":93,"line":105},[91,21865,2499],{"class":566},[91,21867,21868],{"class":101}," generateSitemap ",[91,21870,2505],{"class":566},[91,21872,21873],{"class":169}," 'vite-plugin-pages-sitemap'\n",[91,21875,21876,21878,21880],{"class":93,"line":121},[91,21877,2574],{"class":566},[91,21879,12107],{"class":566},[91,21881,102],{"class":101},[91,21883,21884],{"class":93,"line":134},[91,21885,21886],{"class":101},"  plugins: [\n",[91,21888,21889],{"class":93,"line":228},[91,21890,21891],{"class":1343},"    \u002F\u002F ...\n",[91,21893,21894,21897],{"class":93,"line":250},[91,21895,21896],{"class":97},"    Pages",[91,21898,7549],{"class":101},[91,21900,21901,21904,21906,21908,21910,21912,21915],{"class":93,"line":260},[91,21902,21903],{"class":97},"      onRoutesGenerated",[91,21905,112],{"class":101},[91,21907,21776],{"class":1172},[91,21909,11859],{"class":566},[91,21911,2662],{"class":101},[91,21913,21914],{"class":97},"generateSitemap",[91,21916,21917],{"class":101},"({ routes })),\n",[91,21919,21920],{"class":93,"line":274},[91,21921,10100],{"class":101},[91,21923,21924],{"class":93,"line":284},[91,21925,21926],{"class":101},"  ],\n",[91,21928,21929],{"class":93,"line":299},[91,21930,137],{"class":101},[16,21932,21933],{},[19,21934],{"alt":87,"src":21935},"\u002Fblog\u002Fimg\u002Fvite-vue-and-github-pages\u002Fgit_blog.png",[16,21937,21938,21940,21941,21943,21944,21947],{},[31,21939,11295],{},"  를 하면 바로 사이트맵과 로보츠 파일이 만들어진다. 기본 사용법대로 사이트맵 파일을 만들면 주소가 ",[31,21942,14430],{},"  로 되는데, ",[31,21945,21946],{},"hostname","  을 변경해서 내 사이트 주소를 설정해주어야 한다.",[49,21949,21837],{"id":21837},[1722,21951,21952],{},[16,21953,21837,21954,21956],{},[21660,21955],{},[4306,21957,21958],{"href":21958,"rel":21959},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-plugin-pages",[4310],[16,21961,21962],{},"파일 시스템 기반의 라우트를 생성한다.",[82,21964,21967],{"className":21965,"code":21966,"language":1099},[1097],"npm install -D vite-plugin-pages\n\n",[31,21968,21966],{"__ignoreMap":87},[16,21970,21971],{},"이녀석도 vue-router 가 필요한데, 위에서 설치했기 때문에 생략한다.",[82,21973,21975],{"className":1154,"code":21974,"language":1156,"meta":87,"style":87},"\u002F\u002F vite.config.ts\nimport Pages from 'vite-plugin-pages';\nexport default defineConfig({\n  plugins: [\n    Pages({\n      extensions: ['vue', 'md'],\n      pagesDir: 'src\u002Fpages',\n      \u002F**\n       * 생성된 라우트에 추가 로직을 작성한다.\n       * @param route 생성된 라우트\n       * @returns \n       *\u002F\n      extendRoute(route) {\n        console.log('route', route);\n        return route;\n      }\n    }),\n  ],\n})\n\n",[31,21976,21977,21981,21994,22004,22008,22014,22029,22039,22044,22049,22062,22071,22076,22087,22102,22109,22113,22117,22121],{"__ignoreMap":87},[91,21978,21979],{"class":93,"line":94},[91,21980,21361],{"class":1343},[91,21982,21983,21985,21987,21989,21992],{"class":93,"line":105},[91,21984,2499],{"class":566},[91,21986,21856],{"class":101},[91,21988,2505],{"class":566},[91,21990,21991],{"class":169}," 'vite-plugin-pages'",[91,21993,118],{"class":101},[91,21995,21996,21998,22000,22002],{"class":93,"line":121},[91,21997,2574],{"class":566},[91,21999,12107],{"class":566},[91,22001,21401],{"class":97},[91,22003,7549],{"class":101},[91,22005,22006],{"class":93,"line":134},[91,22007,21886],{"class":101},[91,22009,22010,22012],{"class":93,"line":228},[91,22011,21896],{"class":97},[91,22013,7549],{"class":101},[91,22015,22016,22019,22022,22024,22027],{"class":93,"line":250},[91,22017,22018],{"class":101},"      extensions: [",[91,22020,22021],{"class":169},"'vue'",[91,22023,64],{"class":101},[91,22025,22026],{"class":169},"'md'",[91,22028,16394],{"class":101},[91,22030,22031,22034,22037],{"class":93,"line":260},[91,22032,22033],{"class":101},"      pagesDir: ",[91,22035,22036],{"class":169},"'src\u002Fpages'",[91,22038,7560],{"class":101},[91,22040,22041],{"class":93,"line":274},[91,22042,22043],{"class":1343},"      \u002F**\n",[91,22045,22046],{"class":93,"line":284},[91,22047,22048],{"class":1343},"       * 생성된 라우트에 추가 로직을 작성한다.\n",[91,22050,22051,22054,22057,22059],{"class":93,"line":299},[91,22052,22053],{"class":1343},"       * ",[91,22055,22056],{"class":566},"@param",[91,22058,12259],{"class":101},[91,22060,22061],{"class":1343}," 생성된 라우트\n",[91,22063,22064,22066,22069],{"class":93,"line":319},[91,22065,22053],{"class":1343},[91,22067,22068],{"class":566},"@returns",[91,22070,8723],{"class":1343},[91,22072,22073],{"class":93,"line":334},[91,22074,22075],{"class":1343},"       *\u002F\n",[91,22077,22078,22081,22083,22085],{"class":93,"line":355},[91,22079,22080],{"class":97},"      extendRoute",[91,22082,795],{"class":101},[91,22084,14102],{"class":1172},[91,22086,3866],{"class":101},[91,22088,22089,22092,22094,22096,22099],{"class":93,"line":364},[91,22090,22091],{"class":101},"        console.",[91,22093,1225],{"class":97},[91,22095,795],{"class":101},[91,22097,22098],{"class":169},"'route'",[91,22100,22101],{"class":101},", route);\n",[91,22103,22104,22106],{"class":93,"line":378},[91,22105,11866],{"class":566},[91,22107,22108],{"class":101}," route;\n",[91,22110,22111],{"class":93,"line":387},[91,22112,10095],{"class":101},[91,22114,22115],{"class":93,"line":402},[91,22116,10100],{"class":101},[91,22118,22119],{"class":93,"line":422},[91,22120,21926],{"class":101},[91,22122,22123],{"class":93,"line":438},[91,22124,9444],{"class":101},[16,22126,22127,22130],{},[31,22128,22129],{},"Pages","  플러그인을 설정파일에 추가하자. md 파일이 있는 경로와, 확장자를 추가해주면 된다.",[757,22132,22134],{"id":22133},"파일-추가하기","파일 추가하기",[16,22136,22137,22139,22140,22143,22144,22147],{},[31,22138,22129],{},"  플러그인에 등록해둔 경로에 ",[31,22141,22142],{},".vue","  혹은 ",[31,22145,22146],{},".md","  파일을 만들면 자동으로 라우트로 인식한다. 기본적으로 만들어야 할 파일이 두가지 있다.",[24,22149,22150,22156],{},[27,22151,22152,22155],{},[792,22153,22154],{},"[...all].vue →"," 접속한 페이지에 해당하는 라우트가 없을 때 띄워줄 404 페이지",[27,22157,22158,22161],{},[792,22159,22160],{},"index.vue"," → 루트 페이지",[16,22163,22164],{},"나머지는 파일을 만드는대로 라우트에 등록된다.",[757,22166,22168],{"id":22167},"nested-routes","nested routes",[1722,22170,22171],{},[16,22172,22173,22174,22176],{},"Nested Routes",[21660,22175],{},[4306,22177,22178],{"href":22178,"rel":22179},"https:\u002F\u002Fgithub.com\u002Fhannoeru\u002Fvite-plugin-pages#nested-routes",[4310],[16,22181,22182],{},"메인 페이지와 포스트 페이지의 디자인을 완전히 분리하고 nested routes 로 관리할 것이다.",[16,22184,22185],{},[19,22186],{"alt":87,"src":22187},"\u002Fblog\u002Fimg\u002Fvite-vue-and-github-pages\u002Fgit_blog2.png",[82,22189,22191],{"className":1154,"code":22190,"language":1156,"meta":87,"style":87},"route {\n  path: '\u002Fposts',\n  component: '\u002Fsrc\u002Fpages\u002Fposts.vue',\n  customBlock: undefined,\n  children: [\n    {\n      name: 'posts-post2',\n      path: 'post2',\n      component: '\u002Fsrc\u002Fpages\u002Fposts\u002Fpost2.md',\n      customBlock: undefined,\n      props: true\n    },\n    \u002F\u002F ....\n  ],\n  props: true\n}\n\n",[31,22192,22193,22198,22210,22222,22234,22241,22246,22256,22266,22276,22285,22292,22296,22301,22305,22314],{"__ignoreMap":87},[91,22194,22195],{"class":93,"line":94},[91,22196,22197],{"class":101},"route {\n",[91,22199,22200,22203,22205,22208],{"class":93,"line":105},[91,22201,22202],{"class":97},"  path",[91,22204,112],{"class":101},[91,22206,22207],{"class":169},"'\u002Fposts'",[91,22209,7560],{"class":101},[91,22211,22212,22215,22217,22220],{"class":93,"line":121},[91,22213,22214],{"class":97},"  component",[91,22216,112],{"class":101},[91,22218,22219],{"class":169},"'\u002Fsrc\u002Fpages\u002Fposts.vue'",[91,22221,7560],{"class":101},[91,22223,22224,22227,22229,22232],{"class":93,"line":134},[91,22225,22226],{"class":97},"  customBlock",[91,22228,112],{"class":101},[91,22230,22231],{"class":108},"undefined",[91,22233,7560],{"class":101},[91,22235,22236,22239],{"class":93,"line":228},[91,22237,22238],{"class":97},"  children",[91,22240,10596],{"class":101},[91,22242,22243],{"class":93,"line":250},[91,22244,22245],{"class":101},"    {\n",[91,22247,22248,22251,22254],{"class":93,"line":260},[91,22249,22250],{"class":101},"      name: ",[91,22252,22253],{"class":169},"'posts-post2'",[91,22255,7560],{"class":101},[91,22257,22258,22261,22264],{"class":93,"line":274},[91,22259,22260],{"class":101},"      path: ",[91,22262,22263],{"class":169},"'post2'",[91,22265,7560],{"class":101},[91,22267,22268,22271,22274],{"class":93,"line":284},[91,22269,22270],{"class":101},"      component: ",[91,22272,22273],{"class":169},"'\u002Fsrc\u002Fpages\u002Fposts\u002Fpost2.md'",[91,22275,7560],{"class":101},[91,22277,22278,22281,22283],{"class":93,"line":299},[91,22279,22280],{"class":101},"      customBlock: ",[91,22282,22231],{"class":108},[91,22284,7560],{"class":101},[91,22286,22287,22290],{"class":93,"line":319},[91,22288,22289],{"class":101},"      props: ",[91,22291,11269],{"class":108},[91,22293,22294],{"class":93,"line":334},[91,22295,3477],{"class":101},[91,22297,22298],{"class":93,"line":355},[91,22299,22300],{"class":1343},"    \u002F\u002F ....\n",[91,22302,22303],{"class":93,"line":364},[91,22304,21926],{"class":101},[91,22306,22307,22310,22312],{"class":93,"line":378},[91,22308,22309],{"class":97},"  props",[91,22311,112],{"class":101},[91,22313,11269],{"class":108},[91,22315,22316],{"class":93,"line":387},[91,22317,137],{"class":101},[16,22319,22320,22321,22324],{},"\u002Fpages 폴더 아레, ",[31,22322,22323],{},"posts","  로 폴더와 vue 파일을 하나씩 만든다. 그럼 자동으로 nested routes 로 인식한다.",[82,22326,22328],{"className":1934,"code":22327,"language":1936,"meta":87,"style":87},"\u003Cscript setup>\u003C\u002Fscript>\n\u003Ctemplate>\n  \u003Cdiv class=\"post-index-wrapper\">\n    \u003Crouter-view>\u003C\u002Frouter-view>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cstyle>\n\u003C\u002Fstyle>\n\n",[31,22329,22330,22344,22352,22367,22380,22388,22396,22400,22408],{"__ignoreMap":87},[91,22331,22332,22334,22336,22338,22340,22342],{"class":93,"line":94},[91,22333,156],{"class":101},[91,22335,1945],{"class":159},[91,22337,1948],{"class":97},[91,22339,12566],{"class":101},[91,22341,1945],{"class":159},[91,22343,173],{"class":101},[91,22345,22346,22348,22350],{"class":93,"line":105},[91,22347,156],{"class":101},[91,22349,2118],{"class":159},[91,22351,173],{"class":101},[91,22353,22354,22356,22358,22360,22362,22365],{"class":93,"line":121},[91,22355,2125],{"class":101},[91,22357,160],{"class":159},[91,22359,163],{"class":97},[91,22361,166],{"class":101},[91,22363,22364],{"class":169},"\"post-index-wrapper\"",[91,22366,173],{"class":101},[91,22368,22369,22371,22374,22376,22378],{"class":93,"line":134},[91,22370,178],{"class":101},[91,22372,22373],{"class":159},"router-view",[91,22375,12566],{"class":101},[91,22377,22373],{"class":159},[91,22379,173],{"class":101},[91,22381,22382,22384,22386],{"class":93,"line":228},[91,22383,15729],{"class":101},[91,22385,160],{"class":159},[91,22387,173],{"class":101},[91,22389,22390,22392,22394],{"class":93,"line":250},[91,22391,493],{"class":101},[91,22393,2118],{"class":159},[91,22395,173],{"class":101},[91,22397,22398],{"class":93,"line":260},[91,22399,1450],{"emptyLinePlaceholder":846},[91,22401,22402,22404,22406],{"class":93,"line":274},[91,22403,156],{"class":101},[91,22405,829],{"class":159},[91,22407,173],{"class":101},[91,22409,22410,22412,22414],{"class":93,"line":284},[91,22411,493],{"class":101},[91,22413,829],{"class":159},[91,22415,173],{"class":101},[16,22417,22418,22421,22422,22424],{},[31,22419,22420],{},"posts.vue","  파일에는 ",[31,22423,22373],{},"  를 사용하면 끝!",[49,22426,22427],{"id":22427},"vite-plugin-vue-layouts",[1722,22429,22430],{},[16,22431,22427,22432,22434],{},[21660,22433],{},[4306,22435,22436],{"href":22436,"rel":22437},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-plugin-vue-layouts",[4310],[16,22439,22440],{},"vite-plugin-pages 와 세트이다. main 에서 createApp 을 할 때, 라우트를 인식시키기 위함이다. 무조건 필요한지는 잘 모르겠다. 더 알아봐야 함.",[82,22442,22445],{"className":22443,"code":22444,"language":1099},[1097],"npm install -D vite-plugin-vue-layouts\n",[31,22446,22444],{"__ignoreMap":87},[82,22448,22450],{"className":1154,"code":22449,"language":1156,"meta":87,"style":87},"\u002F\u002F vite.config.ts\nimport Layouts from 'vite-plugin-vue-layouts';\nexport default defineConfig({\n  plugins: [\n    Layouts(),\n  ]\n})\n",[31,22451,22452,22456,22470,22480,22484,22491,22496],{"__ignoreMap":87},[91,22453,22454],{"class":93,"line":94},[91,22455,21361],{"class":1343},[91,22457,22458,22460,22463,22465,22468],{"class":93,"line":105},[91,22459,2499],{"class":566},[91,22461,22462],{"class":101}," Layouts ",[91,22464,2505],{"class":566},[91,22466,22467],{"class":169}," 'vite-plugin-vue-layouts'",[91,22469,118],{"class":101},[91,22471,22472,22474,22476,22478],{"class":93,"line":121},[91,22473,2574],{"class":566},[91,22475,12107],{"class":566},[91,22477,21401],{"class":97},[91,22479,7549],{"class":101},[91,22481,22482],{"class":93,"line":134},[91,22483,21886],{"class":101},[91,22485,22486,22489],{"class":93,"line":228},[91,22487,22488],{"class":97},"    Layouts",[91,22490,8275],{"class":101},[91,22492,22493],{"class":93,"line":250},[91,22494,22495],{"class":101},"  ]\n",[91,22497,22498],{"class":93,"line":260},[91,22499,9444],{"class":101},[16,22501,22502,22503,22506],{},"vite 설정에 ",[31,22504,22505],{},"Layouts","  추가하기",[82,22508,22510],{"className":8477,"code":22509,"language":8479,"meta":87,"style":87},"\u002F\u002F tsconfig.json\n\"compileOptions\": {\n    \"types\": [\n      \"vite\u002Fclient\", \n      \"vite-plugin-pages\u002Fclient\", \n      \"vite-plugin-vue-layouts\u002Fclient\", \n      \"node\"\n    ],\n}\n\n",[31,22511,22512,22517,22524,22531,22538,22545,22552,22557,22561],{"__ignoreMap":87},[91,22513,22514],{"class":93,"line":94},[91,22515,22516],{"class":1343},"\u002F\u002F tsconfig.json\n",[91,22518,22519,22522],{"class":93,"line":105},[91,22520,22521],{"class":169},"\"compileOptions\"",[91,22523,8789],{"class":101},[91,22525,22526,22529],{"class":93,"line":121},[91,22527,22528],{"class":108},"    \"types\"",[91,22530,10596],{"class":101},[91,22532,22533,22536],{"class":93,"line":134},[91,22534,22535],{"class":169},"      \"vite\u002Fclient\"",[91,22537,10624],{"class":101},[91,22539,22540,22543],{"class":93,"line":228},[91,22541,22542],{"class":169},"      \"vite-plugin-pages\u002Fclient\"",[91,22544,10624],{"class":101},[91,22546,22547,22550],{"class":93,"line":250},[91,22548,22549],{"class":169},"      \"vite-plugin-vue-layouts\u002Fclient\"",[91,22551,10624],{"class":101},[91,22553,22554],{"class":93,"line":260},[91,22555,22556],{"class":169},"      \"node\"\n",[91,22558,22559],{"class":93,"line":274},[91,22560,21497],{"class":101},[91,22562,22563],{"class":93,"line":284},[91,22564,137],{"class":101},[16,22566,22567,22570],{},[31,22568,22569],{},"virtual","  import 를 인식하기 위해서 types 항목을 추가한다.",[82,22572,22574],{"className":1154,"code":22573,"language":1156,"meta":87,"style":87},"\u002F\u002F main.ts\n\u002F\u002F virtual:generated-layouts\n\u002F\u002F   tsconfig.json-compilerOptions-types\n\u002F\u002F   \"vite-plugin-vue-layouts\u002Fclient\"\nimport { setupLayouts } from 'virtual:generated-layouts'\n\u002F\u002F virtual:generated-pages\n\u002F\u002F   tsconfig.json-compilerOptions-types\n\u002F\u002F   \"vite-plugin-pages\u002Fclient\"\nimport generatedRoutes from 'virtual:generated-pages'\n\nconst routes = setupLayouts(generatedRoutes)\nexport const createApp = ViteSSG(\n    \u002F\u002F 루트 컴포넌트\n    App,\n    { routes },\n    ({ app, router, routes, isClient, initialState }) => {\n        \u002F\u002F 플러그인 세팅\n    },\n)\n",[31,22575,22576,22580,22585,22590,22595,22607,22612,22616,22621,22633,22637,22651,22665,22669,22673,22678,22706,22710,22714],{"__ignoreMap":87},[91,22577,22578],{"class":93,"line":94},[91,22579,14780],{"class":1343},[91,22581,22582],{"class":93,"line":105},[91,22583,22584],{"class":1343},"\u002F\u002F virtual:generated-layouts\n",[91,22586,22587],{"class":93,"line":121},[91,22588,22589],{"class":1343},"\u002F\u002F   tsconfig.json-compilerOptions-types\n",[91,22591,22592],{"class":93,"line":134},[91,22593,22594],{"class":1343},"\u002F\u002F   \"vite-plugin-vue-layouts\u002Fclient\"\n",[91,22596,22597,22599,22602,22604],{"class":93,"line":228},[91,22598,2499],{"class":566},[91,22600,22601],{"class":101}," { setupLayouts } ",[91,22603,2505],{"class":566},[91,22605,22606],{"class":169}," 'virtual:generated-layouts'\n",[91,22608,22609],{"class":93,"line":250},[91,22610,22611],{"class":1343},"\u002F\u002F virtual:generated-pages\n",[91,22613,22614],{"class":93,"line":260},[91,22615,22589],{"class":1343},[91,22617,22618],{"class":93,"line":274},[91,22619,22620],{"class":1343},"\u002F\u002F   \"vite-plugin-pages\u002Fclient\"\n",[91,22622,22623,22625,22628,22630],{"class":93,"line":284},[91,22624,2499],{"class":566},[91,22626,22627],{"class":101}," generatedRoutes ",[91,22629,2505],{"class":566},[91,22631,22632],{"class":169}," 'virtual:generated-pages'\n",[91,22634,22635],{"class":93,"line":299},[91,22636,1450],{"emptyLinePlaceholder":846},[91,22638,22639,22641,22643,22645,22648],{"class":93,"line":319},[91,22640,1968],{"class":566},[91,22642,13075],{"class":108},[91,22644,1366],{"class":566},[91,22646,22647],{"class":97}," setupLayouts",[91,22649,22650],{"class":101},"(generatedRoutes)\n",[91,22652,22653,22655,22657,22659,22661,22663],{"class":93,"line":334},[91,22654,2574],{"class":566},[91,22656,16463],{"class":566},[91,22658,14867],{"class":108},[91,22660,1366],{"class":566},[91,22662,21741],{"class":97},[91,22664,9266],{"class":101},[91,22666,22667],{"class":93,"line":355},[91,22668,21748],{"class":1343},[91,22670,22671],{"class":93,"line":364},[91,22672,21753],{"class":101},[91,22674,22675],{"class":93,"line":378},[91,22676,22677],{"class":101},"    { routes },\n",[91,22679,22680,22682,22684,22686,22688,22690,22692,22694,22696,22698,22700,22702,22704],{"class":93,"line":387},[91,22681,21763],{"class":101},[91,22683,21766],{"class":1172},[91,22685,64],{"class":101},[91,22687,21771],{"class":1172},[91,22689,64],{"class":101},[91,22691,21776],{"class":1172},[91,22693,64],{"class":101},[91,22695,21781],{"class":1172},[91,22697,64],{"class":101},[91,22699,21786],{"class":1172},[91,22701,21410],{"class":101},[91,22703,1179],{"class":566},[91,22705,102],{"class":101},[91,22707,22708],{"class":93,"line":402},[91,22709,21797],{"class":1343},[91,22711,22712],{"class":93,"line":422},[91,22713,3477],{"class":101},[91,22715,22716],{"class":93,"line":438},[91,22717,3487],{"class":101},[16,22719,22720],{},"pages 플러그인이 셍성한 라우트를 main 에서 적용시킨다.",[49,22722,22723],{"id":22723},"vite-plugin-md",[1722,22725,22726],{},[16,22727,22723,22728,22730],{},[21660,22729],{},[4306,22731,22732],{"href":22732,"rel":22733},"https:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-plugin-md",[4310],[16,22735,22736],{},"마크다운을 뷰 컴포넌트로 만들어준다.",[82,22738,22741],{"className":22739,"code":22740,"language":1099},[1097],"npm i vite-plugin-md -D\n",[31,22742,22740],{"__ignoreMap":87},[82,22744,22746],{"className":1154,"code":22745,"language":1156,"meta":87,"style":87},"import Markdown from 'vite-plugin-md'\n\nexport default defineConfig({\n  plugins: [\n    vue({\n      include: [\u002F\\.vue$\u002F, \u002F\\.md$\u002F], \u002F\u002F 마크다운 파일도 인식하기\n    }),\n    Markdown(),\n  ],\n})\n\n",[31,22747,22748,22760,22764,22774,22778,22785,22821,22825,22832,22836],{"__ignoreMap":87},[91,22749,22750,22752,22755,22757],{"class":93,"line":94},[91,22751,2499],{"class":566},[91,22753,22754],{"class":101}," Markdown ",[91,22756,2505],{"class":566},[91,22758,22759],{"class":169}," 'vite-plugin-md'\n",[91,22761,22762],{"class":93,"line":105},[91,22763,1450],{"emptyLinePlaceholder":846},[91,22765,22766,22768,22770,22772],{"class":93,"line":121},[91,22767,2574],{"class":566},[91,22769,12107],{"class":566},[91,22771,21401],{"class":97},[91,22773,7549],{"class":101},[91,22775,22776],{"class":93,"line":134},[91,22777,21886],{"class":101},[91,22779,22780,22783],{"class":93,"line":228},[91,22781,22782],{"class":97},"    vue",[91,22784,7549],{"class":101},[91,22786,22787,22790,22792,22796,22798,22801,22803,22805,22807,22809,22811,22813,22815,22818],{"class":93,"line":250},[91,22788,22789],{"class":101},"      include: [",[91,22791,8361],{"class":169},[91,22793,22795],{"class":22794},"snhLl","\\.",[91,22797,1936],{"class":14017},[91,22799,22800],{"class":566},"$",[91,22802,8361],{"class":169},[91,22804,6373],{"class":101},[91,22806,8352],{"class":169},[91,22808,22795],{"class":22794},[91,22810,843],{"class":14017},[91,22812,22800],{"class":566},[91,22814,8361],{"class":169},[91,22816,22817],{"class":101},"], ",[91,22819,22820],{"class":1343},"\u002F\u002F 마크다운 파일도 인식하기\n",[91,22822,22823],{"class":93,"line":260},[91,22824,10100],{"class":101},[91,22826,22827,22830],{"class":93,"line":274},[91,22828,22829],{"class":97},"    Markdown",[91,22831,8275],{"class":101},[91,22833,22834],{"class":93,"line":284},[91,22835,21926],{"class":101},[91,22837,22838],{"class":93,"line":299},[91,22839,9444],{"class":101},[16,22841,22842,22843,22845,22846,22848,22849,22851],{},"기본적으로 있던 ",[31,22844,1936],{},"  플러그인에 ",[31,22847,843],{},"  파일도 인식할 수 있게 항목을 추가해주고, ",[31,22850,15046],{},"  플로그인을 추가한다.",[757,22853,22855],{"id":22854},"메타태그-추가","메타태그 추가",[16,22857,22858],{},[4306,22859,22862],{"href":22860,"rel":22861},"https:\u002F\u002Fgithub.com\u002Fmdit-vue\u002Fvite-plugin-vue-markdown#document-head-and-meta",[4310],"GitHub - mdit-vue\u002Fvite-plugin-vue-markdown: Compile Markdown to Vue component",[16,22864,22865,22866,22868,22869,22871,22872,22874,22875,22878,22879,22882,22883,22885],{},"페이지별로 메타태그를 추가하고싶은데, ",[31,22867,22146],{}," 파일로는 어떻게 해줘야 할까?\n",[31,22870,21653],{}," 와 ",[31,22873,22723],{}," 에서 이미 ",[31,22876,22877],{},"vueuse\u002Fhead"," 를 사용한다. 그래서 ",[31,22880,22881],{},"unhead\u002Fvue"," 를 사용해보려고 했지만, 충돌 문제가 있어서 ",[31,22884,22877],{}," 의 방식을 따르기로 했다.",[82,22887,22889],{"className":15447,"code":22888,"language":843,"meta":87,"style":87},"---\nmeta:\n  - name: My Cool App\n    description: cool things happen to people who use cool apps\n---\n",[31,22890,22891,22895,22901,22913,22922],{"__ignoreMap":87},[91,22892,22893],{"class":93,"line":94},[91,22894,15943],{"class":101},[91,22896,22897,22899],{"class":93,"line":105},[91,22898,13765],{"class":159},[91,22900,7265],{"class":101},[91,22902,22903,22906,22908,22910],{"class":93,"line":121},[91,22904,22905],{"class":101},"  - ",[91,22907,1238],{"class":159},[91,22909,112],{"class":101},[91,22911,22912],{"class":169},"My Cool App\n",[91,22914,22915,22917,22919],{"class":93,"line":134},[91,22916,11634],{"class":159},[91,22918,112],{"class":101},[91,22920,22921],{"class":169},"cool things happen to people who use cool apps\n",[91,22923,22924],{"class":93,"line":228},[91,22925,15943],{"class":101},[16,22927,22928,22929,22932],{},"md 파일의 최상단에 ",[31,22930,22931],{},"---"," 로 구분선을 위아래로 넣어주고, 안에 내용을 넣어준다.",[82,22934,22936],{"className":15447,"code":22935,"language":843,"meta":87,"style":87},"---\nmeta:\n  - name: description\n    content: Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\n---\n",[31,22937,22938,22942,22948,22959,22969],{"__ignoreMap":87},[91,22939,22940],{"class":93,"line":94},[91,22941,15943],{"class":101},[91,22943,22944,22946],{"class":93,"line":105},[91,22945,13765],{"class":159},[91,22947,7265],{"class":101},[91,22949,22950,22952,22954,22956],{"class":93,"line":121},[91,22951,22905],{"class":101},[91,22953,1238],{"class":159},[91,22955,112],{"class":101},[91,22957,22958],{"class":169},"description\n",[91,22960,22961,22964,22966],{"class":93,"line":134},[91,22962,22963],{"class":159},"    content",[91,22965,112],{"class":101},[91,22967,22968],{"class":169},"Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\n",[91,22970,22971],{"class":93,"line":228},[91,22972,15943],{"class":101},[16,22974,22975],{},"이런 형식도 된다.",[82,22977,22979],{"className":147,"code":22978,"language":149,"meta":87,"style":87},"\u003Ctitle>Github.io + Vue3 로 블로그 만들기\u003C\u002Ftitle>\n\u003Cmeta name=\"description\"\ncontent=\"Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\">\n\u003Cmeta property=\"og:title\" content=\"Github.io + Vue3 로 블로그 만들기\">\n",[31,22980,22981,22994,23007,23018],{"__ignoreMap":87},[91,22982,22983,22985,22987,22990,22992],{"class":93,"line":94},[91,22984,156],{"class":101},[91,22986,13972],{"class":159},[91,22988,22989],{"class":101},">Github.io + Vue3 로 블로그 만들기\u003C\u002F",[91,22991,13972],{"class":159},[91,22993,173],{"class":101},[91,22995,22996,22998,23000,23002,23004],{"class":93,"line":105},[91,22997,156],{"class":101},[91,22999,13765],{"class":159},[91,23001,13768],{"class":97},[91,23003,166],{"class":101},[91,23005,23006],{"class":169},"\"description\"\n",[91,23008,23009,23011,23013,23016],{"class":93,"line":121},[91,23010,808],{"class":97},[91,23012,166],{"class":101},[91,23014,23015],{"class":169},"\"Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\"",[91,23017,173],{"class":101},[91,23019,23020,23022,23024,23027,23029,23032,23034,23036,23039],{"class":93,"line":134},[91,23021,156],{"class":101},[91,23023,13765],{"class":159},[91,23025,23026],{"class":97}," property",[91,23028,166],{"class":101},[91,23030,23031],{"class":169},"\"og:title\"",[91,23033,13776],{"class":97},[91,23035,166],{"class":101},[91,23037,23038],{"class":169},"\"Github.io + Vue3 로 블로그 만들기\"",[91,23040,173],{"class":101},[16,23042,23043,23044,23046],{},"html 파일에 자동으로 ",[31,23045,13765],{}," 태그가 추가된다.",[49,23048,23050],{"id":23049},"markdown-it-플러그인","markdown-it 플러그인",[757,23052,23053],{"id":23053},"markdown-it-anchor",[1722,23055,23056],{},[16,23057,23053,23058,23060],{},[21660,23059],{},[4306,23061,23062],{"href":23062,"rel":23063},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-anchor",[4310],[16,23065,23066,23069],{},[31,23067,23068],{},"H","  태그에 기본적으로 anchor 를 달아서 이동할 수 있게 한다.  한글도 지원한다.",[757,23071,23072],{"id":23072},"markdown-it-table-of-contents",[1722,23074,23075],{},[16,23076,23072,23077,23079],{},[21660,23078],{},[4306,23080,23081],{"href":23081,"rel":23082},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-table-of-contents",[4310],[16,23084,23085,23088],{},[31,23086,23087],{},"[[toc]]","  를 사용하면 목차를 만들 수 있다.",[771,23090,23092],{"id":23091},"목차-요소를-따로-떼서-다른-곳에-붙이기","목차 요소를 따로 떼서 다른 곳에 붙이기",[16,23094,23095],{},"목차가 md 페이지 컴포넌트의 상단에 고정되어 있어서 원하는 곳에서 사용할 수 없다. 예를 들어, 오른쪽 부분에 고정을 시킨다던지.",[82,23097,23099],{"className":1154,"code":23098,"language":1156,"meta":87,"style":87},"onMounted(() => {\n  \u002F\u002F 목차를 markdown-body 내부에서 제거한 후, \n  \u002F\u002F 옆에 붙인다.\n  const mdBody = document.querySelector(\".markdown-body\");\n  const targetToc = document.querySelector(\".new-table-of-contents\");\n  const toc = document.querySelector(\".markdown-body .table-of-contents\");\n  const main = document.querySelector(\"main\");\n\n  if(mdBody && targetToc && toc && main) {\n    targetToc.innerHTML = toc?.innerHTML!;\n    \u002F\u002F 라우트 변경 시 `.table-of-contents` 의 innerHTML 이 한번 제거되고 undefined 로 뜨기 때문에\n    \u002F\u002F display: none 만 붙여서 숨긴다.\n    (toc as HTMLElement)?.style.setProperty(\"display\", \"none\");\n  }\n})\n",[31,23100,23101,23111,23116,23121,23141,23161,23181,23201,23205,23227,23241,23246,23251,23279,23283],{"__ignoreMap":87},[91,23102,23103,23105,23107,23109],{"class":93,"line":94},[91,23104,2085],{"class":97},[91,23106,2088],{"class":101},[91,23108,1179],{"class":566},[91,23110,102],{"class":101},[91,23112,23113],{"class":93,"line":105},[91,23114,23115],{"class":1343},"  \u002F\u002F 목차를 markdown-body 내부에서 제거한 후, \n",[91,23117,23118],{"class":93,"line":121},[91,23119,23120],{"class":1343},"  \u002F\u002F 옆에 붙인다.\n",[91,23122,23123,23125,23128,23130,23132,23134,23136,23139],{"class":93,"line":134},[91,23124,2641],{"class":566},[91,23126,23127],{"class":108}," mdBody",[91,23129,1366],{"class":566},[91,23131,5025],{"class":101},[91,23133,19508],{"class":97},[91,23135,795],{"class":101},[91,23137,23138],{"class":169},"\".markdown-body\"",[91,23140,1594],{"class":101},[91,23142,23143,23145,23148,23150,23152,23154,23156,23159],{"class":93,"line":228},[91,23144,2641],{"class":566},[91,23146,23147],{"class":108}," targetToc",[91,23149,1366],{"class":566},[91,23151,5025],{"class":101},[91,23153,19508],{"class":97},[91,23155,795],{"class":101},[91,23157,23158],{"class":169},"\".new-table-of-contents\"",[91,23160,1594],{"class":101},[91,23162,23163,23165,23168,23170,23172,23174,23176,23179],{"class":93,"line":250},[91,23164,2641],{"class":566},[91,23166,23167],{"class":108}," toc",[91,23169,1366],{"class":566},[91,23171,5025],{"class":101},[91,23173,19508],{"class":97},[91,23175,795],{"class":101},[91,23177,23178],{"class":169},"\".markdown-body .table-of-contents\"",[91,23180,1594],{"class":101},[91,23182,23183,23185,23188,23190,23192,23194,23196,23199],{"class":93,"line":260},[91,23184,2641],{"class":566},[91,23186,23187],{"class":108}," main",[91,23189,1366],{"class":566},[91,23191,5025],{"class":101},[91,23193,19508],{"class":97},[91,23195,795],{"class":101},[91,23197,23198],{"class":169},"\"main\"",[91,23200,1594],{"class":101},[91,23202,23203],{"class":93,"line":274},[91,23204,1450],{"emptyLinePlaceholder":846},[91,23206,23207,23209,23212,23214,23217,23219,23222,23224],{"class":93,"line":284},[91,23208,2439],{"class":566},[91,23210,23211],{"class":101},"(mdBody ",[91,23213,5232],{"class":566},[91,23215,23216],{"class":101}," targetToc ",[91,23218,5232],{"class":566},[91,23220,23221],{"class":101}," toc ",[91,23223,5232],{"class":566},[91,23225,23226],{"class":101}," main) {\n",[91,23228,23229,23232,23234,23237,23239],{"class":93,"line":299},[91,23230,23231],{"class":101},"    targetToc.innerHTML ",[91,23233,166],{"class":566},[91,23235,23236],{"class":101}," toc?.innerHTML",[91,23238,2665],{"class":566},[91,23240,118],{"class":101},[91,23242,23243],{"class":93,"line":319},[91,23244,23245],{"class":1343},"    \u002F\u002F 라우트 변경 시 `.table-of-contents` 의 innerHTML 이 한번 제거되고 undefined 로 뜨기 때문에\n",[91,23247,23248],{"class":93,"line":334},[91,23249,23250],{"class":1343},"    \u002F\u002F display: none 만 붙여서 숨긴다.\n",[91,23252,23253,23256,23258,23261,23264,23267,23269,23272,23274,23277],{"class":93,"line":355},[91,23254,23255],{"class":101},"    (toc ",[91,23257,20739],{"class":566},[91,23259,23260],{"class":97}," HTMLElement",[91,23262,23263],{"class":101},")?.style.",[91,23265,23266],{"class":97},"setProperty",[91,23268,795],{"class":101},[91,23270,23271],{"class":169},"\"display\"",[91,23273,64],{"class":101},[91,23275,23276],{"class":169},"\"none\"",[91,23278,1594],{"class":101},[91,23280,23281],{"class":93,"line":364},[91,23282,1698],{"class":101},[91,23284,23285],{"class":93,"line":378},[91,23286,9444],{"class":101},[16,23288,23289,23290,23293],{},"자바스크립트로 간단하게 ",[31,23291,23292],{},"innerHTML","  을 붙이려는 요소에 넣어주고, 해당 요소는 제거하면 된댜.",[1722,23295,23296],{},[16,23297,23298,23301,23302,23305,23306,23309,23310,23312,23313,23316],{},[91,23299,23300],{},"!attention","\n원래는  ",[31,23303,23304],{},"toc"," 를 remove 로 제거했으나, 그러면 라우트를 두번 이상 이동할 때, 이미 제거된 ",[31,23307,23308],{},".table-of-contents"," 에서 내용을 찾아 ",[31,23311,22231],{}," 를 얻게 된다. 라우트 시 toc 요소가 없으면 생성하지 못하는듯 하다.\n그래서 ",[31,23314,23315],{},"display: none;"," 속성만 주어서 보이지만 않게 한다.",[82,23318,23320],{"className":1154,"code":23319,"language":1156,"meta":87,"style":87},"watch(() => route.fullPath, () => {\n    \u002F\u002F SPA 라우트가 바뀔 때마다 toc 변경\n    nextTick(() => {\n        createToc();\n    });\n});\n",[31,23321,23322,23337,23342,23353,23360,23364],{"__ignoreMap":87},[91,23323,23324,23326,23328,23330,23333,23335],{"class":93,"line":94},[91,23325,1884],{"class":97},[91,23327,2088],{"class":101},[91,23329,1179],{"class":566},[91,23331,23332],{"class":101}," route.fullPath, () ",[91,23334,1179],{"class":566},[91,23336,102],{"class":101},[91,23338,23339],{"class":93,"line":105},[91,23340,23341],{"class":1343},"    \u002F\u002F SPA 라우트가 바뀔 때마다 toc 변경\n",[91,23343,23344,23347,23349,23351],{"class":93,"line":121},[91,23345,23346],{"class":97},"    nextTick",[91,23348,2088],{"class":101},[91,23350,1179],{"class":566},[91,23352,102],{"class":101},[91,23354,23355,23358],{"class":93,"line":134},[91,23356,23357],{"class":97},"        createToc",[91,23359,2030],{"class":101},[91,23361,23362],{"class":93,"line":228},[91,23363,7745],{"class":101},[91,23365,23366],{"class":93,"line":250},[91,23367,1303],{"class":101},[16,23369,23370,23371,23373],{},"라우트가 변경될 때마다 TOC를 옮겨주기 위해서 ",[31,23372,1884],{}," 를 추가한다.",[757,23375,23376],{"id":23376},"markdown-it-prism",[1722,23378,23379],{},[16,23380,23376,23381,23383],{},[21660,23382],{},[4306,23384,23385],{"href":23385,"rel":23386},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-prism",[4310],[16,23388,23389,23392,23393,23395],{},[31,23390,23391],{},"prism","  라이브러를 래핑했다. 마크다운 파일 내의 소스코드를 위한 ",[31,23394,82],{},"  태그를 하이라이팅한다.",[82,23397,23399],{"className":1154,"code":23398,"language":1156,"meta":87,"style":87},"export default defineConfig({\n  plugins: [\n    Markdown({\n      markdownItSetup(md) {\n        \u002F\u002F prism 코드 하이라이터\n        md.use(MDPrism)\n      },\n    }),\n  ],\n})\n",[31,23400,23401,23411,23415,23421,23432,23437,23447,23451,23455,23459],{"__ignoreMap":87},[91,23402,23403,23405,23407,23409],{"class":93,"line":94},[91,23404,2574],{"class":566},[91,23406,12107],{"class":566},[91,23408,21401],{"class":97},[91,23410,7549],{"class":101},[91,23412,23413],{"class":93,"line":105},[91,23414,21886],{"class":101},[91,23416,23417,23419],{"class":93,"line":121},[91,23418,22829],{"class":97},[91,23420,7549],{"class":101},[91,23422,23423,23426,23428,23430],{"class":93,"line":134},[91,23424,23425],{"class":97},"      markdownItSetup",[91,23427,795],{"class":101},[91,23429,843],{"class":1172},[91,23431,3866],{"class":101},[91,23433,23434],{"class":93,"line":228},[91,23435,23436],{"class":1343},"        \u002F\u002F prism 코드 하이라이터\n",[91,23438,23439,23442,23444],{"class":93,"line":250},[91,23440,23441],{"class":101},"        md.",[91,23443,14877],{"class":97},[91,23445,23446],{"class":101},"(MDPrism)\n",[91,23448,23449],{"class":93,"line":260},[91,23450,21324],{"class":101},[91,23452,23453],{"class":93,"line":274},[91,23454,10100],{"class":101},[91,23456,23457],{"class":93,"line":284},[91,23458,21926],{"class":101},[91,23460,23461],{"class":93,"line":299},[91,23462,9444],{"class":101},[16,23464,23465,23468],{},[31,23466,23467],{},"markdownItSetup"," 함수에서 use 로 사용선언하면 자동으로 마크다운 코드 영역은 하이라이팅 된다. 클래스가 부여되기만 해서 css 는 직접 넣어주어야 한다.",[82,23470,23474],{"className":23471,"code":23472,"language":23473,"meta":87,"style":87},"language-scss shiki shiki-themes github-light github-dark","\u003Cstyle>\n@use \"..\u002Fassets\u002Fscss\u002Fprism-vscode.scss\"; \n\u003C\u002Fstyle>\n","scss",[31,23475,23476,23484,23494],{"__ignoreMap":87},[91,23477,23478,23480,23482],{"class":93,"line":94},[91,23479,156],{"class":101},[91,23481,829],{"class":159},[91,23483,173],{"class":101},[91,23485,23486,23489,23492],{"class":93,"line":105},[91,23487,23488],{"class":566},"@use",[91,23490,23491],{"class":169}," \"..\u002Fassets\u002Fscss\u002Fprism-vscode.scss\"",[91,23493,19873],{"class":101},[91,23495,23496,23498,23500],{"class":93,"line":121},[91,23497,493],{"class":101},[91,23499,829],{"class":159},[91,23501,173],{"class":101},[16,23503,23504,23505,23508,23509,23512],{},"우리의 경우 포스트가 ",[31,23506,23507],{},"RouterView"," 에서 자동으로 페이지화되어 보여지기 때문에, ",[31,23510,23511],{},"scoped style"," 로는 스타일을 적용할 수 없다. 그래서 전역 css 로 선언해주어야 한다.",[771,23514,23515],{"id":23515},"테마",[16,23517,23518,23523],{},[4306,23519,23522],{"href":23520,"rel":23521},"https:\u002F\u002Fgithub.com\u002FPrismJS\u002Fprism-themes",[4310],"GitHub - PrismJS\u002Fprism-themes: A wider selection of Prism themes","\n여러가지 테마를 모아둔 깃헙이다. 가장 익숙한 vscode 를 사용했다.",[49,23525,23526],{"id":23526},"pinia",[1722,23528,23529],{},[16,23530,23526,23531,23533,23537,23539,23540,23542],{},[21660,23532],{},[4306,23534,23535],{"href":23535,"rel":23536},"https:\u002F\u002Fpinia.vuejs.org\u002Fgetting-started.html#installation",[4310],[21660,23538],{},"\nvite-ssg pinia",[21660,23541],{},[4306,23543,23544],{"href":23544,"rel":23545},"https:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-ssg#initial-state",[4310],[16,23547,23548],{},"포스트 목록을 관리하기 위해서 pinia 를 설치하자.",[82,23550,23553],{"className":23551,"code":23552,"language":1099},[1097],"npm install pinia\n",[31,23554,23552],{"__ignoreMap":87},[82,23556,23558],{"className":1154,"code":23557,"language":1156,"meta":87,"style":87},"\u002F\u002F main.ts\nexport const createApp = ViteSSG(\n  App,\n  { routes },\n  ({ app, router, initialState }) => {\n    const pinia = createPinia()\n    app.use(pinia)\n\n    if (import.meta.env.SSR)\n      initialState.pinia = pinia.state.value\n    else\n      pinia.state.value = initialState.pinia || {}\n\n    router.beforeEach((to, from, next) => {\n      const store = useRootStore(pinia)\n      if (!store.ready)\n        \u002F\u002F perform the (user-implemented) store action to fill the store's state\n        store.initialize()\n      next()\n    })\n  },\n)\n\n",[31,23559,23560,23564,23578,23583,23588,23609,23621,23630,23634,23654,23664,23669,23684,23688,23716,23729,23740,23745,23755,23762,23767,23771],{"__ignoreMap":87},[91,23561,23562],{"class":93,"line":94},[91,23563,14780],{"class":1343},[91,23565,23566,23568,23570,23572,23574,23576],{"class":93,"line":105},[91,23567,2574],{"class":566},[91,23569,16463],{"class":566},[91,23571,14867],{"class":108},[91,23573,1366],{"class":566},[91,23575,21741],{"class":97},[91,23577,9266],{"class":101},[91,23579,23580],{"class":93,"line":121},[91,23581,23582],{"class":101},"  App,\n",[91,23584,23585],{"class":93,"line":134},[91,23586,23587],{"class":101},"  { routes },\n",[91,23589,23590,23593,23595,23597,23599,23601,23603,23605,23607],{"class":93,"line":228},[91,23591,23592],{"class":101},"  ({ ",[91,23594,21766],{"class":1172},[91,23596,64],{"class":101},[91,23598,21771],{"class":1172},[91,23600,64],{"class":101},[91,23602,21786],{"class":1172},[91,23604,21410],{"class":101},[91,23606,1179],{"class":566},[91,23608,102],{"class":101},[91,23610,23611,23613,23615,23617,23619],{"class":93,"line":250},[91,23612,1382],{"class":566},[91,23614,17032],{"class":108},[91,23616,1366],{"class":566},[91,23618,17037],{"class":97},[91,23620,9313],{"class":101},[91,23622,23623,23626,23628],{"class":93,"line":260},[91,23624,23625],{"class":101},"    app.",[91,23627,14877],{"class":97},[91,23629,17049],{"class":101},[91,23631,23632],{"class":93,"line":274},[91,23633,1450],{"emptyLinePlaceholder":846},[91,23635,23636,23638,23640,23642,23644,23646,23649,23652],{"class":93,"line":284},[91,23637,8218],{"class":566},[91,23639,2662],{"class":101},[91,23641,2499],{"class":566},[91,23643,1235],{"class":101},[91,23645,13765],{"class":108},[91,23647,23648],{"class":101},".env.",[91,23650,23651],{"class":108},"SSR",[91,23653,3487],{"class":101},[91,23655,23656,23659,23661],{"class":93,"line":299},[91,23657,23658],{"class":101},"      initialState.pinia ",[91,23660,166],{"class":566},[91,23662,23663],{"class":101}," pinia.state.value\n",[91,23665,23666],{"class":93,"line":319},[91,23667,23668],{"class":566},"    else\n",[91,23670,23671,23674,23676,23679,23681],{"class":93,"line":334},[91,23672,23673],{"class":101},"      pinia.state.value ",[91,23675,166],{"class":566},[91,23677,23678],{"class":101}," initialState.pinia ",[91,23680,7829],{"class":566},[91,23682,23683],{"class":101}," {}\n",[91,23685,23686],{"class":93,"line":355},[91,23687,1450],{"emptyLinePlaceholder":846},[91,23689,23690,23693,23696,23698,23701,23703,23705,23707,23710,23712,23714],{"class":93,"line":364},[91,23691,23692],{"class":101},"    router.",[91,23694,23695],{"class":97},"beforeEach",[91,23697,1169],{"class":101},[91,23699,23700],{"class":1172},"to",[91,23702,64],{"class":101},[91,23704,2505],{"class":1172},[91,23706,64],{"class":101},[91,23708,23709],{"class":1172},"next",[91,23711,1176],{"class":101},[91,23713,1179],{"class":566},[91,23715,102],{"class":101},[91,23717,23718,23720,23722,23724,23727],{"class":93,"line":378},[91,23719,13915],{"class":566},[91,23721,12158],{"class":108},[91,23723,1366],{"class":566},[91,23725,23726],{"class":97}," useRootStore",[91,23728,17049],{"class":101},[91,23730,23731,23733,23735,23737],{"class":93,"line":387},[91,23732,13326],{"class":566},[91,23734,2662],{"class":101},[91,23736,2665],{"class":566},[91,23738,23739],{"class":101},"store.ready)\n",[91,23741,23742],{"class":93,"line":402},[91,23743,23744],{"class":1343},"        \u002F\u002F perform the (user-implemented) store action to fill the store's state\n",[91,23746,23747,23750,23753],{"class":93,"line":422},[91,23748,23749],{"class":101},"        store.",[91,23751,23752],{"class":97},"initialize",[91,23754,9313],{"class":101},[91,23756,23757,23760],{"class":93,"line":438},[91,23758,23759],{"class":97},"      next",[91,23761,9313],{"class":101},[91,23763,23764],{"class":93,"line":458},[91,23765,23766],{"class":101},"    })\n",[91,23768,23769],{"class":93,"line":467},[91,23770,10581],{"class":101},[91,23772,23773],{"class":93,"line":481},[91,23774,3487],{"class":101},[16,23776,23777,23778,23781],{},"vite-ssg 깃헙에서 나온 설명서인데, 글로벌로 store 를 등록하는 게 아니라면, ",[31,23779,23780],{},"app.use","  까지만 해주어도 된다.",[82,23783,23785],{"className":1154,"code":23784,"language":1156,"meta":87,"style":87},"\u002F\u002F src\u002Fstore\u002Fposts.ts\nimport axios from 'axios';\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue';\n\nexport interface Post {\n  url: string;\n  fileName: string;\n  title: string;\n  description: string;\n  tags: string[];\n  data: string;\n}\n\nexport const usePosts = defineStore('post', () => {\n  const postList = ref\u003CPost[]>([]);\n  const currentUrl = ref\u003Cstring>('');\n\n  async function fetchPostList(\n) {\n    axios.get\u003CPost[]>(`\u002Fpostlist.json`).then(res => {\n      postList.value = res.data;\n      return res.data;\n    });\n  }\n\n  return {\n    postList,\n    currentUrl,\n    fetchPostList,\n  }\n})\n\n",[31,23786,23787,23791,23804,23814,23826,23830,23840,23850,23860,23870,23880,23890,23900,23904,23908,23932,23949,23970,23974,23986,23990,24018,24027,24033,24037,24041,24045,24051,24056,24061,24066,24070],{"__ignoreMap":87},[91,23788,23789],{"class":93,"line":94},[91,23790,12391],{"class":1343},[91,23792,23793,23795,23797,23799,23802],{"class":93,"line":105},[91,23794,2499],{"class":566},[91,23796,11584],{"class":101},[91,23798,2505],{"class":566},[91,23800,23801],{"class":169}," 'axios'",[91,23803,118],{"class":101},[91,23805,23806,23808,23810,23812],{"class":93,"line":121},[91,23807,2499],{"class":566},[91,23809,16435],{"class":101},[91,23811,2505],{"class":566},[91,23813,16440],{"class":169},[91,23815,23816,23818,23820,23822,23824],{"class":93,"line":134},[91,23817,2499],{"class":566},[91,23819,16447],{"class":101},[91,23821,2505],{"class":566},[91,23823,2508],{"class":169},[91,23825,118],{"class":101},[91,23827,23828],{"class":93,"line":228},[91,23829,1450],{"emptyLinePlaceholder":846},[91,23831,23832,23834,23836,23838],{"class":93,"line":250},[91,23833,2574],{"class":566},[91,23835,11602],{"class":566},[91,23837,11605],{"class":97},[91,23839,102],{"class":101},[91,23841,23842,23844,23846,23848],{"class":93,"line":260},[91,23843,11612],{"class":1172},[91,23845,1208],{"class":566},[91,23847,1357],{"class":108},[91,23849,118],{"class":101},[91,23851,23852,23854,23856,23858],{"class":93,"line":274},[91,23853,11623],{"class":1172},[91,23855,1208],{"class":566},[91,23857,1357],{"class":108},[91,23859,118],{"class":101},[91,23861,23862,23864,23866,23868],{"class":93,"line":284},[91,23863,11645],{"class":1172},[91,23865,1208],{"class":566},[91,23867,1357],{"class":108},[91,23869,118],{"class":101},[91,23871,23872,23874,23876,23878],{"class":93,"line":299},[91,23873,16034],{"class":1172},[91,23875,1208],{"class":566},[91,23877,1357],{"class":108},[91,23879,118],{"class":101},[91,23881,23882,23884,23886,23888],{"class":93,"line":319},[91,23883,11656],{"class":1172},[91,23885,1208],{"class":566},[91,23887,1357],{"class":108},[91,23889,11663],{"class":101},[91,23891,23892,23894,23896,23898],{"class":93,"line":334},[91,23893,11668],{"class":1172},[91,23895,1208],{"class":566},[91,23897,1357],{"class":108},[91,23899,118],{"class":101},[91,23901,23902],{"class":93,"line":355},[91,23903,137],{"class":101},[91,23905,23906],{"class":93,"line":364},[91,23907,1450],{"emptyLinePlaceholder":846},[91,23909,23910,23912,23914,23917,23919,23921,23923,23926,23928,23930],{"class":93,"line":378},[91,23911,2574],{"class":566},[91,23913,16463],{"class":566},[91,23915,23916],{"class":108}," usePosts",[91,23918,1366],{"class":566},[91,23920,16471],{"class":97},[91,23922,795],{"class":101},[91,23924,23925],{"class":169},"'post'",[91,23927,9612],{"class":101},[91,23929,1179],{"class":566},[91,23931,102],{"class":101},[91,23933,23934,23936,23938,23940,23942,23944,23946],{"class":93,"line":387},[91,23935,2641],{"class":566},[91,23937,11721],{"class":108},[91,23939,1366],{"class":566},[91,23941,16494],{"class":97},[91,23943,156],{"class":101},[91,23945,11726],{"class":97},[91,23947,23948],{"class":101},"[]>([]);\n",[91,23950,23951,23953,23955,23957,23959,23961,23963,23966,23968],{"class":93,"line":402},[91,23952,2641],{"class":566},[91,23954,11741],{"class":108},[91,23956,1366],{"class":566},[91,23958,16494],{"class":97},[91,23960,156],{"class":101},[91,23962,20666],{"class":108},[91,23964,23965],{"class":101},">(",[91,23967,14028],{"class":169},[91,23969,1594],{"class":101},[91,23971,23972],{"class":93,"line":422},[91,23973,1450],{"emptyLinePlaceholder":846},[91,23975,23976,23979,23981,23984],{"class":93,"line":438},[91,23977,23978],{"class":566},"  async",[91,23980,2001],{"class":566},[91,23982,23983],{"class":97}," fetchPostList",[91,23985,9266],{"class":101},[91,23987,23988],{"class":93,"line":458},[91,23989,3866],{"class":101},[91,23991,23992,23994,23996,23998,24000,24003,24006,24008,24010,24012,24014,24016],{"class":93,"line":467},[91,23993,11994],{"class":101},[91,23995,5938],{"class":97},[91,23997,156],{"class":101},[91,23999,11726],{"class":97},[91,24001,24002],{"class":101},"[]>(",[91,24004,24005],{"class":169},"`\u002Fpostlist.json`",[91,24007,8017],{"class":101},[91,24009,1200],{"class":97},[91,24011,795],{"class":101},[91,24013,12010],{"class":1172},[91,24015,11859],{"class":566},[91,24017,102],{"class":101},[91,24019,24020,24023,24025],{"class":93,"line":481},[91,24021,24022],{"class":101},"      postList.value ",[91,24024,166],{"class":566},[91,24026,12451],{"class":101},[91,24028,24029,24031],{"class":93,"line":490},[91,24030,11825],{"class":566},[91,24032,12451],{"class":101},[91,24034,24035],{"class":93,"line":3310},[91,24036,7745],{"class":101},[91,24038,24039],{"class":93,"line":3315},[91,24040,1698],{"class":101},[91,24042,24043],{"class":93,"line":3321},[91,24044,1450],{"emptyLinePlaceholder":846},[91,24046,24047,24049],{"class":93,"line":3327},[91,24048,2695],{"class":566},[91,24050,102],{"class":101},[91,24052,24053],{"class":93,"line":3333},[91,24054,24055],{"class":101},"    postList,\n",[91,24057,24058],{"class":93,"line":3338},[91,24059,24060],{"class":101},"    currentUrl,\n",[91,24062,24063],{"class":93,"line":3343},[91,24064,24065],{"class":101},"    fetchPostList,\n",[91,24067,24068],{"class":93,"line":7882},[91,24069,1698],{"class":101},[91,24071,24072],{"class":93,"line":7887},[91,24073,9444],{"class":101},[16,24075,24076],{},"post 목록을 가져오는 store 를 하나 만든다. 포스트를 단순히 json 파일로 저장해두고, 사용할 것이다.",[82,24078,24080],{"className":1154,"code":24079,"language":1156,"meta":87,"style":87},"\u002F\u002F public\u002Fpostlist.json\n[\n  {\n      \"url\": \"Vue-Prefetch\",\n      \"fileName\": \"Vue-Prefetch\",\n      \"title\": \"Vue Code Spliting 간단히 알아보기 (+ Prefetch)\",\n      \"description\": \"Vue 프로젝트의 Code Spliting 이 어떻게 작동하는지와 webpack prefetch 옵션 에 대해서 간략한 설명.\",\n      \"createdAt\": \"2022-08-05\",\n      \"updatedAt\": \"2022-08-05\",\n      \"tags\": [\"Vue\", \"Vue2\", \"Vue3\", \"Code Spliting\", \"코드분산\", \"Prefecth\", \"Webpack\"]\n  },\n  \u002F\u002F ...\n]\n\n",[31,24081,24082,24087,24091,24095,24107,24118,24129,24141,24153,24164,24206,24210,24215],{"__ignoreMap":87},[91,24083,24084],{"class":93,"line":94},[91,24085,24086],{"class":1343},"\u002F\u002F public\u002Fpostlist.json\n",[91,24088,24089],{"class":93,"line":105},[91,24090,11369],{"class":101},[91,24092,24093],{"class":93,"line":121},[91,24094,11374],{"class":101},[91,24096,24097,24100,24102,24105],{"class":93,"line":134},[91,24098,24099],{"class":169},"      \"url\"",[91,24101,112],{"class":101},[91,24103,24104],{"class":169},"\"Vue-Prefetch\"",[91,24106,7560],{"class":101},[91,24108,24109,24112,24114,24116],{"class":93,"line":228},[91,24110,24111],{"class":169},"      \"fileName\"",[91,24113,112],{"class":101},[91,24115,24104],{"class":169},[91,24117,7560],{"class":101},[91,24119,24120,24122,24124,24127],{"class":93,"line":250},[91,24121,17628],{"class":169},[91,24123,112],{"class":101},[91,24125,24126],{"class":169},"\"Vue Code Spliting 간단히 알아보기 (+ Prefetch)\"",[91,24128,7560],{"class":101},[91,24130,24131,24134,24136,24139],{"class":93,"line":260},[91,24132,24133],{"class":169},"      \"description\"",[91,24135,112],{"class":101},[91,24137,24138],{"class":169},"\"Vue 프로젝트의 Code Spliting 이 어떻게 작동하는지와 webpack prefetch 옵션 에 대해서 간략한 설명.\"",[91,24140,7560],{"class":101},[91,24142,24143,24146,24148,24151],{"class":93,"line":274},[91,24144,24145],{"class":169},"      \"createdAt\"",[91,24147,112],{"class":101},[91,24149,24150],{"class":169},"\"2022-08-05\"",[91,24152,7560],{"class":101},[91,24154,24155,24158,24160,24162],{"class":93,"line":284},[91,24156,24157],{"class":169},"      \"updatedAt\"",[91,24159,112],{"class":101},[91,24161,24150],{"class":169},[91,24163,7560],{"class":101},[91,24165,24166,24169,24171,24174,24176,24179,24181,24184,24186,24189,24191,24194,24196,24199,24201,24204],{"class":93,"line":299},[91,24167,24168],{"class":169},"      \"tags\"",[91,24170,11454],{"class":101},[91,24172,24173],{"class":169},"\"Vue\"",[91,24175,64],{"class":101},[91,24177,24178],{"class":169},"\"Vue2\"",[91,24180,64],{"class":101},[91,24182,24183],{"class":169},"\"Vue3\"",[91,24185,64],{"class":101},[91,24187,24188],{"class":169},"\"Code Spliting\"",[91,24190,64],{"class":101},[91,24192,24193],{"class":169},"\"코드분산\"",[91,24195,64],{"class":101},[91,24197,24198],{"class":169},"\"Prefecth\"",[91,24200,64],{"class":101},[91,24202,24203],{"class":169},"\"Webpack\"",[91,24205,11460],{"class":101},[91,24207,24208],{"class":93,"line":319},[91,24209,10581],{"class":101},[91,24211,24212],{"class":93,"line":334},[91,24213,24214],{"class":1343},"  \u002F\u002F ...\n",[91,24216,24217],{"class":93,"line":355},[91,24218,11460],{"class":101},[16,24220,24221],{},"public 폴더에 파일을 두면, 그 항목은 사이트의 루트에 포함되게 된다. 같은 호스트이기 때문에 cors 없이 axios 로 동적으로 조회할 수 있다.",[49,24223,15123],{"id":15123},[757,24225,24227],{"id":24226},"vite-ssg-gsap","vite-ssg + gsap",[82,24229,24232],{"className":24230,"code":24231,"language":1099},[1097],"[vite-ssg] An internal error occurred.\n[vite-ssg] Please report an issue, if none already exists: https:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-ssg\u002Fissues\nfile:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002F.vite-ssg-temp\u002Fmain.mjs:6\nimport { ScrollTrigger } from \"gsap\u002FScrollTrigger.js\";\n         ^^^^^^^^^^^^^\nSyntaxError: Named export 'ScrollTrigger' not found. The requested module 'gsap\u002FScrollTrigger.js' is a CommonJS module, which may not support all module.exports as named exports.\nCommonJS modules can always be imported via the default export, for example using:\n\nimport pkg from 'gsap\u002FScrollTrigger.js';\nconst { ScrollTrigger } = pkg;\n\n    at ModuleJob._instantiate (node:internal\u002Fmodules\u002Fesm\u002Fmodule_job:123:21)\n    at async ModuleJob.run (node:internal\u002Fmodules\u002Fesm\u002Fmodule_job:189:5)\n    at async Promise.all (index 0)\n    at async ESMLoader.import (node:internal\u002Fmodules\u002Fesm\u002Floader:530:24)\n    at async build (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Fvite-ssg\u002Fdist\u002Fshared\u002Fvite-ssg.62550b28.mjs:996:87)\n    at async Object.handler (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Fvite-ssg\u002Fdist\u002Fnode\u002Fcli.mjs:29:5)\n\nNode.js v18.12.1\n",[31,24233,24231],{"__ignoreMap":87},[16,24235,24236],{},[4306,24237,24240],{"href":24238,"rel":24239},"https:\u002F\u002Fstackoverflow.com\u002Fa\u002F76578317",[4310],"javascript - GSAP ScrollTrigger with Next.js - Stack Overflow",[82,24242,24244],{"className":1154,"code":24243,"language":1156,"meta":87,"style":87},"import MPP from 'gsap\u002FMotionPathPlugin';\nimport ScrollTrigger from 'gsap\u002FScrollTrigger';\n\nconst { MotionPathPlugin } = MPP;\ngsap.registerPlugin(ScrollTrigger);\ngsap.registerPlugin(MotionPathPlugin);\n",[31,24245,24246,24260,24274,24278,24296,24307],{"__ignoreMap":87},[91,24247,24248,24250,24253,24255,24258],{"class":93,"line":94},[91,24249,2499],{"class":566},[91,24251,24252],{"class":101}," MPP ",[91,24254,2505],{"class":566},[91,24256,24257],{"class":169}," 'gsap\u002FMotionPathPlugin'",[91,24259,118],{"class":101},[91,24261,24262,24264,24267,24269,24272],{"class":93,"line":105},[91,24263,2499],{"class":566},[91,24265,24266],{"class":101}," ScrollTrigger ",[91,24268,2505],{"class":566},[91,24270,24271],{"class":169}," 'gsap\u002FScrollTrigger'",[91,24273,118],{"class":101},[91,24275,24276],{"class":93,"line":121},[91,24277,1450],{"emptyLinePlaceholder":846},[91,24279,24280,24282,24284,24287,24289,24291,24294],{"class":93,"line":134},[91,24281,1968],{"class":566},[91,24283,13969],{"class":101},[91,24285,24286],{"class":108},"MotionPathPlugin",[91,24288,13985],{"class":101},[91,24290,166],{"class":566},[91,24292,24293],{"class":108}," MPP",[91,24295,118],{"class":101},[91,24297,24298,24301,24304],{"class":93,"line":228},[91,24299,24300],{"class":101},"gsap.",[91,24302,24303],{"class":97},"registerPlugin",[91,24305,24306],{"class":101},"(ScrollTrigger);\n",[91,24308,24309,24311,24313],{"class":93,"line":250},[91,24310,24300],{"class":101},[91,24312,24303],{"class":97},[91,24314,24315],{"class":101},"(MotionPathPlugin);\n",[16,24317,24318,24319,24321,24322,24325,24326,24329],{},"이런식으로 바꿔주었다. ",[31,24320,21653],{}," 로 사용할 때는 다른 빌드 방식을 사용하나보다. ",[31,24323,24324],{},"esbuild"," 라거나,, commonJS 라거나.. 그래서 ",[31,24327,24328],{},"\u002Fdist"," 폴더 안의 라이브러리를 사용해주었다.",[757,24331,5310],{"id":5310},[16,24333,24334,24336,24337,24340],{},[31,24335,21653],{}," 는 정적 html 사이트를 생성하기 때문에 ",[31,24338,24339],{},"setup"," 안에 있는 함수를 무조건 실행한다. 그래서 최초에 데이터를 가져오는 axios 함수가 실행되면서 없는 서버로 데이터를 가져오려고 해서 에러가 발생한다.",[82,24342,24345],{"className":24343,"code":24344,"language":1099},[1097],"file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fcore\u002FAxiosError.js:89\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n             ^\nAxiosError: connect ECONNREFUSED ::1:80\n    at AxiosError.from (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fcore\u002FAxiosError.js:89:14)\n    at RedirectableRequest.handleRequestError (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fadapters\u002Fhttp.js:591:25)\n    at RedirectableRequest.emit (node:events:513:28)\n    at eventHandlers.\u003Ccomputed> (\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Ffollow-redirects\u002Findex.js:14:24)\n    at ClientRequest.emit (node:events:513:28)\n    at Socket.socketErrorListener (node:_http_client:494:9)\n    at Socket.emit (node:events:513:28)\n    at emitErrorNT (node:internal\u002Fstreams\u002Fdestroy:151:8)\n    at emitErrorCloseNT (node:internal\u002Fstreams\u002Fdestroy:116:3)\n    at process.processTicksAndRejections (node:internal\u002Fprocess\u002Ftask_queues:82:21) {\n",[31,24346,24344],{"__ignoreMap":87},[16,24348,24349,24352],{},[31,24350,24351],{},"::1:80"," 경로로 데이터를 가져오면서 에러가 발생한 것이다.",[82,24354,24356],{"className":1154,"code":24355,"language":1156,"meta":87,"style":87},"const posts = usePosts();\n\nonMounted(() => {\n  animPostList();\n  posts.fetchPostList();\n})\n",[31,24357,24358,24370,24374,24384,24391,24401],{"__ignoreMap":87},[91,24359,24360,24362,24364,24366,24368],{"class":93,"line":94},[91,24361,1968],{"class":566},[91,24363,13057],{"class":108},[91,24365,1366],{"class":566},[91,24367,23916],{"class":97},[91,24369,2030],{"class":101},[91,24371,24372],{"class":93,"line":105},[91,24373,1450],{"emptyLinePlaceholder":846},[91,24375,24376,24378,24380,24382],{"class":93,"line":121},[91,24377,2085],{"class":97},[91,24379,2088],{"class":101},[91,24381,1179],{"class":566},[91,24383,102],{"class":101},[91,24385,24386,24389],{"class":93,"line":134},[91,24387,24388],{"class":97},"  animPostList",[91,24390,2030],{"class":101},[91,24392,24393,24396,24399],{"class":93,"line":228},[91,24394,24395],{"class":101},"  posts.",[91,24397,24398],{"class":97},"fetchPostList",[91,24400,2030],{"class":101},[91,24402,24403],{"class":93,"line":250},[91,24404,9444],{"class":101},[16,24406,24407,24408,24410],{},"onMounted 내부에서 fetch 를 실행하면, ",[31,24409,24339],{}," 훅과 다르게 빌드 시 실행하지 않는다.",[829,24412,24413],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .snhLl, html code.shiki .snhLl{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":87,"searchDepth":105,"depth":105,"links":24415},[24416,24417,24418,24419,24423,24424,24427,24432,24433],{"id":21640,"depth":105,"text":21641},{"id":21653,"depth":105,"text":21653},{"id":21818,"depth":105,"text":21818},{"id":21837,"depth":105,"text":21837,"children":24420},[24421,24422],{"id":22133,"depth":121,"text":22134},{"id":22167,"depth":121,"text":22168},{"id":22427,"depth":105,"text":22427},{"id":22723,"depth":105,"text":22723,"children":24425},[24426],{"id":22854,"depth":121,"text":22855},{"id":23049,"depth":105,"text":23050,"children":24428},[24429,24430,24431],{"id":23053,"depth":121,"text":23053},{"id":23072,"depth":121,"text":23072},{"id":23376,"depth":121,"text":23376},{"id":23526,"depth":105,"text":23526},{"id":15123,"depth":105,"text":15123,"children":24434},[24435,24436],{"id":24226,"depth":121,"text":24227},{"id":5310,"depth":121,"text":5310},"2023-09-26","기존 vue-cli 를 사용한 vue 프로젝트로 github pages 를 구축했는데, 대세에 따라 vite 로 변경하기로 했다.","vite-vue-and-github-pages",{},"\u002Fblog\u002Fvite-vue-and-github-pages",{"title":21624,"description":24438},{"loc":24441},"blog\u002Fvite-vue-and-github-pages",[19761,15042,15043,15044,15045,15046],"hgfHKTze0c8HfAmDYFjLBoMKlZJNI741Grl5JGzGR0I",{"id":24448,"title":24449,"body":24450,"created":24632,"description":24633,"extension":843,"filename":24634,"meta":24635,"navigation":846,"path":24636,"seo":24637,"sitemap":24638,"stem":24639,"subject":2862,"tags":24640,"updated":24632,"volume":1863,"__hash__":24645},"blog\u002Fblog\u002Fvitest-timer-flushpromise.md","Vitest Fake Timer 로 setInterval 테스트 중 다음 루프가 실행 안되는 경우",{"type":8,"value":24451,"toc":24629},[24452,24459,24462,24541,24545,24619,24626],[16,24453,24454],{},[4306,24455,24458],{"href":24456,"rel":24457},"https:\u002F\u002Fvitest.dev\u002Fapi\u002Fvi#fake-timers",[4310],"vitest 공식 홈페이지 #fake-timers",[16,24460,24461],{},"타이머를 가짜로 돌려서, 원하는 시간만큼 컨트롤할 수 있다. 시간을 기다리지 않고, 임의로 시간을 흐르게 해서 빠른 테스트를 가능하게 한다.",[82,24463,24465],{"className":1154,"code":24464,"language":1156,"meta":87,"style":87},"let i = 0\nsetInterval(() => console.log(++i), 50)\n\nvi.advanceTimersByTime(150)\n\n\u002F\u002F log: 1\n\u002F\u002F log: 2\n\u002F\u002F log: 3\n",[31,24466,24467,24478,24503,24507,24522,24526,24531,24536],{"__ignoreMap":87},[91,24468,24469,24471,24473,24475],{"class":93,"line":94},[91,24470,1349],{"class":566},[91,24472,17223],{"class":101},[91,24474,166],{"class":566},[91,24476,24477],{"class":108}," 0\n",[91,24479,24480,24483,24485,24487,24490,24492,24494,24496,24499,24501],{"class":93,"line":105},[91,24481,24482],{"class":97},"setInterval",[91,24484,2088],{"class":101},[91,24486,1179],{"class":566},[91,24488,24489],{"class":101}," console.",[91,24491,1225],{"class":97},[91,24493,795],{"class":101},[91,24495,17243],{"class":566},[91,24497,24498],{"class":101},"i), ",[91,24500,5637],{"class":108},[91,24502,3487],{"class":101},[91,24504,24505],{"class":93,"line":121},[91,24506,1450],{"emptyLinePlaceholder":846},[91,24508,24509,24512,24515,24517,24520],{"class":93,"line":134},[91,24510,24511],{"class":101},"vi.",[91,24513,24514],{"class":97},"advanceTimersByTime",[91,24516,795],{"class":101},[91,24518,24519],{"class":108},"150",[91,24521,3487],{"class":101},[91,24523,24524],{"class":93,"line":228},[91,24525,1450],{"emptyLinePlaceholder":846},[91,24527,24528],{"class":93,"line":250},[91,24529,24530],{"class":1343},"\u002F\u002F log: 1\n",[91,24532,24533],{"class":93,"line":260},[91,24534,24535],{"class":1343},"\u002F\u002F log: 2\n",[91,24537,24538],{"class":93,"line":274},[91,24539,24540],{"class":1343},"\u002F\u002F log: 3\n",[49,24542,24544],{"id":24543},"타이머-내부에-async-fetch-코드가-있다면-flushpromise-필수","타이머 내부에 async fetch 코드가 있다면 flushPromise 필수",[82,24546,24548],{"className":1154,"code":24547,"language":1156,"meta":87,"style":87},"async function fetchFunction() {\n  await fetchDetail();\n    \u002F\u002F ...\n}\n\nfunction startTimer() {\n  refreshTimer = setInterval(fetchFunction, 5 * 1000);\n}\n",[31,24549,24550,24561,24570,24574,24578,24582,24591,24615],{"__ignoreMap":87},[91,24551,24552,24554,24556,24559],{"class":93,"line":94},[91,24553,1998],{"class":566},[91,24555,2001],{"class":566},[91,24557,24558],{"class":97}," fetchFunction",[91,24560,2007],{"class":101},[91,24562,24563,24565,24568],{"class":93,"line":105},[91,24564,2254],{"class":566},[91,24566,24567],{"class":97}," fetchDetail",[91,24569,2030],{"class":101},[91,24571,24572],{"class":93,"line":121},[91,24573,21891],{"class":1343},[91,24575,24576],{"class":93,"line":134},[91,24577,137],{"class":101},[91,24579,24580],{"class":93,"line":228},[91,24581,1450],{"emptyLinePlaceholder":846},[91,24583,24584,24586,24589],{"class":93,"line":250},[91,24585,7471],{"class":566},[91,24587,24588],{"class":97}," startTimer",[91,24590,2007],{"class":101},[91,24592,24593,24596,24598,24601,24604,24607,24610,24613],{"class":93,"line":260},[91,24594,24595],{"class":101},"  refreshTimer ",[91,24597,166],{"class":566},[91,24599,24600],{"class":97}," setInterval",[91,24602,24603],{"class":101},"(fetchFunction, ",[91,24605,24606],{"class":108},"5",[91,24608,24609],{"class":566}," *",[91,24611,24612],{"class":108}," 1000",[91,24614,1594],{"class":101},[91,24616,24617],{"class":93,"line":274},[91,24618,137],{"class":101},[16,24620,24621,24622,24625],{},"이런식으로 fetch 함수가 타이머 함수 내부에 실행되는 경우, ",[31,24623,24624],{},"flushPromise"," 없이는 다음 타이머가 동작하지 않는다. vi.advanceTimersByTime()은 시간만 진행시킬 뿐, 비동기 작업의 완료를 보장하지 않는다. 즉, 비동기 작업은 flushPromise 호출 전까지 대기한다.",[829,24627,24628],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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":87,"searchDepth":105,"depth":105,"links":24630},[24631],{"id":24543,"depth":105,"text":24544},"2025-01-14","setInterval 로 돌아가는 로직을 vitest 의 Fake Timer 를 사용해 테스트. fetch 함수가 포함된 interval 로직은 flushPromise 없이 다음 루프가 돌지 않음.","vitest-timer-flushpromise",{},"\u002Fblog\u002Fvitest-timer-flushpromise",{"title":24449,"description":24633},{"loc":24636},"blog\u002Fvitest-timer-flushpromise",[24641,24642,24643,24644],"Vitest","Javscript","Jest","Async","tR71aL1JFQaEqyscxyfNLZsY5mh0eIudgHmmD2aG2aY",{"id":24647,"title":24648,"body":24649,"created":25157,"description":25158,"extension":843,"filename":25159,"meta":25160,"navigation":846,"path":25161,"seo":25162,"sitemap":25163,"stem":25164,"subject":2862,"tags":25165,"updated":25157,"volume":1863,"__hash__":25170},"blog\u002Fblog\u002Fvue-prefetch.md","Vue Code Spliting 간단히 알아보기 (+ Prefetch)",{"type":8,"value":24650,"toc":25149},[24651,24655,24662,24666,24767,24777,24781,24883,24886,24897,24903,24925,24929,24938,25004,25007,25011,25063,25075,25132,25138,25140,25143,25146],[49,24652,24654],{"id":24653},"code-spliting","Code Spliting",[16,24656,24657,24658,24661],{},"우리가 Vue 프로젝트에서 Code Spliting 을 사용하는 이유는 ",[792,24659,24660],{},"빌드 결과물의 데이터 양을 분산시키기 위해서","다. 기본적으로 SPA 프론트엔드 프로젝트를 번들링할 때, 스크립트 파일은 하나로 뭉쳐진다. 프로젝트 크기에 따라서 이 파일의 크기는 선형으로 증가하며, 초기에 모든 기능을 로드하는 SPA 특성상 초기 렌더링 시간이 급격하게 늘어난다.",[757,24663,24665],{"id":24664},"vue-에서는-어떻게-기능을-사용하나","Vue 에서는 어떻게 기능을 사용하나",[82,24667,24669],{"className":11559,"code":24668,"language":11561,"meta":87,"style":87},"import Home from '..\u002Fviews\u002FHomeView.vue'\n{\n  path: '\u002F',\n  name: 'Home',\n  component: Home\n}, {\n  path: '\u002F:id',\n  name: 'Datail',\n  component: () => import(\u002F* webpackChunkName: \"detail\" *\u002F '..\u002Fviews\u002FDetailView.vue')\n}\n",[31,24670,24671,24683,24687,24698,24709,24716,24721,24731,24741,24763],{"__ignoreMap":87},[91,24672,24673,24675,24678,24680],{"class":93,"line":94},[91,24674,2499],{"class":566},[91,24676,24677],{"class":101}," Home ",[91,24679,2505],{"class":566},[91,24681,24682],{"class":169}," '..\u002Fviews\u002FHomeView.vue'\n",[91,24684,24685],{"class":93,"line":105},[91,24686,8486],{"class":101},[91,24688,24689,24691,24693,24696],{"class":93,"line":121},[91,24690,22202],{"class":97},[91,24692,112],{"class":101},[91,24694,24695],{"class":169},"'\u002F'",[91,24697,7560],{"class":101},[91,24699,24700,24702,24704,24707],{"class":93,"line":134},[91,24701,19986],{"class":97},[91,24703,112],{"class":101},[91,24705,24706],{"class":169},"'Home'",[91,24708,7560],{"class":101},[91,24710,24711,24713],{"class":93,"line":228},[91,24712,22214],{"class":97},[91,24714,24715],{"class":101},": Home\n",[91,24717,24718],{"class":93,"line":250},[91,24719,24720],{"class":101},"}, {\n",[91,24722,24723,24726,24729],{"class":93,"line":260},[91,24724,24725],{"class":101},"  path: ",[91,24727,24728],{"class":169},"'\u002F:id'",[91,24730,7560],{"class":101},[91,24732,24733,24736,24739],{"class":93,"line":274},[91,24734,24735],{"class":101},"  name: ",[91,24737,24738],{"class":169},"'Datail'",[91,24740,7560],{"class":101},[91,24742,24743,24745,24748,24750,24753,24755,24758,24761],{"class":93,"line":284},[91,24744,22214],{"class":97},[91,24746,24747],{"class":101},": () ",[91,24749,1179],{"class":566},[91,24751,24752],{"class":97}," import",[91,24754,795],{"class":101},[91,24756,24757],{"class":1343},"\u002F* webpackChunkName: \"detail\" *\u002F",[91,24759,24760],{"class":169}," '..\u002Fviews\u002FDetailView.vue'",[91,24762,3487],{"class":101},[91,24764,24765],{"class":93,"line":299},[91,24766,137],{"class":101},[16,24768,24769,24770,24773,24774,24776],{},"vue-router 에서 컴포넌트를 정적으로 로드할 경우 app.js 에 컴포넌트 코드가 함께 번들링된다. 위 코드의 Detail 컴포넌트 처럼 함수를 통해 동적으로 로드할 경우 코드는 분산된다. ",[31,24771,24772],{},"webpackChunkName"," 에 정의된 이름으로 하나의 청크로 묶인다. 서로 다른 두 개의 라우트에서 같은 ",[31,24775,24772],{}," 을 사용하면, 하나의 파일에 두 라우트 컴포넌트가 묶인다.",[771,24778,24780],{"id":24779},"만약-서로-다른-라우트에서-같은-컴포넌트를-사용한다면","만약 서로 다른 라우트에서 같은 컴포넌트를 사용한다면?",[82,24782,24784],{"className":11559,"code":24783,"language":11561,"meta":87,"style":87},"{\n    \u002F\u002F Input 컴포넌트를 사용\n  path: '\u002F',\n  name: 'Home',\n    component: () => import(\u002F* webpackChunkName: \"home\" *\u002F '..\u002Fviews\u002FHomeView.vue')\n}, {\n    \u002F\u002F 마찬가지로 Input 컴포넌트를 사용\n  path: '\u002F:id',\n  name: 'Datail',\n  component: () => import(\u002F* webpackChunkName: \"detail\" *\u002F '..\u002Fviews\u002FDetailView.vue')\n}\n",[31,24785,24786,24790,24795,24805,24815,24836,24840,24845,24853,24861,24879],{"__ignoreMap":87},[91,24787,24788],{"class":93,"line":94},[91,24789,8486],{"class":101},[91,24791,24792],{"class":93,"line":105},[91,24793,24794],{"class":1343},"    \u002F\u002F Input 컴포넌트를 사용\n",[91,24796,24797,24799,24801,24803],{"class":93,"line":121},[91,24798,22202],{"class":97},[91,24800,112],{"class":101},[91,24802,24695],{"class":169},[91,24804,7560],{"class":101},[91,24806,24807,24809,24811,24813],{"class":93,"line":134},[91,24808,19986],{"class":97},[91,24810,112],{"class":101},[91,24812,24706],{"class":169},[91,24814,7560],{"class":101},[91,24816,24817,24820,24822,24824,24826,24828,24831,24834],{"class":93,"line":228},[91,24818,24819],{"class":97},"    component",[91,24821,24747],{"class":101},[91,24823,1179],{"class":566},[91,24825,24752],{"class":97},[91,24827,795],{"class":101},[91,24829,24830],{"class":1343},"\u002F* webpackChunkName: \"home\" *\u002F",[91,24832,24833],{"class":169}," '..\u002Fviews\u002FHomeView.vue'",[91,24835,3487],{"class":101},[91,24837,24838],{"class":93,"line":250},[91,24839,24720],{"class":101},[91,24841,24842],{"class":93,"line":260},[91,24843,24844],{"class":1343},"    \u002F\u002F 마찬가지로 Input 컴포넌트를 사용\n",[91,24846,24847,24849,24851],{"class":93,"line":274},[91,24848,24725],{"class":101},[91,24850,24728],{"class":169},[91,24852,7560],{"class":101},[91,24854,24855,24857,24859],{"class":93,"line":284},[91,24856,24735],{"class":101},[91,24858,24738],{"class":169},[91,24860,7560],{"class":101},[91,24862,24863,24865,24867,24869,24871,24873,24875,24877],{"class":93,"line":299},[91,24864,22214],{"class":97},[91,24866,24747],{"class":101},[91,24868,1179],{"class":566},[91,24870,24752],{"class":97},[91,24872,795],{"class":101},[91,24874,24757],{"class":1343},[91,24876,24760],{"class":169},[91,24878,3487],{"class":101},[91,24880,24881],{"class":93,"line":319},[91,24882,137],{"class":101},[16,24884,24885],{},"만약 Home과 Detail 컴포넌트 모두 Input 컴포넌트를 공통으로 사용하고 있다면, 코드는 어떻게 묶일까.",[24,24887,24888,24891,24894],{},[27,24889,24890],{},"home.js",[27,24892,24893],{},"detail.js",[27,24895,24896],{},"home-detail.js",[16,24898,24899,24900,24902],{},"위처럼 공통된 컴포넌트는 별도의 파일로 묶이며 각 페이지 진입 시에 ",[792,24901,24896],{}," 파일을 똑같이 로드한다.",[24,24904,24905,24916],{},[27,24906,24907,24908,22871,24910,24912,24913,24915],{},"Home 컴포넌트 진입 시 ",[792,24909,24890],{},[792,24911,24896],{}," 로드 + ",[792,24914,24893],{}," 로드 안함",[27,24917,24918,24919,22871,24921,24912,24923,24915],{},"Detail 컴포넌트 진입 시 ",[792,24920,24893],{},[792,24922,24896],{},[792,24924,24890],{},[49,24926,24928],{"id":24927},"prefetch","Prefetch?",[16,24930,24931,24932,24934,24935,24937],{},"Code Spliting 을 통해 번들을 여러 파일로 분산하고, 필요에 따라 브라우저가 동적으로 요청하게끔 하는 것으로 초기 렌더링 시간을 줄일 수 있게 되었다. 그런데 여기서 설명하는 ",[31,24933,24927],{}," 라는 것은 분산 시킨 코드들을 ",[31,24936,17698],{}," 에서 미리 로드해 갖고 있는 것이다.",[82,24939,24941],{"className":11559,"code":24940,"language":11561,"meta":87,"style":87},"\u003Chead>\n    \u003Clink href=\"\u002Fjs\u002Fsomepart1.js\" rel=\"prefetch\">\n    \u003Clink href=\"\u002Fjs\u002Fsomepart2.js\" rel=\"prefetch\">\n\u003Chead>\n",[31,24942,24943,24951,24975,24996],{"__ignoreMap":87},[91,24944,24945,24947,24949],{"class":93,"line":94},[91,24946,156],{"class":101},[91,24948,13756],{"class":159},[91,24950,173],{"class":101},[91,24952,24953,24955,24958,24961,24963,24966,24968,24970,24973],{"class":93,"line":105},[91,24954,178],{"class":101},[91,24956,24957],{"class":159},"link",[91,24959,24960],{"class":97}," href",[91,24962,166],{"class":566},[91,24964,24965],{"class":169},"\"\u002Fjs\u002Fsomepart1.js\"",[91,24967,16123],{"class":97},[91,24969,166],{"class":566},[91,24971,24972],{"class":169},"\"prefetch\"",[91,24974,173],{"class":101},[91,24976,24977,24979,24981,24983,24985,24988,24990,24992,24994],{"class":93,"line":121},[91,24978,178],{"class":101},[91,24980,24957],{"class":159},[91,24982,24960],{"class":97},[91,24984,166],{"class":566},[91,24986,24987],{"class":169},"\"\u002Fjs\u002Fsomepart2.js\"",[91,24989,16123],{"class":97},[91,24991,166],{"class":566},[91,24993,24972],{"class":169},[91,24995,173],{"class":101},[91,24997,24998,25000,25002],{"class":93,"line":134},[91,24999,156],{"class":101},[91,25001,13756],{"class":159},[91,25003,173],{"class":101},[16,25005,25006],{},"이런 식으로 말이다. 이렇게 되면 코드를 분산시켰음에도 처음에 다 로드를 하게 된다. 의도한대로 작동하지 않는다.",[49,25008,25010],{"id":25009},"vue-cli","Vue-Cli",[82,25012,25014],{"className":11559,"code":25013,"language":11561,"meta":87,"style":87},"module.exports = {\n    chainWebpack: config => {\n        config.plugins.delete('prefetch');\n    }\n}\n",[31,25015,25016,25028,25041,25055,25059],{"__ignoreMap":87},[91,25017,25018,25020,25022,25024,25026],{"class":93,"line":94},[91,25019,10966],{"class":108},[91,25021,1235],{"class":101},[91,25023,10971],{"class":108},[91,25025,1366],{"class":566},[91,25027,102],{"class":101},[91,25029,25030,25033,25035,25037,25039],{"class":93,"line":105},[91,25031,25032],{"class":97},"    chainWebpack",[91,25034,112],{"class":101},[91,25036,13315],{"class":1172},[91,25038,11859],{"class":566},[91,25040,102],{"class":101},[91,25042,25043,25045,25048,25050,25053],{"class":93,"line":121},[91,25044,13345],{"class":101},[91,25046,25047],{"class":97},"delete",[91,25049,795],{"class":101},[91,25051,25052],{"class":169},"'prefetch'",[91,25054,1594],{"class":101},[91,25056,25057],{"class":93,"line":134},[91,25058,1693],{"class":101},[91,25060,25061],{"class":93,"line":228},[91,25062,137],{"class":101},[16,25064,25065,25067,25068,25071,25072,25074],{},[792,25066,25009],{}," 에서는 기본적으로 사용하게끔 웹팩 설정이 되어 있다. 하지만 끄게끔 권장한다. ",[31,25069,25070],{},"vue.config.json"," 에다가 ",[31,25073,24927],{}," 플러그인을 제거하면 간단하게 기능을 끌 수 있다.",[82,25076,25078],{"className":11559,"code":25077,"language":11561,"meta":87,"style":87},"{\n    path: '\u002Fpage',\n    name: 'SomePage',\n    component: () => import(\u002F* webpackPrefetch: true *\u002F '@\u002Fsrc\u002FSomePage.vue'),\n}\n",[31,25079,25080,25084,25096,25108,25128],{"__ignoreMap":87},[91,25081,25082],{"class":93,"line":94},[91,25083,8486],{"class":101},[91,25085,25086,25089,25091,25094],{"class":93,"line":105},[91,25087,25088],{"class":97},"    path",[91,25090,112],{"class":101},[91,25092,25093],{"class":169},"'\u002Fpage'",[91,25095,7560],{"class":101},[91,25097,25098,25101,25103,25106],{"class":93,"line":121},[91,25099,25100],{"class":97},"    name",[91,25102,112],{"class":101},[91,25104,25105],{"class":169},"'SomePage'",[91,25107,7560],{"class":101},[91,25109,25110,25112,25114,25116,25118,25120,25123,25126],{"class":93,"line":134},[91,25111,24819],{"class":97},[91,25113,24747],{"class":101},[91,25115,1179],{"class":566},[91,25117,24752],{"class":97},[91,25119,795],{"class":101},[91,25121,25122],{"class":1343},"\u002F* webpackPrefetch: true *\u002F",[91,25124,25125],{"class":169}," '@\u002Fsrc\u002FSomePage.vue'",[91,25127,8037],{"class":101},[91,25129,25130],{"class":93,"line":228},[91,25131,137],{"class":101},[16,25133,25134,25135,25137],{},"단 전략에 따라서 미리 로드해야하는 코드에 대해서는 ",[792,25136,21680],{}," 의 주석으로 prefetch 를 적용할 수 있다.",[49,25139,19761],{"id":21618},[16,25141,25142],{},"Vite 의 경우 Webpack 이 아닌 Rollup 을 사용한다. 기본적인 웹팩 설정들은 사용할 수 없고, 기본적으로 동적로딩을 하는 경우 모두 항상 코드는 분산되어 빌드된다.",[16,25144,25145],{},"추가로 알아보아야 함!",[829,25147,25148],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":87,"searchDepth":105,"depth":105,"links":25150},[25151,25154,25155,25156],{"id":24653,"depth":105,"text":24654,"children":25152},[25153],{"id":24664,"depth":121,"text":24665},{"id":24927,"depth":105,"text":24928},{"id":25009,"depth":105,"text":25010},{"id":21618,"depth":105,"text":19761},"2022-08-05","Vue 프로젝트의 Code Spliting 이 어떻게 작동하는지와 webpack prefetch 옵션 에 대해서 간략한 설명.","vue-prefetch",{},"\u002Fblog\u002Fvue-prefetch",{"title":24648,"description":25158},{"loc":25161},"blog\u002Fvue-prefetch",[15042,25166,15043,24654,25167,25168,25169],"Vue2","코드분산","Prefetch","Webpack","JGIA3OHS3BVV-YkdIPt930TF6v8Pd3VxHJbRBbRH5sQ",{"id":25172,"title":25173,"body":25174,"created":29552,"description":29553,"extension":843,"filename":29554,"meta":29555,"navigation":846,"path":29556,"seo":29557,"sitemap":29558,"stem":29559,"subject":2862,"tags":29560,"updated":29552,"volume":4441,"__hash__":29563},"blog\u002Fblog\u002Fvue2-reactivity.md","Vue2, Vue3 Reactivity 비교 - Vue2 편",{"type":8,"value":25175,"toc":29538},[25176,25180,25183,25186,25189,25193,25198,25211,25215,25218,25225,25790,25810,25853,25858,25861,25888,25892,26066,26086,26450,26453,26464,26476,26495,26504,26741,26750,26760,26988,26998,27625,27631,27652,27664,27684,27687,27697,27945,27955,27959,27967,27971,28013,28024,28053,28059,28063,28084,28144,28147,28151,28154,28162,28241,28244,28258,28283,28289,28293,28393,28396,28419,28422,28427,28430,28435,28438,28443,28453,28587,28590,28594,28785,28788,28951,28954,28960,28966,28972,29075,29085,29088,29092,29099,29228,29242,29246,29249,29400,29411,29532,29535],[49,25177,25179],{"id":25178},"반응성","반응성?",[16,25181,25182],{},"Vue 프레임워크로 컴포넌트를 작업하다보면, 데이터를 바꿨을 뿐인데 화면에 바뀐 데이터를 바로바로 반영하는 것이 그저 익숙할 것이다. 그런데 Vue를 비롯한 프론트엔드 프레임워크를 사용하지 않을 때, 데이터만 바꿨다고 화면에 바로 뿌려줬는가? 아니다. 개발자가 직접 DOM을 수정해서 보여주어야 했다. 아니면 서버에서 바뀐 데이터로 렌더링한 결과물을 새로 받아야 했다.",[16,25184,25185],{},"Vue에서는 컴포넌트의 데이터 정보만 바꾸면 화면에 알아서 적용된다. 이를 반응성이라 한다. 컴포넌트의 데이터를 관찰하고 있다가 변경이 감지되면 Virtual DOM을 다시 컴파일한 후 만들어진 트리를 실제 DOM에 적용시킨다.",[16,25187,25188],{},"개발자는 이러한 내부적 로직은 알 필요 없이 데이터에 집중하는 개발을 하도록 Vue 는 유도하고 있다. 하지만 개발자는 내가 사용하는 도구; 여기서는 프레임워크가 어떻게 작동하는 녀석인지 알아야 입맛대로 작업할 수 있고, 문제 해결을 할 수 있다. 처음엔 쉬워도 언젠가 구조적 문제에 직면하는 게 개발자 삶이다.",[49,25190,25192],{"id":25191},"vue2에서는-반응성을-어떻게-구현했나","Vue2에서는 반응성을 어떻게 구현했나.",[16,25194,25195],{},[19,25196],{"alt":21,"src":25197},"\u002Fblog\u002Fimg\u002FVue2-Reactivity\u002FUntitled.png",[16,25199,25200,25201,22871,25204,25207,25208,25210],{},"Vue의 모든 컴포넌트는 Watcher 를 갖고 있다. 또 data option에 등록한 데이터는 자동으로 ",[31,25202,25203],{},"getter",[31,25205,25206],{},"setter"," 를 주입받는다. 데이터의 ",[31,25209,25206],{}," 가 실행되는 순간, 컴포넌트의 Watcher 가 이를 감지하고, 렌더 함수를 발동시킨다. 그로 인해 Virtual DOM을 다시 구성하게 되고, 이것이 화면에 나타나는 것이다. data 뿐 아니라 computed 도 마찬가지다. data 의 변경 감지 → computed 로직 실행 → computed 변경 감지 → 렌더링의 순서로 이루어진다.",[757,25212,25214],{"id":25213},"gettersetter-주입","Getter\u002FSetter 주입",[16,25216,25217],{},"Vue의 코드를 조금 살펴보면서 반응형을 어떻게 구현했는지 간단하게 알아보자.",[16,25219,25220,25221,25224],{},"Vue의 데이터에 주입하는 getter\u002Fsetter은 ",[31,25222,25223],{},"defineReactive"," 라는 함수에서 주입한다.",[82,25226,25228],{"className":10952,"code":25227,"language":10954,"meta":87,"style":87},"Object.defineProperty(obj, key, {\n  enumerable: true,\n  configurable: true,\n  get: function reactiveGetter() {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n          if (process.env.NODE_ENV !== 'production') {\n              dep.depend({\n                  target: obj,\n                  type: \"get\" \u002F* TrackOpTypes.GET *\u002F,\n                  key: key\n              });\n          }\n          else {\n              dep.depend();\n          }\n          if (childOb) {\n              childOb.dep.depend();\n              if (isArray(value)) {\n                  dependArray(value);\n              }\n          }\n      }\n      return isRef(value) && !shallow ? value.value : value;\n  },\n  set: function reactiveSetter(newVal) {\n      var value = getter ? getter.call(obj) : val;\n      if (!hasChanged(value, newVal)) {\n          return;\n      }\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n          customSetter();\n      }\n      if (setter) {\n          setter.call(obj, newVal);\n      }\n      else if (getter) {\n          \u002F\u002F #7981: for accessor properties without setter\n          return;\n      }\n      else if (isRef(value) && !isRef(newVal)) {\n          value.value = newVal;\n          return;\n      }\n      else {\n          val = newVal;\n      }\n      childOb = !shallow && observe(newVal, false, mock);\n      if (process.env.NODE_ENV !== 'production') {\n          dep.notify({\n              type: \"set\" \u002F* TriggerOpTypes.SET *\u002F,\n              target: obj,\n              key: key,\n              newValue: newVal,\n              oldValue: value\n          });\n      }\n      else {\n          dep.notify();\n      }\n  }\n});\n",[31,25229,25230,25240,25249,25258,25271,25299,25306,25322,25332,25337,25350,25355,25360,25365,25372,25380,25384,25391,25400,25413,25420,25425,25429,25433,25458,25462,25481,25503,25517,25523,25527,25545,25552,25556,25563,25573,25577,25587,25592,25598,25602,25624,25634,25640,25644,25650,25659,25663,25687,25701,25711,25724,25730,25736,25742,25748,25754,25759,25766,25775,25780,25785],{"__ignoreMap":87},[91,25231,25232,25234,25237],{"class":93,"line":94},[91,25233,17283],{"class":101},[91,25235,25236],{"class":97},"defineProperty",[91,25238,25239],{"class":101},"(obj, key, {\n",[91,25241,25242,25245,25247],{"class":93,"line":105},[91,25243,25244],{"class":101},"  enumerable: ",[91,25246,7557],{"class":108},[91,25248,7560],{"class":101},[91,25250,25251,25254,25256],{"class":93,"line":121},[91,25252,25253],{"class":101},"  configurable: ",[91,25255,7557],{"class":108},[91,25257,7560],{"class":101},[91,25259,25260,25262,25264,25266,25269],{"class":93,"line":134},[91,25261,11756],{"class":97},[91,25263,112],{"class":101},[91,25265,7471],{"class":566},[91,25267,25268],{"class":97}," reactiveGetter",[91,25270,2007],{"class":101},[91,25272,25273,25276,25279,25281,25284,25286,25289,25291,25294,25296],{"class":93,"line":228},[91,25274,25275],{"class":566},"      var",[91,25277,25278],{"class":101}," value ",[91,25280,166],{"class":566},[91,25282,25283],{"class":101}," getter ",[91,25285,8372],{"class":566},[91,25287,25288],{"class":101}," getter.",[91,25290,17399],{"class":97},[91,25292,25293],{"class":101},"(obj) ",[91,25295,1208],{"class":566},[91,25297,25298],{"class":101}," val;\n",[91,25300,25301,25303],{"class":93,"line":250},[91,25302,13326],{"class":566},[91,25304,25305],{"class":101}," (Dep.target) {\n",[91,25307,25308,25311,25313,25315,25318,25320],{"class":93,"line":260},[91,25309,25310],{"class":566},"          if",[91,25312,13329],{"class":101},[91,25314,13332],{"class":108},[91,25316,25317],{"class":566}," !==",[91,25319,13338],{"class":169},[91,25321,3866],{"class":101},[91,25323,25324,25327,25330],{"class":93,"line":274},[91,25325,25326],{"class":101},"              dep.",[91,25328,25329],{"class":97},"depend",[91,25331,7549],{"class":101},[91,25333,25334],{"class":93,"line":284},[91,25335,25336],{"class":101},"                  target: obj,\n",[91,25338,25339,25342,25345,25348],{"class":93,"line":299},[91,25340,25341],{"class":101},"                  type: ",[91,25343,25344],{"class":169},"\"get\"",[91,25346,25347],{"class":1343}," \u002F* TrackOpTypes.GET *\u002F",[91,25349,7560],{"class":101},[91,25351,25352],{"class":93,"line":319},[91,25353,25354],{"class":101},"                  key: key\n",[91,25356,25357],{"class":93,"line":334},[91,25358,25359],{"class":101},"              });\n",[91,25361,25362],{"class":93,"line":355},[91,25363,25364],{"class":101},"          }\n",[91,25366,25367,25370],{"class":93,"line":364},[91,25368,25369],{"class":566},"          else",[91,25371,102],{"class":101},[91,25373,25374,25376,25378],{"class":93,"line":378},[91,25375,25326],{"class":101},[91,25377,25329],{"class":97},[91,25379,2030],{"class":101},[91,25381,25382],{"class":93,"line":387},[91,25383,25364],{"class":101},[91,25385,25386,25388],{"class":93,"line":402},[91,25387,25310],{"class":566},[91,25389,25390],{"class":101}," (childOb) {\n",[91,25392,25393,25396,25398],{"class":93,"line":422},[91,25394,25395],{"class":101},"              childOb.dep.",[91,25397,25329],{"class":97},[91,25399,2030],{"class":101},[91,25401,25402,25405,25407,25410],{"class":93,"line":438},[91,25403,25404],{"class":566},"              if",[91,25406,2662],{"class":101},[91,25408,25409],{"class":97},"isArray",[91,25411,25412],{"class":101},"(value)) {\n",[91,25414,25415,25418],{"class":93,"line":458},[91,25416,25417],{"class":97},"                  dependArray",[91,25419,17413],{"class":101},[91,25421,25422],{"class":93,"line":467},[91,25423,25424],{"class":101},"              }\n",[91,25426,25427],{"class":93,"line":481},[91,25428,25364],{"class":101},[91,25430,25431],{"class":93,"line":490},[91,25432,10095],{"class":101},[91,25434,25435,25437,25440,25442,25444,25446,25449,25451,25454,25456],{"class":93,"line":3310},[91,25436,11825],{"class":566},[91,25438,25439],{"class":97}," isRef",[91,25441,8369],{"class":101},[91,25443,5232],{"class":566},[91,25445,7832],{"class":566},[91,25447,25448],{"class":101},"shallow ",[91,25450,8372],{"class":566},[91,25452,25453],{"class":101}," value.value ",[91,25455,1208],{"class":566},[91,25457,8384],{"class":101},[91,25459,25460],{"class":93,"line":3315},[91,25461,10581],{"class":101},[91,25463,25464,25467,25469,25471,25474,25476,25479],{"class":93,"line":3321},[91,25465,25466],{"class":97},"  set",[91,25468,112],{"class":101},[91,25470,7471],{"class":566},[91,25472,25473],{"class":97}," reactiveSetter",[91,25475,795],{"class":101},[91,25477,25478],{"class":1172},"newVal",[91,25480,3866],{"class":101},[91,25482,25483,25485,25487,25489,25491,25493,25495,25497,25499,25501],{"class":93,"line":3327},[91,25484,25275],{"class":566},[91,25486,25278],{"class":101},[91,25488,166],{"class":566},[91,25490,25283],{"class":101},[91,25492,8372],{"class":566},[91,25494,25288],{"class":101},[91,25496,17399],{"class":97},[91,25498,25293],{"class":101},[91,25500,1208],{"class":566},[91,25502,25298],{"class":101},[91,25504,25505,25507,25509,25511,25514],{"class":93,"line":3333},[91,25506,13326],{"class":566},[91,25508,2662],{"class":101},[91,25510,2665],{"class":566},[91,25512,25513],{"class":97},"hasChanged",[91,25515,25516],{"class":101},"(value, newVal)) {\n",[91,25518,25519,25521],{"class":93,"line":3338},[91,25520,21275],{"class":566},[91,25522,118],{"class":101},[91,25524,25525],{"class":93,"line":3343},[91,25526,10095],{"class":101},[91,25528,25529,25531,25533,25535,25537,25539,25542],{"class":93,"line":7882},[91,25530,13326],{"class":566},[91,25532,13329],{"class":101},[91,25534,13332],{"class":108},[91,25536,25317],{"class":566},[91,25538,13338],{"class":169},[91,25540,25541],{"class":566}," &&",[91,25543,25544],{"class":101}," customSetter) {\n",[91,25546,25547,25550],{"class":93,"line":7887},[91,25548,25549],{"class":97},"          customSetter",[91,25551,2030],{"class":101},[91,25553,25554],{"class":93,"line":7892},[91,25555,10095],{"class":101},[91,25557,25558,25560],{"class":93,"line":7906},[91,25559,13326],{"class":566},[91,25561,25562],{"class":101}," (setter) {\n",[91,25564,25565,25568,25570],{"class":93,"line":7922},[91,25566,25567],{"class":101},"          setter.",[91,25569,17399],{"class":97},[91,25571,25572],{"class":101},"(obj, newVal);\n",[91,25574,25575],{"class":93,"line":7927},[91,25576,10095],{"class":101},[91,25578,25579,25582,25584],{"class":93,"line":7967},[91,25580,25581],{"class":566},"      else",[91,25583,19420],{"class":566},[91,25585,25586],{"class":101}," (getter) {\n",[91,25588,25589],{"class":93,"line":7983},[91,25590,25591],{"class":1343},"          \u002F\u002F #7981: for accessor properties without setter\n",[91,25593,25594,25596],{"class":93,"line":7988},[91,25595,21275],{"class":566},[91,25597,118],{"class":101},[91,25599,25600],{"class":93,"line":7993},[91,25601,10095],{"class":101},[91,25603,25604,25606,25608,25610,25613,25615,25617,25619,25621],{"class":93,"line":8000},[91,25605,25581],{"class":566},[91,25607,19420],{"class":566},[91,25609,2662],{"class":101},[91,25611,25612],{"class":97},"isRef",[91,25614,8369],{"class":101},[91,25616,5232],{"class":566},[91,25618,7832],{"class":566},[91,25620,25612],{"class":97},[91,25622,25623],{"class":101},"(newVal)) {\n",[91,25625,25626,25629,25631],{"class":93,"line":8040},[91,25627,25628],{"class":101},"          value.value ",[91,25630,166],{"class":566},[91,25632,25633],{"class":101}," newVal;\n",[91,25635,25636,25638],{"class":93,"line":8046},[91,25637,21275],{"class":566},[91,25639,118],{"class":101},[91,25641,25642],{"class":93,"line":8080},[91,25643,10095],{"class":101},[91,25645,25646,25648],{"class":93,"line":8086},[91,25647,25581],{"class":566},[91,25649,102],{"class":101},[91,25651,25652,25655,25657],{"class":93,"line":12052},[91,25653,25654],{"class":101},"          val ",[91,25656,166],{"class":566},[91,25658,25633],{"class":101},[91,25660,25661],{"class":93,"line":12070},[91,25662,10095],{"class":101},[91,25664,25665,25668,25670,25672,25674,25676,25679,25682,25684],{"class":93,"line":12087},[91,25666,25667],{"class":101},"      childOb ",[91,25669,166],{"class":566},[91,25671,7832],{"class":566},[91,25673,25448],{"class":101},[91,25675,5232],{"class":566},[91,25677,25678],{"class":97}," observe",[91,25680,25681],{"class":101},"(newVal, ",[91,25683,7780],{"class":108},[91,25685,25686],{"class":101},", mock);\n",[91,25688,25689,25691,25693,25695,25697,25699],{"class":93,"line":12092},[91,25690,13326],{"class":566},[91,25692,13329],{"class":101},[91,25694,13332],{"class":108},[91,25696,25317],{"class":566},[91,25698,13338],{"class":169},[91,25700,3866],{"class":101},[91,25702,25703,25706,25709],{"class":93,"line":12097},[91,25704,25705],{"class":101},"          dep.",[91,25707,25708],{"class":97},"notify",[91,25710,7549],{"class":101},[91,25712,25713,25716,25719,25722],{"class":93,"line":12102},[91,25714,25715],{"class":101},"              type: ",[91,25717,25718],{"class":169},"\"set\"",[91,25720,25721],{"class":1343}," \u002F* TriggerOpTypes.SET *\u002F",[91,25723,7560],{"class":101},[91,25725,25727],{"class":93,"line":25726},52,[91,25728,25729],{"class":101},"              target: obj,\n",[91,25731,25733],{"class":93,"line":25732},53,[91,25734,25735],{"class":101},"              key: key,\n",[91,25737,25739],{"class":93,"line":25738},54,[91,25740,25741],{"class":101},"              newValue: newVal,\n",[91,25743,25745],{"class":93,"line":25744},55,[91,25746,25747],{"class":101},"              oldValue: value\n",[91,25749,25751],{"class":93,"line":25750},56,[91,25752,25753],{"class":101},"          });\n",[91,25755,25757],{"class":93,"line":25756},57,[91,25758,10095],{"class":101},[91,25760,25762,25764],{"class":93,"line":25761},58,[91,25763,25581],{"class":566},[91,25765,102],{"class":101},[91,25767,25769,25771,25773],{"class":93,"line":25768},59,[91,25770,25705],{"class":101},[91,25772,25708],{"class":97},[91,25774,2030],{"class":101},[91,25776,25778],{"class":93,"line":25777},60,[91,25779,10095],{"class":101},[91,25781,25783],{"class":93,"line":25782},61,[91,25784,1698],{"class":101},[91,25786,25788],{"class":93,"line":25787},62,[91,25789,1303],{"class":101},[16,25791,25792,25793,14382,25796,25799,25800,14382,25802,25805,25806,25809],{},"해당 함수는 객체의 속성마다 실행되는데, 그 속성에 대한 ",[31,25794,25795],{},"enumerable",[31,25797,25798],{},"configurable"," 과 ",[31,25801,5938],{},[31,25803,25804],{},"set"," 을 ",[31,25807,25808],{},"Object.defineProperty"," 로 추가한다. 반응형인 대상에 변경이 일어나면 아래 과정을 거친다.",[4530,25811,25812,25817,25820,25823,25829,25835,25842],{},[27,25813,25814,25816],{},[31,25815,25804],{}," 함수가 실행된다. (observe 혹은 proxy 를 통해서)",[27,25818,25819],{},"새로운 데이터로 변경이 되었을 때만 진행한다.",[27,25821,25822],{},"새로운 데이터로 값을 바꾼다.",[27,25824,25825,25828],{},[31,25826,25827],{},"observe"," 함수로 새로운 데이터에 대한 observe를 할당한다.",[27,25830,25831,25834],{},[31,25832,25833],{},"dep.notify"," 가 발생하고, 렌더링을 트리깅 한다.",[27,25836,25837,25838,25841],{},"Watcher 가 queue 에 추가하고, ",[31,25839,25840],{},"flushSchedulerQueue"," 를 통해 queue 를 플러시한다.",[27,25843,25844,25845,25848,25849,25852],{},"queue 에 있는 모든 watcher의 ",[31,25846,25847],{},"run"," 함수를 호출하고 vue 인스턴스들의 ",[31,25850,25851],{},"updated"," 훅을 호출한다.",[16,25854,25855],{},[19,25856],{"alt":21,"src":25857},"\u002Fblog\u002Fimg\u002FVue2-Reactivity\u002FUntitled1.png",[16,25859,25860],{},"위 함수가 실행되는 부분은 다음과 같다.",[24,25862,25863,25866,25869,25872,25875,25882,25885],{},[27,25864,25865],{},"컴포넌트의 props 를 초기화할 때, props 데이터도 반응형이다. (initProps$1)",[27,25867,25868],{},"컴포넌트의 inject 를 초기화할 때 (initInjection)",[27,25870,25871],{},"컴포넌트의 data 를 초기화할 때(initData)",[27,25873,25874],{},"watch 를 등록할 때,",[27,25876,25877,25878,25881],{},"set 등으로 인한 Observer 할당시(",[792,25879,25880],{},"ob",") (observe)",[27,25883,25884],{},"vuex state 초기화 + mutate (initData, set)",[27,25886,25887],{},"…",[757,25889,25891],{"id":25890},"watcher","Watcher",[82,25893,25895],{"className":10952,"code":25894,"language":10954,"meta":87,"style":87},"var Watcher = \u002F** @class *\u002F (function () {\n    Watcher.prototype.addDep = function (dep) {};\n    Watcher.prototype.update = function () {\n        if (this.lazy) {\n            this.dirty = true;\n        }\n        else if (this.sync) {\n            this.run();\n        }\n        else {\n            queueWatcher(this);\n        }\n    };\n\u002F\u002F ...\n  return Watcher;\n}());\n",[31,25896,25897,25922,25948,25967,25978,25992,25996,26010,26020,26024,26030,26041,26045,26049,26054,26061],{"__ignoreMap":87},[91,25898,25899,25901,25904,25906,25909,25912,25915,25917,25919],{"class":93,"line":94},[91,25900,5626],{"class":566},[91,25902,25903],{"class":101}," Watcher ",[91,25905,166],{"class":566},[91,25907,25908],{"class":1343}," \u002F** ",[91,25910,25911],{"class":566},"@class",[91,25913,25914],{"class":1343}," *\u002F",[91,25916,2662],{"class":101},[91,25918,7471],{"class":566},[91,25920,25921],{"class":101}," () {\n",[91,25923,25924,25927,25929,25931,25933,25936,25938,25940,25942,25945],{"class":93,"line":105},[91,25925,25926],{"class":108},"    Watcher",[91,25928,1235],{"class":101},[91,25930,17514],{"class":108},[91,25932,1235],{"class":101},[91,25934,25935],{"class":97},"addDep",[91,25937,1366],{"class":566},[91,25939,2001],{"class":566},[91,25941,2662],{"class":101},[91,25943,25944],{"class":1172},"dep",[91,25946,25947],{"class":101},") {};\n",[91,25949,25950,25952,25954,25956,25958,25961,25963,25965],{"class":93,"line":121},[91,25951,25926],{"class":108},[91,25953,1235],{"class":101},[91,25955,17514],{"class":108},[91,25957,1235],{"class":101},[91,25959,25960],{"class":97},"update",[91,25962,1366],{"class":566},[91,25964,2001],{"class":566},[91,25966,25921],{"class":101},[91,25968,25969,25971,25973,25975],{"class":93,"line":134},[91,25970,10068],{"class":566},[91,25972,2662],{"class":101},[91,25974,11782],{"class":108},[91,25976,25977],{"class":101},".lazy) {\n",[91,25979,25980,25983,25986,25988,25990],{"class":93,"line":228},[91,25981,25982],{"class":108},"            this",[91,25984,25985],{"class":101},".dirty ",[91,25987,166],{"class":566},[91,25989,20228],{"class":108},[91,25991,118],{"class":101},[91,25993,25994],{"class":93,"line":250},[91,25995,3307],{"class":101},[91,25997,25998,26001,26003,26005,26007],{"class":93,"line":260},[91,25999,26000],{"class":566},"        else",[91,26002,19420],{"class":566},[91,26004,2662],{"class":101},[91,26006,11782],{"class":108},[91,26008,26009],{"class":101},".sync) {\n",[91,26011,26012,26014,26016,26018],{"class":93,"line":274},[91,26013,25982],{"class":108},[91,26015,1235],{"class":101},[91,26017,25847],{"class":97},[91,26019,2030],{"class":101},[91,26021,26022],{"class":93,"line":284},[91,26023,3307],{"class":101},[91,26025,26026,26028],{"class":93,"line":299},[91,26027,26000],{"class":566},[91,26029,102],{"class":101},[91,26031,26032,26035,26037,26039],{"class":93,"line":319},[91,26033,26034],{"class":97},"            queueWatcher",[91,26036,795],{"class":101},[91,26038,11782],{"class":108},[91,26040,1594],{"class":101},[91,26042,26043],{"class":93,"line":334},[91,26044,3307],{"class":101},[91,26046,26047],{"class":93,"line":355},[91,26048,19566],{"class":101},[91,26050,26051],{"class":93,"line":364},[91,26052,26053],{"class":1343},"\u002F\u002F ...\n",[91,26055,26056,26058],{"class":93,"line":378},[91,26057,2695],{"class":566},[91,26059,26060],{"class":101}," Watcher;\n",[91,26062,26063],{"class":93,"line":387},[91,26064,26065],{"class":101},"}());\n",[16,26067,26068,26069,26071,26072,26074,26075,26078,26079,26082,26083,26085],{},"우선 코드는 많은 부분을 생략했다. Watcher 의 경우 ",[31,26070,25804],{}," 발생 시 notify 를 전달할 Dependency 들을 관리한다. ",[31,26073,25708],{}," 발생 시  ",[31,26076,26077],{},"queueWatcher"," 를 통해 큐에 자기 자신을 담아서 실행을 기다린다. Watcher가 ",[31,26080,26081],{},"sync"," 속성을 가졌다면 큐에 넣어서 비동기로 작동하지 않고, 동기적으로 바로 ",[31,26084,25847],{}," 을 실행한다.",[82,26087,26089],{"className":10952,"code":26088,"language":10954,"meta":87,"style":87},"function flushSchedulerQueue() {\n    currentFlushTimestamp = getNow();\n    flushing = true;\n    var watcher, id;\n    queue.sort(function (a, b) { return a.id - b.id; });\n    for (index$1 = 0; index$1 \u003C queue.length; index$1++) {\n        watcher = queue[index$1];\n        if (watcher.before) {\n            watcher.before();\n        }\n        id = watcher.id;\n        has[id] = null;\n        watcher.run();\n        if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n            circular[id] = (circular[id] || 0) + 1;\n            if (circular[id] > MAX_UPDATE_COUNT) {\n                warn$2('You may have an infinite update loop ' +\n                    (watcher.user\n                        ? \"in watcher with expression \\\"\".concat(watcher.expression, \"\\\"\")\n                        : \"in a component render function.\"), watcher.vm);\n                break;\n            }\n        }\n    }\n    var activatedQueue = activatedChildren.slice();\n    var updatedQueue = queue.slice();\n    resetSchedulerState();\n    callActivatedHooks(activatedQueue);\n    callUpdatedHooks(updatedQueue);\n}\n",[31,26090,26091,26100,26112,26123,26131,26164,26193,26203,26210,26220,26224,26234,26245,26254,26278,26300,26314,26327,26332,26361,26372,26379,26384,26388,26392,26408,26423,26430,26438,26446],{"__ignoreMap":87},[91,26092,26093,26095,26098],{"class":93,"line":94},[91,26094,7471],{"class":566},[91,26096,26097],{"class":97}," flushSchedulerQueue",[91,26099,2007],{"class":101},[91,26101,26102,26105,26107,26110],{"class":93,"line":105},[91,26103,26104],{"class":101},"    currentFlushTimestamp ",[91,26106,166],{"class":566},[91,26108,26109],{"class":97}," getNow",[91,26111,2030],{"class":101},[91,26113,26114,26117,26119,26121],{"class":93,"line":121},[91,26115,26116],{"class":101},"    flushing ",[91,26118,166],{"class":566},[91,26120,20228],{"class":108},[91,26122,118],{"class":101},[91,26124,26125,26128],{"class":93,"line":134},[91,26126,26127],{"class":566},"    var",[91,26129,26130],{"class":101}," watcher, id;\n",[91,26132,26133,26136,26139,26141,26143,26145,26147,26149,26152,26154,26156,26159,26161],{"class":93,"line":228},[91,26134,26135],{"class":101},"    queue.",[91,26137,26138],{"class":97},"sort",[91,26140,795],{"class":101},[91,26142,7471],{"class":566},[91,26144,2662],{"class":101},[91,26146,4306],{"class":1172},[91,26148,64],{"class":101},[91,26150,26151],{"class":1172},"b",[91,26153,19432],{"class":101},[91,26155,12966],{"class":566},[91,26157,26158],{"class":101}," a.id ",[91,26160,8409],{"class":566},[91,26162,26163],{"class":101}," b.id; });\n",[91,26165,26166,26169,26172,26174,26176,26179,26181,26184,26186,26189,26191],{"class":93,"line":250},[91,26167,26168],{"class":566},"    for",[91,26170,26171],{"class":101}," (index$1 ",[91,26173,166],{"class":566},[91,26175,11817],{"class":108},[91,26177,26178],{"class":101},"; index$1 ",[91,26180,156],{"class":566},[91,26182,26183],{"class":101}," queue.",[91,26185,11811],{"class":108},[91,26187,26188],{"class":101},"; index$1",[91,26190,17243],{"class":566},[91,26192,3866],{"class":101},[91,26194,26195,26198,26200],{"class":93,"line":260},[91,26196,26197],{"class":101},"        watcher ",[91,26199,166],{"class":566},[91,26201,26202],{"class":101}," queue[index$1];\n",[91,26204,26205,26207],{"class":93,"line":274},[91,26206,10068],{"class":566},[91,26208,26209],{"class":101}," (watcher.before) {\n",[91,26211,26212,26215,26218],{"class":93,"line":284},[91,26213,26214],{"class":101},"            watcher.",[91,26216,26217],{"class":97},"before",[91,26219,2030],{"class":101},[91,26221,26222],{"class":93,"line":299},[91,26223,3307],{"class":101},[91,26225,26226,26229,26231],{"class":93,"line":319},[91,26227,26228],{"class":101},"        id ",[91,26230,166],{"class":566},[91,26232,26233],{"class":101}," watcher.id;\n",[91,26235,26236,26239,26241,26243],{"class":93,"line":334},[91,26237,26238],{"class":101},"        has[id] ",[91,26240,166],{"class":566},[91,26242,1363],{"class":108},[91,26244,118],{"class":101},[91,26246,26247,26250,26252],{"class":93,"line":355},[91,26248,26249],{"class":101},"        watcher.",[91,26251,25847],{"class":97},[91,26253,2030],{"class":101},[91,26255,26256,26258,26260,26262,26264,26266,26268,26271,26274,26276],{"class":93,"line":364},[91,26257,10068],{"class":566},[91,26259,13329],{"class":101},[91,26261,13332],{"class":108},[91,26263,25317],{"class":566},[91,26265,13338],{"class":169},[91,26267,25541],{"class":566},[91,26269,26270],{"class":101}," has[id] ",[91,26272,26273],{"class":566},"!=",[91,26275,1363],{"class":108},[91,26277,3866],{"class":101},[91,26279,26280,26283,26285,26288,26290,26292,26294,26296,26298],{"class":93,"line":378},[91,26281,26282],{"class":101},"            circular[id] ",[91,26284,166],{"class":566},[91,26286,26287],{"class":101}," (circular[id] ",[91,26289,7829],{"class":566},[91,26291,11817],{"class":108},[91,26293,1176],{"class":101},[91,26295,8406],{"class":566},[91,26297,6594],{"class":108},[91,26299,118],{"class":101},[91,26301,26302,26305,26307,26309,26312],{"class":93,"line":387},[91,26303,26304],{"class":566},"            if",[91,26306,26287],{"class":101},[91,26308,7959],{"class":566},[91,26310,26311],{"class":108}," MAX_UPDATE_COUNT",[91,26313,3866],{"class":101},[91,26315,26316,26319,26321,26324],{"class":93,"line":402},[91,26317,26318],{"class":97},"                warn$2",[91,26320,795],{"class":101},[91,26322,26323],{"class":169},"'You may have an infinite update loop '",[91,26325,26326],{"class":566}," +\n",[91,26328,26329],{"class":93,"line":422},[91,26330,26331],{"class":101},"                    (watcher.user\n",[91,26333,26334,26337,26340,26343,26345,26347,26350,26353,26355,26357,26359],{"class":93,"line":438},[91,26335,26336],{"class":566},"                        ?",[91,26338,26339],{"class":169}," \"in watcher with expression ",[91,26341,26342],{"class":108},"\\\"",[91,26344,2139],{"class":169},[91,26346,1235],{"class":101},[91,26348,26349],{"class":97},"concat",[91,26351,26352],{"class":101},"(watcher.expression, ",[91,26354,2139],{"class":169},[91,26356,26342],{"class":108},[91,26358,2139],{"class":169},[91,26360,3487],{"class":101},[91,26362,26363,26366,26369],{"class":93,"line":458},[91,26364,26365],{"class":566},"                        :",[91,26367,26368],{"class":169}," \"in a component render function.\"",[91,26370,26371],{"class":101},"), watcher.vm);\n",[91,26373,26374,26377],{"class":93,"line":467},[91,26375,26376],{"class":566},"                break",[91,26378,118],{"class":101},[91,26380,26381],{"class":93,"line":481},[91,26382,26383],{"class":101},"            }\n",[91,26385,26386],{"class":93,"line":490},[91,26387,3307],{"class":101},[91,26389,26390],{"class":93,"line":3310},[91,26391,1693],{"class":101},[91,26393,26394,26396,26399,26401,26404,26406],{"class":93,"line":3315},[91,26395,26127],{"class":566},[91,26397,26398],{"class":101}," activatedQueue ",[91,26400,166],{"class":566},[91,26402,26403],{"class":101}," activatedChildren.",[91,26405,8026],{"class":97},[91,26407,2030],{"class":101},[91,26409,26410,26412,26415,26417,26419,26421],{"class":93,"line":3321},[91,26411,26127],{"class":566},[91,26413,26414],{"class":101}," updatedQueue ",[91,26416,166],{"class":566},[91,26418,26183],{"class":101},[91,26420,8026],{"class":97},[91,26422,2030],{"class":101},[91,26424,26425,26428],{"class":93,"line":3327},[91,26426,26427],{"class":97},"    resetSchedulerState",[91,26429,2030],{"class":101},[91,26431,26432,26435],{"class":93,"line":3333},[91,26433,26434],{"class":97},"    callActivatedHooks",[91,26436,26437],{"class":101},"(activatedQueue);\n",[91,26439,26440,26443],{"class":93,"line":3338},[91,26441,26442],{"class":97},"    callUpdatedHooks",[91,26444,26445],{"class":101},"(updatedQueue);\n",[91,26447,26448],{"class":93,"line":3343},[91,26449,137],{"class":101},[16,26451,26452],{},"여기서 큐의 Watcher 들을 실행하기 전에 정렬을 하는데, 이유는 3가지가 있다.",[4530,26454,26455,26458,26461],{},[27,26456,26457],{},"컴포넌트들이 부모부터 자식 순서로 업데이트되도록 한다. (부모가 자식보다 전에 만들어지기 때문에)",[27,26459,26460],{},"컴포넌트의 Watcher들은 render watcher 의 Watcher보다 먼저 업데이트한다.",[27,26462,26463],{},"부모 컴포넌트의 watcher 가 실행될 때 자식 컴포넌트가 파괴되었다면 그 watcher 들은 스킵될 수 있다.",[16,26465,26466,26467,25799,26469,26471,26472,26475],{},"queue 에 있는 watcher를 순회하며 ",[31,26468,26217],{},[31,26470,25847],{}," 을 차례대로 호출한다. 여기서 before 은 ",[31,26473,26474],{},"beforeUpdated"," 훅을 발생시킨다.",[16,26477,26478,26479,26482,26483,26486,26487,26490,26491,26494],{},"모두 완료되면 ",[31,26480,26481],{},"activateChildComponent"," 을 통해 ",[31,26484,26485],{},"_inactive"," 를 켜고 ",[792,26488,26489],{},"activated"," 훅을 발생시킨다. 대상 컴포넌트는 ",[31,26492,26493],{},"keepAlive"," 속성을 가진 컴포넌트들이다.",[16,26496,26497,26498,26501,26502,26475],{},"그 다음으로는 ",[31,26499,26500],{},"callUpdatedHooks"," 를 통해 컴포넌트의 ",[31,26503,25851],{},[82,26505,26507],{"className":10952,"code":26506,"language":10954,"meta":87,"style":87},"Watcher.prototype.run = function () {\n    if (this.active) {\n    var value = this.get();\n    if (value !== this.value ||\n      \u002F\u002F Deep watchers and watchers on Object\u002FArrays should fire even\n      \u002F\u002F when the value is the same, because the value may\n      \u002F\u002F have mutated.\n      isObject(value) || this.deep) {\n      \u002F\u002F set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        var info = \"callback for watcher \\\"\".concat(this.expression, \"\\\"\");\n        invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n      }\n      else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n    }\n};\n",[31,26508,26509,26527,26538,26554,26571,26576,26581,26586,26600,26605,26619,26629,26640,26676,26698,26702,26708,26725,26729,26733,26737],{"__ignoreMap":87},[91,26510,26511,26513,26515,26517,26519,26521,26523,26525],{"class":93,"line":94},[91,26512,25891],{"class":108},[91,26514,1235],{"class":101},[91,26516,17514],{"class":108},[91,26518,1235],{"class":101},[91,26520,25847],{"class":97},[91,26522,1366],{"class":566},[91,26524,2001],{"class":566},[91,26526,25921],{"class":101},[91,26528,26529,26531,26533,26535],{"class":93,"line":105},[91,26530,8218],{"class":566},[91,26532,2662],{"class":101},[91,26534,11782],{"class":108},[91,26536,26537],{"class":101},".active) {\n",[91,26539,26540,26542,26544,26546,26548,26550,26552],{"class":93,"line":121},[91,26541,26127],{"class":566},[91,26543,25278],{"class":101},[91,26545,166],{"class":566},[91,26547,11795],{"class":108},[91,26549,1235],{"class":101},[91,26551,5938],{"class":97},[91,26553,2030],{"class":101},[91,26555,26556,26558,26561,26563,26565,26568],{"class":93,"line":134},[91,26557,8218],{"class":566},[91,26559,26560],{"class":101}," (value ",[91,26562,9356],{"class":566},[91,26564,11795],{"class":108},[91,26566,26567],{"class":101},".value ",[91,26569,26570],{"class":566},"||\n",[91,26572,26573],{"class":93,"line":228},[91,26574,26575],{"class":1343},"      \u002F\u002F Deep watchers and watchers on Object\u002FArrays should fire even\n",[91,26577,26578],{"class":93,"line":250},[91,26579,26580],{"class":1343},"      \u002F\u002F when the value is the same, because the value may\n",[91,26582,26583],{"class":93,"line":260},[91,26584,26585],{"class":1343},"      \u002F\u002F have mutated.\n",[91,26587,26588,26591,26593,26595,26597],{"class":93,"line":274},[91,26589,26590],{"class":97},"      isObject",[91,26592,8369],{"class":101},[91,26594,7829],{"class":566},[91,26596,11795],{"class":108},[91,26598,26599],{"class":101},".deep) {\n",[91,26601,26602],{"class":93,"line":284},[91,26603,26604],{"class":1343},"      \u002F\u002F set new value\n",[91,26606,26607,26609,26612,26614,26616],{"class":93,"line":299},[91,26608,25275],{"class":566},[91,26610,26611],{"class":101}," oldValue ",[91,26613,166],{"class":566},[91,26615,11795],{"class":108},[91,26617,26618],{"class":101},".value;\n",[91,26620,26621,26623,26625,26627],{"class":93,"line":319},[91,26622,12019],{"class":108},[91,26624,26567],{"class":101},[91,26626,166],{"class":566},[91,26628,8384],{"class":101},[91,26630,26631,26633,26635,26637],{"class":93,"line":334},[91,26632,13326],{"class":566},[91,26634,2662],{"class":101},[91,26636,11782],{"class":108},[91,26638,26639],{"class":101},".user) {\n",[91,26641,26642,26645,26648,26650,26653,26655,26657,26659,26661,26663,26665,26668,26670,26672,26674],{"class":93,"line":355},[91,26643,26644],{"class":566},"        var",[91,26646,26647],{"class":101}," info ",[91,26649,166],{"class":566},[91,26651,26652],{"class":169}," \"callback for watcher ",[91,26654,26342],{"class":108},[91,26656,2139],{"class":169},[91,26658,1235],{"class":101},[91,26660,26349],{"class":97},[91,26662,795],{"class":101},[91,26664,11782],{"class":108},[91,26666,26667],{"class":101},".expression, ",[91,26669,2139],{"class":169},[91,26671,26342],{"class":108},[91,26673,2139],{"class":169},[91,26675,1594],{"class":101},[91,26677,26678,26681,26683,26685,26688,26690,26693,26695],{"class":93,"line":364},[91,26679,26680],{"class":97},"        invokeWithErrorHandling",[91,26682,795],{"class":101},[91,26684,11782],{"class":108},[91,26686,26687],{"class":101},".cb, ",[91,26689,11782],{"class":108},[91,26691,26692],{"class":101},".vm, [value, oldValue], ",[91,26694,11782],{"class":108},[91,26696,26697],{"class":101},".vm, info);\n",[91,26699,26700],{"class":93,"line":378},[91,26701,10095],{"class":101},[91,26703,26704,26706],{"class":93,"line":387},[91,26705,25581],{"class":566},[91,26707,102],{"class":101},[91,26709,26710,26713,26716,26718,26720,26722],{"class":93,"line":402},[91,26711,26712],{"class":108},"        this",[91,26714,26715],{"class":101},".cb.",[91,26717,17399],{"class":97},[91,26719,795],{"class":101},[91,26721,11782],{"class":108},[91,26723,26724],{"class":101},".vm, value, oldValue);\n",[91,26726,26727],{"class":93,"line":422},[91,26728,10095],{"class":101},[91,26730,26731],{"class":93,"line":438},[91,26732,1693],{"class":101},[91,26734,26735],{"class":93,"line":458},[91,26736,1693],{"class":101},[91,26738,26739],{"class":93,"line":467},[91,26740,20036],{"class":101},[16,26742,26743,26744,26746,26747,26749],{},"결국은 Watcher 의 ",[31,26745,25847],{}," 함수를 위해서 위 과정들을 열심히 진행한 것이다. 그렇다면 ",[31,26748,25847],{}," 함수는 내부적으로 어떤 것을 처리할까?",[16,26751,26752,26753,26756,26757,26759],{},"디버깅을 걸어보면 알겠지만, 화면의 렌더링은 ",[31,26754,26755],{},"this.get"," 에서 끝난다. 그리고 그 뒤로는 콜백을 실행하는 것 뿐이다. 그럼 ",[31,26758,5938],{}," 함수를 살펴봐야 한다.",[82,26761,26763],{"className":10952,"code":26762,"language":10954,"meta":87,"style":87},"Watcher.prototype.get = function () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  }\n  catch (e) {\n    if (this.user) {\n      handleError(e, vm, \"getter for watcher \\\"\".concat(this.expression, \"\\\"\"));\n    }\n    else {\n      throw e;\n    }\n  }\n  finally {\n    \u002F\u002F \"touch\" every property so they are all tracked as\n    \u002F\u002F dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value;\n};\n",[31,26764,26765,26783,26794,26801,26815,26821,26838,26842,26850,26860,26893,26897,26903,26910,26914,26918,26925,26930,26935,26945,26952,26956,26963,26974,26978,26984],{"__ignoreMap":87},[91,26766,26767,26769,26771,26773,26775,26777,26779,26781],{"class":93,"line":94},[91,26768,25891],{"class":108},[91,26770,1235],{"class":101},[91,26772,17514],{"class":108},[91,26774,1235],{"class":101},[91,26776,5938],{"class":97},[91,26778,1366],{"class":566},[91,26780,2001],{"class":566},[91,26782,25921],{"class":101},[91,26784,26785,26788,26790,26792],{"class":93,"line":105},[91,26786,26787],{"class":97},"  pushTarget",[91,26789,795],{"class":101},[91,26791,11782],{"class":108},[91,26793,1594],{"class":101},[91,26795,26796,26799],{"class":93,"line":121},[91,26797,26798],{"class":566},"  var",[91,26800,8384],{"class":101},[91,26802,26803,26805,26808,26810,26812],{"class":93,"line":134},[91,26804,26798],{"class":566},[91,26806,26807],{"class":101}," vm ",[91,26809,166],{"class":566},[91,26811,11795],{"class":108},[91,26813,26814],{"class":101},".vm;\n",[91,26816,26817,26819],{"class":93,"line":228},[91,26818,2012],{"class":566},[91,26820,102],{"class":101},[91,26822,26823,26826,26828,26830,26833,26835],{"class":93,"line":250},[91,26824,26825],{"class":101},"    value ",[91,26827,166],{"class":566},[91,26829,11795],{"class":108},[91,26831,26832],{"class":101},".getter.",[91,26834,17399],{"class":97},[91,26836,26837],{"class":101},"(vm, vm);\n",[91,26839,26840],{"class":93,"line":260},[91,26841,1698],{"class":101},[91,26843,26844,26847],{"class":93,"line":274},[91,26845,26846],{"class":566},"  catch",[91,26848,26849],{"class":101}," (e) {\n",[91,26851,26852,26854,26856,26858],{"class":93,"line":284},[91,26853,8218],{"class":566},[91,26855,2662],{"class":101},[91,26857,11782],{"class":108},[91,26859,26639],{"class":101},[91,26861,26862,26865,26868,26871,26873,26875,26877,26879,26881,26883,26885,26887,26889,26891],{"class":93,"line":299},[91,26863,26864],{"class":97},"      handleError",[91,26866,26867],{"class":101},"(e, vm, ",[91,26869,26870],{"class":169},"\"getter for watcher ",[91,26872,26342],{"class":108},[91,26874,2139],{"class":169},[91,26876,1235],{"class":101},[91,26878,26349],{"class":97},[91,26880,795],{"class":101},[91,26882,11782],{"class":108},[91,26884,26667],{"class":101},[91,26886,2139],{"class":169},[91,26888,26342],{"class":108},[91,26890,2139],{"class":169},[91,26892,6568],{"class":101},[91,26894,26895],{"class":93,"line":319},[91,26896,1693],{"class":101},[91,26898,26899,26901],{"class":93,"line":334},[91,26900,11838],{"class":566},[91,26902,102],{"class":101},[91,26904,26905,26907],{"class":93,"line":355},[91,26906,8230],{"class":566},[91,26908,26909],{"class":101}," e;\n",[91,26911,26912],{"class":93,"line":364},[91,26913,1693],{"class":101},[91,26915,26916],{"class":93,"line":378},[91,26917,1698],{"class":101},[91,26919,26920,26923],{"class":93,"line":387},[91,26921,26922],{"class":566},"  finally",[91,26924,102],{"class":101},[91,26926,26927],{"class":93,"line":402},[91,26928,26929],{"class":1343},"    \u002F\u002F \"touch\" every property so they are all tracked as\n",[91,26931,26932],{"class":93,"line":422},[91,26933,26934],{"class":1343},"    \u002F\u002F dependencies for deep watching\n",[91,26936,26937,26939,26941,26943],{"class":93,"line":438},[91,26938,8218],{"class":566},[91,26940,2662],{"class":101},[91,26942,11782],{"class":108},[91,26944,26599],{"class":101},[91,26946,26947,26950],{"class":93,"line":458},[91,26948,26949],{"class":97},"      traverse",[91,26951,17413],{"class":101},[91,26953,26954],{"class":93,"line":467},[91,26955,1693],{"class":101},[91,26957,26958,26961],{"class":93,"line":481},[91,26959,26960],{"class":97},"    popTarget",[91,26962,2030],{"class":101},[91,26964,26965,26967,26969,26972],{"class":93,"line":490},[91,26966,11922],{"class":108},[91,26968,1235],{"class":101},[91,26970,26971],{"class":97},"cleanupDeps",[91,26973,2030],{"class":101},[91,26975,26976],{"class":93,"line":3310},[91,26977,1698],{"class":101},[91,26979,26980,26982],{"class":93,"line":3315},[91,26981,2695],{"class":566},[91,26983,8384],{"class":101},[91,26985,26986],{"class":93,"line":3321},[91,26987,20036],{"class":101},[16,26989,26990,26991,26994,26995,26997],{},"단순히 ",[31,26992,26993],{},"this.getter"," 를 호출한다. 이 ",[31,26996,25203],{}," 함수는 Watcher 초기화 시 외부로부터 받는다.",[82,26999,27001],{"className":10952,"code":27000,"language":10954,"meta":87,"style":87},"function mountComponent(vm, el, hydrating) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n  }\n  callHook$1(vm, 'beforeMount');\n  var updateComponent;\n  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\".concat(id);\n      var endTag = \"vue-perf-end:\".concat(id);\n      mark(startTag);\n      **var vnode = vm._render();**\n      mark(endTag);\n      measure(\"vue \".concat(name, \" render\"), startTag, endTag);\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure(\"vue \".concat(name, \" patch\"), startTag, endTag);\n    };\n  }\n  else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n  var watcherOptions = {\n    before: function () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook$1(vm, 'beforeUpdate');\n      }\n    }\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };\n    watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };\n  }\n  \u002F\u002F we set this to vm._watcher inside the watcher's constructor\n  \u002F\u002F since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  \u002F\u002F component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, watcherOptions, true \u002F* isRenderWatcher *\u002F);\n  hydrating = false;\n  \u002F\u002F flush buffer for flush: \"pre\" watchers queued in setup()\n  var preWatchers = vm._preWatchers;\n  if (preWatchers) {\n    for (var i = 0; i \u003C preWatchers.length; i++) {\n      preWatchers[i].run();\n    }\n  }\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook$1(vm, 'mounted');\n  }\n  return vm;\n}\n",[31,27002,27003,27027,27037,27048,27058,27062,27075,27082,27104,27115,27127,27139,27158,27176,27184,27205,27212,27235,27241,27252,27258,27277,27281,27285,27292,27302,27316,27320,27324,27335,27346,27360,27372,27376,27380,27384,27398,27429,27457,27461,27466,27471,27476,27493,27504,27509,27521,27528,27557,27566,27570,27574,27587,27598,27610,27614,27621],{"__ignoreMap":87},[91,27004,27005,27007,27010,27012,27015,27017,27020,27022,27025],{"class":93,"line":94},[91,27006,7471],{"class":566},[91,27008,27009],{"class":97}," mountComponent",[91,27011,795],{"class":101},[91,27013,27014],{"class":1172},"vm",[91,27016,64],{"class":101},[91,27018,27019],{"class":1172},"el",[91,27021,64],{"class":101},[91,27023,27024],{"class":1172},"hydrating",[91,27026,3866],{"class":101},[91,27028,27029,27032,27034],{"class":93,"line":105},[91,27030,27031],{"class":101},"  vm.$el ",[91,27033,166],{"class":566},[91,27035,27036],{"class":101}," el;\n",[91,27038,27039,27041,27043,27045],{"class":93,"line":121},[91,27040,2439],{"class":566},[91,27042,2662],{"class":101},[91,27044,2665],{"class":566},[91,27046,27047],{"class":101},"vm.$options.render) {\n",[91,27049,27050,27053,27055],{"class":93,"line":134},[91,27051,27052],{"class":101},"    vm.$options.render ",[91,27054,166],{"class":566},[91,27056,27057],{"class":101}," createEmptyVNode;\n",[91,27059,27060],{"class":93,"line":228},[91,27061,1698],{"class":101},[91,27063,27064,27067,27070,27073],{"class":93,"line":250},[91,27065,27066],{"class":97},"  callHook$1",[91,27068,27069],{"class":101},"(vm, ",[91,27071,27072],{"class":169},"'beforeMount'",[91,27074,1594],{"class":101},[91,27076,27077,27079],{"class":93,"line":260},[91,27078,26798],{"class":566},[91,27080,27081],{"class":101}," updateComponent;\n",[91,27083,27084,27086,27088,27090,27092,27094,27096,27099,27101],{"class":93,"line":274},[91,27085,2439],{"class":566},[91,27087,13329],{"class":101},[91,27089,13332],{"class":108},[91,27091,25317],{"class":566},[91,27093,13338],{"class":169},[91,27095,25541],{"class":566},[91,27097,27098],{"class":101}," config.performance ",[91,27100,5232],{"class":566},[91,27102,27103],{"class":101}," mark) {\n",[91,27105,27106,27109,27111,27113],{"class":93,"line":284},[91,27107,27108],{"class":97},"    updateComponent",[91,27110,1366],{"class":566},[91,27112,2001],{"class":566},[91,27114,25921],{"class":101},[91,27116,27117,27119,27122,27124],{"class":93,"line":299},[91,27118,25275],{"class":566},[91,27120,27121],{"class":101}," name ",[91,27123,166],{"class":566},[91,27125,27126],{"class":101}," vm._name;\n",[91,27128,27129,27131,27134,27136],{"class":93,"line":319},[91,27130,25275],{"class":566},[91,27132,27133],{"class":101}," id ",[91,27135,166],{"class":566},[91,27137,27138],{"class":101}," vm._uid;\n",[91,27140,27141,27143,27146,27148,27151,27153,27155],{"class":93,"line":334},[91,27142,25275],{"class":566},[91,27144,27145],{"class":101}," startTag ",[91,27147,166],{"class":566},[91,27149,27150],{"class":169}," \"vue-perf-start:\"",[91,27152,1235],{"class":101},[91,27154,26349],{"class":97},[91,27156,27157],{"class":101},"(id);\n",[91,27159,27160,27162,27165,27167,27170,27172,27174],{"class":93,"line":355},[91,27161,25275],{"class":566},[91,27163,27164],{"class":101}," endTag ",[91,27166,166],{"class":566},[91,27168,27169],{"class":169}," \"vue-perf-end:\"",[91,27171,1235],{"class":101},[91,27173,26349],{"class":97},[91,27175,27157],{"class":101},[91,27177,27178,27181],{"class":93,"line":364},[91,27179,27180],{"class":97},"      mark",[91,27182,27183],{"class":101},"(startTag);\n",[91,27185,27186,27189,27192,27194,27197,27200,27203],{"class":93,"line":378},[91,27187,27188],{"class":566},"      **var",[91,27190,27191],{"class":101}," vnode ",[91,27193,166],{"class":566},[91,27195,27196],{"class":101}," vm.",[91,27198,27199],{"class":97},"_render",[91,27201,27202],{"class":101},"();",[91,27204,12474],{"class":566},[91,27206,27207,27209],{"class":93,"line":387},[91,27208,27180],{"class":97},[91,27210,27211],{"class":101},"(endTag);\n",[91,27213,27214,27217,27219,27222,27224,27226,27229,27232],{"class":93,"line":402},[91,27215,27216],{"class":97},"      measure",[91,27218,795],{"class":101},[91,27220,27221],{"class":169},"\"vue \"",[91,27223,1235],{"class":101},[91,27225,26349],{"class":97},[91,27227,27228],{"class":101},"(name, ",[91,27230,27231],{"class":169},"\" render\"",[91,27233,27234],{"class":101},"), startTag, endTag);\n",[91,27236,27237,27239],{"class":93,"line":422},[91,27238,27180],{"class":97},[91,27240,27183],{"class":101},[91,27242,27243,27246,27249],{"class":93,"line":438},[91,27244,27245],{"class":101},"      vm.",[91,27247,27248],{"class":97},"_update",[91,27250,27251],{"class":101},"(vnode, hydrating);\n",[91,27253,27254,27256],{"class":93,"line":458},[91,27255,27180],{"class":97},[91,27257,27211],{"class":101},[91,27259,27260,27262,27264,27266,27268,27270,27272,27275],{"class":93,"line":467},[91,27261,27216],{"class":97},[91,27263,795],{"class":101},[91,27265,27221],{"class":169},[91,27267,1235],{"class":101},[91,27269,26349],{"class":97},[91,27271,27228],{"class":101},[91,27273,27274],{"class":169},"\" patch\"",[91,27276,27234],{"class":101},[91,27278,27279],{"class":93,"line":481},[91,27280,19566],{"class":101},[91,27282,27283],{"class":93,"line":490},[91,27284,1698],{"class":101},[91,27286,27287,27290],{"class":93,"line":3310},[91,27288,27289],{"class":566},"  else",[91,27291,102],{"class":101},[91,27293,27294,27296,27298,27300],{"class":93,"line":3315},[91,27295,27108],{"class":97},[91,27297,1366],{"class":566},[91,27299,2001],{"class":566},[91,27301,25921],{"class":101},[91,27303,27304,27306,27308,27311,27313],{"class":93,"line":3321},[91,27305,27245],{"class":101},[91,27307,27248],{"class":97},[91,27309,27310],{"class":101},"(vm.",[91,27312,27199],{"class":97},[91,27314,27315],{"class":101},"(), hydrating);\n",[91,27317,27318],{"class":93,"line":3327},[91,27319,19566],{"class":101},[91,27321,27322],{"class":93,"line":3333},[91,27323,1698],{"class":101},[91,27325,27326,27328,27331,27333],{"class":93,"line":3338},[91,27327,26798],{"class":566},[91,27329,27330],{"class":101}," watcherOptions ",[91,27332,166],{"class":566},[91,27334,102],{"class":101},[91,27336,27337,27340,27342,27344],{"class":93,"line":3343},[91,27338,27339],{"class":97},"    before",[91,27341,112],{"class":101},[91,27343,7471],{"class":566},[91,27345,25921],{"class":101},[91,27347,27348,27350,27353,27355,27357],{"class":93,"line":7882},[91,27349,13326],{"class":566},[91,27351,27352],{"class":101}," (vm._isMounted ",[91,27354,5232],{"class":566},[91,27356,7832],{"class":566},[91,27358,27359],{"class":101},"vm._isDestroyed) {\n",[91,27361,27362,27365,27367,27370],{"class":93,"line":7887},[91,27363,27364],{"class":97},"        callHook$1",[91,27366,27069],{"class":101},[91,27368,27369],{"class":169},"'beforeUpdate'",[91,27371,1594],{"class":101},[91,27373,27374],{"class":93,"line":7892},[91,27375,10095],{"class":101},[91,27377,27378],{"class":93,"line":7906},[91,27379,1693],{"class":101},[91,27381,27382],{"class":93,"line":7922},[91,27383,8083],{"class":101},[91,27385,27386,27388,27390,27392,27394,27396],{"class":93,"line":7927},[91,27387,2439],{"class":566},[91,27389,13329],{"class":101},[91,27391,13332],{"class":108},[91,27393,25317],{"class":566},[91,27395,13338],{"class":169},[91,27397,3866],{"class":101},[91,27399,27400,27403,27406,27408,27410,27412,27414,27416,27418,27421,27423,27426],{"class":93,"line":7967},[91,27401,27402],{"class":101},"    watcherOptions.",[91,27404,27405],{"class":97},"onTrack",[91,27407,1366],{"class":566},[91,27409,2001],{"class":566},[91,27411,2662],{"class":101},[91,27413,7658],{"class":1172},[91,27415,19432],{"class":101},[91,27417,12966],{"class":566},[91,27419,27420],{"class":97}," callHook$1",[91,27422,27069],{"class":101},[91,27424,27425],{"class":169},"'renderTracked'",[91,27427,27428],{"class":101},", [e]); };\n",[91,27430,27431,27433,27436,27438,27440,27442,27444,27446,27448,27450,27452,27455],{"class":93,"line":7983},[91,27432,27402],{"class":101},[91,27434,27435],{"class":97},"onTrigger",[91,27437,1366],{"class":566},[91,27439,2001],{"class":566},[91,27441,2662],{"class":101},[91,27443,7658],{"class":1172},[91,27445,19432],{"class":101},[91,27447,12966],{"class":566},[91,27449,27420],{"class":97},[91,27451,27069],{"class":101},[91,27453,27454],{"class":169},"'renderTriggered'",[91,27456,27428],{"class":101},[91,27458,27459],{"class":93,"line":7988},[91,27460,1698],{"class":101},[91,27462,27463],{"class":93,"line":7993},[91,27464,27465],{"class":1343},"  \u002F\u002F we set this to vm._watcher inside the watcher's constructor\n",[91,27467,27468],{"class":93,"line":8000},[91,27469,27470],{"class":1343},"  \u002F\u002F since the watcher's initial patch may call $forceUpdate (e.g. inside child\n",[91,27472,27473],{"class":93,"line":8040},[91,27474,27475],{"class":1343},"  \u002F\u002F component's mounted hook), which relies on vm._watcher being already defined\n",[91,27477,27478,27480,27483,27486,27488,27491],{"class":93,"line":8046},[91,27479,13197],{"class":566},[91,27481,27482],{"class":97}," Watcher",[91,27484,27485],{"class":101},"(vm, updateComponent, noop, watcherOptions, ",[91,27487,7557],{"class":108},[91,27489,27490],{"class":1343}," \u002F* isRenderWatcher *\u002F",[91,27492,1594],{"class":101},[91,27494,27495,27498,27500,27502],{"class":93,"line":8080},[91,27496,27497],{"class":101},"  hydrating ",[91,27499,166],{"class":566},[91,27501,20253],{"class":108},[91,27503,118],{"class":101},[91,27505,27506],{"class":93,"line":8086},[91,27507,27508],{"class":1343},"  \u002F\u002F flush buffer for flush: \"pre\" watchers queued in setup()\n",[91,27510,27511,27513,27516,27518],{"class":93,"line":12052},[91,27512,26798],{"class":566},[91,27514,27515],{"class":101}," preWatchers ",[91,27517,166],{"class":566},[91,27519,27520],{"class":101}," vm._preWatchers;\n",[91,27522,27523,27525],{"class":93,"line":12070},[91,27524,2439],{"class":566},[91,27526,27527],{"class":101}," (preWatchers) {\n",[91,27529,27530,27532,27534,27536,27538,27540,27542,27544,27546,27549,27551,27553,27555],{"class":93,"line":12087},[91,27531,26168],{"class":566},[91,27533,2662],{"class":101},[91,27535,5626],{"class":566},[91,27537,17223],{"class":101},[91,27539,166],{"class":566},[91,27541,11817],{"class":108},[91,27543,17230],{"class":101},[91,27545,156],{"class":566},[91,27547,27548],{"class":101}," preWatchers.",[91,27550,11811],{"class":108},[91,27552,17240],{"class":101},[91,27554,17243],{"class":566},[91,27556,3866],{"class":101},[91,27558,27559,27562,27564],{"class":93,"line":12092},[91,27560,27561],{"class":101},"      preWatchers[i].",[91,27563,25847],{"class":97},[91,27565,2030],{"class":101},[91,27567,27568],{"class":93,"line":12097},[91,27569,1693],{"class":101},[91,27571,27572],{"class":93,"line":12102},[91,27573,1698],{"class":101},[91,27575,27576,27578,27581,27583,27585],{"class":93,"line":25726},[91,27577,2439],{"class":566},[91,27579,27580],{"class":101}," (vm.$vnode ",[91,27582,11788],{"class":566},[91,27584,1363],{"class":108},[91,27586,3866],{"class":101},[91,27588,27589,27592,27594,27596],{"class":93,"line":25732},[91,27590,27591],{"class":101},"    vm._isMounted ",[91,27593,166],{"class":566},[91,27595,20228],{"class":108},[91,27597,118],{"class":101},[91,27599,27600,27603,27605,27608],{"class":93,"line":25738},[91,27601,27602],{"class":97},"    callHook$1",[91,27604,27069],{"class":101},[91,27606,27607],{"class":169},"'mounted'",[91,27609,1594],{"class":101},[91,27611,27612],{"class":93,"line":25744},[91,27613,1698],{"class":101},[91,27615,27616,27618],{"class":93,"line":25750},[91,27617,2695],{"class":566},[91,27619,27620],{"class":101}," vm;\n",[91,27622,27623],{"class":93,"line":25756},[91,27624,137],{"class":101},[16,27626,27627,27630],{},[31,27628,27629],{},"mountComponent"," 함수 실행 시 작동은 다음과 같다.",[4530,27632,27633,27636,27639,27649],{},[27,27634,27635],{},"beforeMount 훅 실행",[27,27637,27638],{},"watcher 옵션으로 beforeUpdate 훅을 등록한다.",[27,27640,27641,27644,27645,27648],{},[31,27642,27643],{},"vm._render"," 를 실행하는 ",[31,27646,27647],{},"vm._update"," 함수를 Watcher 옵션으로 넘긴다.",[27,27650,27651],{},"mounted 훅 실행",[16,27653,27654,27655,27657,27658,27660,27661,27663],{},"일부 경우에 따라 ",[31,27656,25203],{}," 함수가 달라질 순 있지만, 대부분의 경우 결론적으로는 ",[31,27659,27643],{}," 를 Watcher 의 ",[31,27662,25203],{}," 로 실행한다.",[82,27665,27667],{"className":10952,"code":27666,"language":10954,"meta":87,"style":87},"vnode = render.call(vm._renderProxy, vm.$createElement);\n",[31,27668,27669],{"__ignoreMap":87},[91,27670,27671,27674,27676,27679,27681],{"class":93,"line":94},[91,27672,27673],{"class":101},"vnode ",[91,27675,166],{"class":566},[91,27677,27678],{"class":101}," render.",[91,27680,17399],{"class":97},[91,27682,27683],{"class":101},"(vm._renderProxy, vm.$createElement);\n",[16,27685,27686],{},"최종적으로는 컴포넌트에 동적으로 생성된 render 함수를 실행하게 된다. 이 render 함수는 컴포넌트의 템플릿을 가지고 생성된다. 혹은 render 함수를 직접 구현하거나.",[16,27688,27689,27690,27693,27694,27696],{},"render 함수로 생성된 ",[31,27691,27692],{},"vnode"," 를 가지고 ",[31,27695,27647],{}," 함수를 실행한다.",[82,27698,27700],{"className":11559,"code":27699,"language":11561,"meta":87,"style":87},"Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode; \n\n    if (!prevVnode) {\n      \u002F\u002F initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false);\n    } else {\n      \u002F\u002F updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n  };\n",[31,27701,27702,27728,27740,27752,27764,27779,27789,27793,27804,27809,27828,27836,27841,27854,27858,27865,27872,27883,27887,27894,27903,27907,27928,27937,27941],{"__ignoreMap":87},[91,27703,27704,27706,27708,27710,27712,27714,27716,27718,27720,27722,27724,27726],{"class":93,"line":94},[91,27705,15042],{"class":108},[91,27707,1235],{"class":101},[91,27709,17514],{"class":108},[91,27711,1235],{"class":101},[91,27713,27248],{"class":97},[91,27715,1366],{"class":566},[91,27717,2001],{"class":566},[91,27719,2662],{"class":101},[91,27721,27692],{"class":1172},[91,27723,64],{"class":101},[91,27725,27024],{"class":1172},[91,27727,3866],{"class":101},[91,27729,27730,27732,27734,27736,27738],{"class":93,"line":105},[91,27731,26127],{"class":566},[91,27733,26807],{"class":101},[91,27735,166],{"class":566},[91,27737,11795],{"class":108},[91,27739,118],{"class":101},[91,27741,27742,27744,27747,27749],{"class":93,"line":121},[91,27743,26127],{"class":566},[91,27745,27746],{"class":101}," prevEl ",[91,27748,166],{"class":566},[91,27750,27751],{"class":101}," vm.$el;\n",[91,27753,27754,27756,27759,27761],{"class":93,"line":134},[91,27755,26127],{"class":566},[91,27757,27758],{"class":101}," prevVnode ",[91,27760,166],{"class":566},[91,27762,27763],{"class":101}," vm._vnode;\n",[91,27765,27766,27768,27771,27773,27776],{"class":93,"line":228},[91,27767,26127],{"class":566},[91,27769,27770],{"class":101}," restoreActiveInstance ",[91,27772,166],{"class":566},[91,27774,27775],{"class":97}," setActiveInstance",[91,27777,27778],{"class":101},"(vm);\n",[91,27780,27781,27784,27786],{"class":93,"line":250},[91,27782,27783],{"class":101},"    vm._vnode ",[91,27785,166],{"class":566},[91,27787,27788],{"class":101}," vnode; \n",[91,27790,27791],{"class":93,"line":260},[91,27792,1450],{"emptyLinePlaceholder":846},[91,27794,27795,27797,27799,27801],{"class":93,"line":274},[91,27796,8218],{"class":566},[91,27798,2662],{"class":101},[91,27800,2665],{"class":566},[91,27802,27803],{"class":101},"prevVnode) {\n",[91,27805,27806],{"class":93,"line":284},[91,27807,27808],{"class":1343},"      \u002F\u002F initial render\n",[91,27810,27811,27814,27816,27818,27821,27824,27826],{"class":93,"line":299},[91,27812,27813],{"class":101},"      vm.$el ",[91,27815,166],{"class":566},[91,27817,27196],{"class":101},[91,27819,27820],{"class":97},"__patch__",[91,27822,27823],{"class":101},"(vm.$el, vnode, hydrating, ",[91,27825,7780],{"class":108},[91,27827,1594],{"class":101},[91,27829,27830,27832,27834],{"class":93,"line":319},[91,27831,12893],{"class":101},[91,27833,5258],{"class":566},[91,27835,102],{"class":101},[91,27837,27838],{"class":93,"line":334},[91,27839,27840],{"class":1343},"      \u002F\u002F updates\n",[91,27842,27843,27845,27847,27849,27851],{"class":93,"line":355},[91,27844,27813],{"class":101},[91,27846,166],{"class":566},[91,27848,27196],{"class":101},[91,27850,27820],{"class":97},[91,27852,27853],{"class":101},"(prevVnode, vnode);\n",[91,27855,27856],{"class":93,"line":364},[91,27857,1693],{"class":101},[91,27859,27860,27863],{"class":93,"line":378},[91,27861,27862],{"class":97},"    restoreActiveInstance",[91,27864,2030],{"class":101},[91,27866,27867,27869],{"class":93,"line":387},[91,27868,8218],{"class":566},[91,27870,27871],{"class":101}," (prevEl) {\n",[91,27873,27874,27877,27879,27881],{"class":93,"line":402},[91,27875,27876],{"class":101},"      prevEl.__vue__ ",[91,27878,166],{"class":566},[91,27880,1363],{"class":108},[91,27882,118],{"class":101},[91,27884,27885],{"class":93,"line":422},[91,27886,1693],{"class":101},[91,27888,27889,27891],{"class":93,"line":438},[91,27890,8218],{"class":566},[91,27892,27893],{"class":101}," (vm.$el) {\n",[91,27895,27896,27899,27901],{"class":93,"line":458},[91,27897,27898],{"class":101},"      vm.$el.__vue__ ",[91,27900,166],{"class":566},[91,27902,27620],{"class":101},[91,27904,27905],{"class":93,"line":467},[91,27906,1693],{"class":101},[91,27908,27909,27911,27913,27915,27918,27920,27923,27925],{"class":93,"line":481},[91,27910,8218],{"class":566},[91,27912,27580],{"class":101},[91,27914,5232],{"class":566},[91,27916,27917],{"class":101}," vm.$parent ",[91,27919,5232],{"class":566},[91,27921,27922],{"class":101}," vm.$vnode ",[91,27924,9382],{"class":566},[91,27926,27927],{"class":101}," vm.$parent._vnode) {\n",[91,27929,27930,27933,27935],{"class":93,"line":490},[91,27931,27932],{"class":101},"      vm.$parent.$el ",[91,27934,166],{"class":566},[91,27936,27751],{"class":101},[91,27938,27939],{"class":93,"line":3310},[91,27940,1693],{"class":101},[91,27942,27943],{"class":93,"line":3315},[91,27944,8083],{"class":101},[16,27946,27947,27950,27951,27954],{},[31,27948,27949],{},"vm.__patch__"," 를 호출하면서, 실제 DOM;여기서는 ",[31,27952,27953],{},"vm.$el"," 에 업데이트한다.",[49,27956,27958],{"id":27957},"vue2의-반응성-문제-및-특징","Vue2의 반응성 문제 및 특징",[16,27960,27961,27962,22871,27964,27966],{},"Vue2의 반응성 구현에는 문제가 있다. 이는 자바스크립트의 한계 때문에 발생한 것이다. Vue의 데이터들은 추가, 감소가 발생했을 때는 변화를 감지하지 못한다. ",[31,27963,25203],{},[31,27965,25206],{}," 를 주입받지 못하기 때문이다.",[757,27968,27970],{"id":27969},"data-option-에-데이터-추가하기","data option 에 데이터 추가하기",[82,27972,27974],{"className":10952,"code":27973,"language":10954,"meta":87,"style":87},"data: {\n    some: 1\n}\n\nthis.other = 2;\n",[31,27975,27976,27982,27992,27996,28000],{"__ignoreMap":87},[91,27977,27978,27980],{"class":93,"line":94},[91,27979,7901],{"class":97},[91,27981,8789],{"class":101},[91,27983,27984,27987,27989],{"class":93,"line":105},[91,27985,27986],{"class":97},"    some",[91,27988,112],{"class":101},[91,27990,27991],{"class":108},"1\n",[91,27993,27994],{"class":93,"line":121},[91,27995,137],{"class":101},[91,27997,27998],{"class":93,"line":134},[91,27999,1450],{"emptyLinePlaceholder":846},[91,28001,28002,28004,28007,28009,28011],{"class":93,"line":228},[91,28003,11782],{"class":108},[91,28005,28006],{"class":101},".other ",[91,28008,166],{"class":566},[91,28010,16523],{"class":108},[91,28012,118],{"class":101},[16,28014,28015,28016,28019,28020,28023],{},"컴포넌트의 data option 에 기존에 선언한 ",[31,28017,28018],{},"some"," 은 반응형이지만, ",[31,28021,28022],{},"other"," 는 반응형이 아니다. other 를 아무리 바꿔도 화면에는 아무런 영향을 주지 못한다.",[82,28025,28027],{"className":10952,"code":28026,"language":10954,"meta":87,"style":87},"this.$set(this, 'other', 2);\n",[31,28028,28029],{"__ignoreMap":87},[91,28030,28031,28033,28035,28038,28040,28042,28044,28047,28049,28051],{"class":93,"line":94},[91,28032,11782],{"class":108},[91,28034,1235],{"class":101},[91,28036,28037],{"class":97},"$set",[91,28039,795],{"class":101},[91,28041,11782],{"class":108},[91,28043,64],{"class":101},[91,28045,28046],{"class":169},"'other'",[91,28048,64],{"class":101},[91,28050,591],{"class":108},[91,28052,1594],{"class":101},[16,28054,28055,28056,28058],{},"하지만 Vue 인스턴스의 ",[31,28057,28037],{}," 함수를 이용해 반응형을 이끌어낼 수 있다.",[757,28060,28062],{"id":28061},"object-에-assign-으로-새로운-프로퍼티-추가하기","object 에 assign 으로 새로운 프로퍼티 추가하기",[16,28064,28065,14431,28068,28071,28072,28075,28076,28079,28080,28083],{},[31,28066,28067],{},"Object.assign",[31,28069,28070],{},"_.extend()"," 를 통한 객체 복사 역시 감지하지 못한다. 속성을 가져올 때는 ",[31,28073,28074],{},"[[Get]]"," 을 사용하고 속성을 지정할 때 ",[31,28077,28078],{},"[[Set]]"," 을 사용하기 때문에 ",[31,28081,28082],{},"getter\u002Fsetter"," 를 트리깅하지 못한다.",[82,28085,28087],{"className":10952,"code":28086,"language":10954,"meta":87,"style":87},"Object.assign(this.someObject, { a: 1, b: 2 }) \u002F\u002F 이렇게 하면 반응성을 이끌어내지 못함.\nthis.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })\n",[31,28088,28089,28115],{"__ignoreMap":87},[91,28090,28091,28093,28096,28098,28100,28103,28105,28108,28110,28112],{"class":93,"line":94},[91,28092,17283],{"class":101},[91,28094,28095],{"class":97},"assign",[91,28097,795],{"class":101},[91,28099,11782],{"class":108},[91,28101,28102],{"class":101},".someObject, { a: ",[91,28104,1583],{"class":108},[91,28106,28107],{"class":101},", b: ",[91,28109,591],{"class":108},[91,28111,21410],{"class":101},[91,28113,28114],{"class":1343},"\u002F\u002F 이렇게 하면 반응성을 이끌어내지 못함.\n",[91,28116,28117,28119,28122,28124,28127,28129,28132,28134,28136,28138,28140,28142],{"class":93,"line":105},[91,28118,11782],{"class":108},[91,28120,28121],{"class":101},".someObject ",[91,28123,166],{"class":566},[91,28125,28126],{"class":101}," Object.",[91,28128,28095],{"class":97},[91,28130,28131],{"class":101},"({}, ",[91,28133,11782],{"class":108},[91,28135,28102],{"class":101},[91,28137,1583],{"class":108},[91,28139,28107],{"class":101},[91,28141,591],{"class":108},[91,28143,9590],{"class":101},[16,28145,28146],{},"그래서 새로운 객체에 대상을 2개로 엮어서 병합한 후에 새로운 객체로 반환해야 한다.",[757,28148,28150],{"id":28149},"배열-문제","배열 문제",[16,28152,28153],{},"배열을 다루면서 아래 행동은 변화를 감지할 수 없다.",[4530,28155,28156,28159],{},[27,28157,28158],{},"배열의 인덱스에 값을 넣으려는 것",[27,28160,28161],{},"배열의 크기를 바꾸는 것",[82,28163,28165],{"className":10952,"code":28164,"language":10954,"meta":87,"style":87},"var vm = new Vue({\n  data: {\n    items: ['a', 'b', 'c']\n  }\n})\nvm.items[1] = 'x'\nvm.items.length = 2\n",[31,28166,28167,28182,28187,28206,28210,28214,28229],{"__ignoreMap":87},[91,28168,28169,28171,28173,28175,28177,28180],{"class":93,"line":94},[91,28170,5626],{"class":566},[91,28172,26807],{"class":101},[91,28174,166],{"class":566},[91,28176,2676],{"class":566},[91,28178,28179],{"class":97}," Vue",[91,28181,7549],{"class":101},[91,28183,28184],{"class":93,"line":105},[91,28185,28186],{"class":101},"  data: {\n",[91,28188,28189,28192,28194,28196,28199,28201,28204],{"class":93,"line":121},[91,28190,28191],{"class":101},"    items: [",[91,28193,5033],{"class":169},[91,28195,64],{"class":101},[91,28197,28198],{"class":169},"'b'",[91,28200,64],{"class":101},[91,28202,28203],{"class":169},"'c'",[91,28205,11460],{"class":101},[91,28207,28208],{"class":93,"line":134},[91,28209,1698],{"class":101},[91,28211,28212],{"class":93,"line":228},[91,28213,9444],{"class":101},[91,28215,28216,28219,28221,28224,28226],{"class":93,"line":250},[91,28217,28218],{"class":101},"vm.items[",[91,28220,1583],{"class":108},[91,28222,28223],{"class":101},"] ",[91,28225,166],{"class":566},[91,28227,28228],{"class":169}," 'x'\n",[91,28230,28231,28234,28236,28238],{"class":93,"line":260},[91,28232,28233],{"class":101},"vm.items.",[91,28235,11811],{"class":108},[91,28237,1366],{"class":566},[91,28239,28240],{"class":108}," 2\n",[16,28242,28243],{},"아래 두 코드는 반응성을 이끌어내지 못했다. 그렇다면 배열은 어떻게 다뤄야 반응형일까? 배열의 특정 함수들을 이용해야 한다.",[24,28245,28246,28249,28252,28255],{},[27,28247,28248],{},"push 배열에 뒤에 값을 추가",[27,28250,28251],{},"shift 배열 맨 처음 값을 빼냄",[27,28253,28254],{},"unshift 배열 앞에 값을 추가",[27,28256,28257],{},"splice 일부를 교체함",[82,28259,28261],{"className":10952,"code":28260,"language":10954,"meta":87,"style":87},"this.$set(this.items, 1, changedValue);\n",[31,28262,28263],{"__ignoreMap":87},[91,28264,28265,28267,28269,28271,28273,28275,28278,28280],{"class":93,"line":94},[91,28266,11782],{"class":108},[91,28268,1235],{"class":101},[91,28270,28037],{"class":97},[91,28272,795],{"class":101},[91,28274,11782],{"class":108},[91,28276,28277],{"class":101},".items, ",[91,28279,1583],{"class":108},[91,28281,28282],{"class":101},", changedValue);\n",[16,28284,28285,28286,28288],{},"혹은 ",[31,28287,28037],{}," 함수를 이용해 특정 인덱스의 값을 변경한다.",[771,28290,28292],{"id":28291},"object-배열","Object 배열",[82,28294,28296],{"className":10952,"code":28295,"language":10954,"meta":87,"style":87},"animals: [\n    {id: 1, comments: 'cat',},\n    {id: 2, comments: 'bird',},\n    {id: 3, comments: 'dog',},\n]\n\ncreated() {\n    this.animals[3] = {id: 4, comments: 'cow'};\n}\n",[31,28297,28298,28305,28321,28334,28348,28352,28356,28363,28389],{"__ignoreMap":87},[91,28299,28300,28303],{"class":93,"line":94},[91,28301,28302],{"class":97},"animals",[91,28304,10596],{"class":101},[91,28306,28307,28310,28312,28315,28318],{"class":93,"line":105},[91,28308,28309],{"class":101},"    {id: ",[91,28311,1583],{"class":108},[91,28313,28314],{"class":101},", comments: ",[91,28316,28317],{"class":169},"'cat'",[91,28319,28320],{"class":101},",},\n",[91,28322,28323,28325,28327,28329,28332],{"class":93,"line":121},[91,28324,28309],{"class":101},[91,28326,591],{"class":108},[91,28328,28314],{"class":101},[91,28330,28331],{"class":169},"'bird'",[91,28333,28320],{"class":101},[91,28335,28336,28338,28341,28343,28346],{"class":93,"line":134},[91,28337,28309],{"class":101},[91,28339,28340],{"class":108},"3",[91,28342,28314],{"class":101},[91,28344,28345],{"class":169},"'dog'",[91,28347,28320],{"class":101},[91,28349,28350],{"class":93,"line":228},[91,28351,11460],{"class":101},[91,28353,28354],{"class":93,"line":250},[91,28355,1450],{"emptyLinePlaceholder":846},[91,28357,28358,28361],{"class":93,"line":260},[91,28359,28360],{"class":97},"created",[91,28362,2007],{"class":101},[91,28364,28365,28367,28370,28372,28374,28376,28379,28382,28384,28387],{"class":93,"line":274},[91,28366,11922],{"class":108},[91,28368,28369],{"class":101},".animals[",[91,28371,28340],{"class":108},[91,28373,28223],{"class":101},[91,28375,166],{"class":566},[91,28377,28378],{"class":101}," {id: ",[91,28380,28381],{"class":108},"4",[91,28383,28314],{"class":101},[91,28385,28386],{"class":169},"'cow'",[91,28388,20036],{"class":101},[91,28390,28391],{"class":93,"line":284},[91,28392,137],{"class":101},[16,28394,28395],{},"우리는 개발을 하면서 흔하게 Object 를 여러개 담아놓은 배열을 다루게 된다. 이를 리스트 렌더링을 통해 화면에 심심치 않게 보여준다. 그런데 아까 얘기하기로는 Vue2의 배열은 인덱스에 해당하는 값을 바꾸려고 하면 반응성이 안나타난다고 했다.",[82,28397,28399],{"className":10952,"code":28398,"language":10954,"meta":87,"style":87},"this.animals[1].comments = \"whale\";\n",[31,28400,28401],{"__ignoreMap":87},[91,28402,28403,28405,28407,28409,28412,28414,28417],{"class":93,"line":94},[91,28404,11782],{"class":108},[91,28406,28369],{"class":101},[91,28408,1583],{"class":108},[91,28410,28411],{"class":101},"].comments ",[91,28413,166],{"class":566},[91,28415,28416],{"class":169}," \"whale\"",[91,28418,118],{"class":101},[16,28420,28421],{},"배열 1번의 객체의 데이터를 바꾸려고 하니, 세상에나 반응한다! 배열 내부의 객체는 반응형이다.",[16,28423,28424],{},[19,28425],{"alt":21,"src":28426},"\u002Fblog\u002Fimg\u002FVue2-Reactivity\u002FUntitled2.png",[16,28428,28429],{},"이는 콘솔에 데이터를 찍어보면 간단하게 알 수 있다. 배열의 경우 getter, setter 함수는 없지만 Observer 를 갖고 있다.",[16,28431,28432],{},[19,28433],{"alt":21,"src":28434},"\u002Fblog\u002Fimg\u002FVue2-Reactivity\u002FUntitled3.png",[16,28436,28437],{},"다만 내부에 있는 객체 3개는 각각 속성에 대해서 getter, setter 를 갖고 있다. 그렇기 때문에 배열 내부의 객체에 대해서는 반응형이다.",[16,28439,28440],{},[19,28441],{"alt":21,"src":28442},"\u002Fblog\u002Fimg\u002FVue2-Reactivity\u002FUntitled4.png",[16,28444,28445,28446,28448,28449,28452],{},"단 ",[31,28447,28360],{}," 에서 인덱스로 할당한 객체의 경우 Observer 할당이 안되어 있다. 또 getter, setter 역시 주입되지 않았기 때문에, ",[31,28450,28451],{},"this.animals[3].comments = \"some\";"," 코드는 반응형이 아니다.",[82,28454,28456],{"className":10952,"code":28455,"language":10954,"meta":87,"style":87},"const newObject = { \n  \"id\": 1, \n  \"comments\": \"새로운 오브젝트를 넣음!\", \n};\nthis.animals[1] = newObject; \u002F\u002F 반응형 x\nthis.$set(this.animals, 1, newObject); \u002F\u002F 반응형 o\nthis.animals[1].comments = \"내가 바꾸었다!!!\"; \u002F\u002F 반응형 o\nthis.$set(this.animals[1], 'comments', \"내가 바꾸었다!!!\"); \u002F\u002F 반응형 o\n",[31,28457,28458,28469,28480,28492,28496,28514,28537,28556],{"__ignoreMap":87},[91,28459,28460,28462,28465,28467],{"class":93,"line":94},[91,28461,1968],{"class":566},[91,28463,28464],{"class":108}," newObject",[91,28466,1366],{"class":566},[91,28468,13130],{"class":101},[91,28470,28471,28474,28476,28478],{"class":93,"line":105},[91,28472,28473],{"class":169},"  \"id\"",[91,28475,112],{"class":101},[91,28477,1583],{"class":108},[91,28479,10624],{"class":101},[91,28481,28482,28485,28487,28490],{"class":93,"line":121},[91,28483,28484],{"class":169},"  \"comments\"",[91,28486,112],{"class":101},[91,28488,28489],{"class":169},"\"새로운 오브젝트를 넣음!\"",[91,28491,10624],{"class":101},[91,28493,28494],{"class":93,"line":134},[91,28495,20036],{"class":101},[91,28497,28498,28500,28502,28504,28506,28508,28511],{"class":93,"line":228},[91,28499,11782],{"class":108},[91,28501,28369],{"class":101},[91,28503,1583],{"class":108},[91,28505,28223],{"class":101},[91,28507,166],{"class":566},[91,28509,28510],{"class":101}," newObject; ",[91,28512,28513],{"class":1343},"\u002F\u002F 반응형 x\n",[91,28515,28516,28518,28520,28522,28524,28526,28529,28531,28534],{"class":93,"line":250},[91,28517,11782],{"class":108},[91,28519,1235],{"class":101},[91,28521,28037],{"class":97},[91,28523,795],{"class":101},[91,28525,11782],{"class":108},[91,28527,28528],{"class":101},".animals, ",[91,28530,1583],{"class":108},[91,28532,28533],{"class":101},", newObject); ",[91,28535,28536],{"class":1343},"\u002F\u002F 반응형 o\n",[91,28538,28539,28541,28543,28545,28547,28549,28552,28554],{"class":93,"line":260},[91,28540,11782],{"class":108},[91,28542,28369],{"class":101},[91,28544,1583],{"class":108},[91,28546,28411],{"class":101},[91,28548,166],{"class":566},[91,28550,28551],{"class":169}," \"내가 바꾸었다!!!\"",[91,28553,20231],{"class":101},[91,28555,28536],{"class":1343},[91,28557,28558,28560,28562,28564,28566,28568,28570,28572,28574,28577,28579,28582,28585],{"class":93,"line":274},[91,28559,11782],{"class":108},[91,28561,1235],{"class":101},[91,28563,28037],{"class":97},[91,28565,795],{"class":101},[91,28567,11782],{"class":108},[91,28569,28369],{"class":101},[91,28571,1583],{"class":108},[91,28573,22817],{"class":101},[91,28575,28576],{"class":169},"'comments'",[91,28578,64],{"class":101},[91,28580,28581],{"class":169},"\"내가 바꾸었다!!!\"",[91,28583,28584],{"class":101},"); ",[91,28586,28536],{"class":1343},[16,28588,28589],{},"물론 위 코드를 하나의 함수에서 실행하면 모든 변경대상이 반응형이다. 왜냐하면 반응을 감지하고 re-rendering 할 때는, 바뀐 데이터를 모두 적용하기 때문이다. 데이터는 변경이 되어 있지만, 화면에 적용만 안 되어 있던 것이다. 렌더링 시점에 모든 변경사항이 적용된다.",[771,28591,28593],{"id":28592},"다중-배열","다중 배열",[82,28595,28597],{"className":10952,"code":28596,"language":10954,"meta":87,"style":87},"twoDimensionalArray: [\n  [\n    {id: 1, cat: 'first'},\n    {id: 2, cat: 'first'},\n  ],\n  [\n    {id: 1, cat: 'second'},\n    {id: 2, cat: 'second'},\n  ],\n  [],\n]\n\ncreated() {\n    this.twoDimensionalArray[2] = [\n    {id: 1, cat: 'third'},\n    {id: 2, cat: 'third'},\n  ]\n  this.twoDimensionalArray[3] = [\n    {id: 1, cat: 'forth'},\n    {id: 2, cat: 'forth'},\n  ]\n}\n",[31,28598,28599,28606,28611,28625,28637,28641,28645,28658,28670,28674,28679,28683,28687,28693,28708,28721,28733,28737,28752,28765,28777,28781],{"__ignoreMap":87},[91,28600,28601,28604],{"class":93,"line":94},[91,28602,28603],{"class":97},"twoDimensionalArray",[91,28605,10596],{"class":101},[91,28607,28608],{"class":93,"line":105},[91,28609,28610],{"class":101},"  [\n",[91,28612,28613,28615,28617,28620,28623],{"class":93,"line":121},[91,28614,28309],{"class":101},[91,28616,1583],{"class":108},[91,28618,28619],{"class":101},", cat: ",[91,28621,28622],{"class":169},"'first'",[91,28624,15376],{"class":101},[91,28626,28627,28629,28631,28633,28635],{"class":93,"line":134},[91,28628,28309],{"class":101},[91,28630,591],{"class":108},[91,28632,28619],{"class":101},[91,28634,28622],{"class":169},[91,28636,15376],{"class":101},[91,28638,28639],{"class":93,"line":228},[91,28640,21926],{"class":101},[91,28642,28643],{"class":93,"line":250},[91,28644,28610],{"class":101},[91,28646,28647,28649,28651,28653,28656],{"class":93,"line":260},[91,28648,28309],{"class":101},[91,28650,1583],{"class":108},[91,28652,28619],{"class":101},[91,28654,28655],{"class":169},"'second'",[91,28657,15376],{"class":101},[91,28659,28660,28662,28664,28666,28668],{"class":93,"line":274},[91,28661,28309],{"class":101},[91,28663,591],{"class":108},[91,28665,28619],{"class":101},[91,28667,28655],{"class":169},[91,28669,15376],{"class":101},[91,28671,28672],{"class":93,"line":284},[91,28673,21926],{"class":101},[91,28675,28676],{"class":93,"line":299},[91,28677,28678],{"class":101},"  [],\n",[91,28680,28681],{"class":93,"line":319},[91,28682,11460],{"class":101},[91,28684,28685],{"class":93,"line":334},[91,28686,1450],{"emptyLinePlaceholder":846},[91,28688,28689,28691],{"class":93,"line":355},[91,28690,28360],{"class":97},[91,28692,2007],{"class":101},[91,28694,28695,28697,28700,28702,28704,28706],{"class":93,"line":364},[91,28696,11922],{"class":108},[91,28698,28699],{"class":101},".twoDimensionalArray[",[91,28701,591],{"class":108},[91,28703,28223],{"class":101},[91,28705,166],{"class":566},[91,28707,13192],{"class":101},[91,28709,28710,28712,28714,28716,28719],{"class":93,"line":378},[91,28711,28309],{"class":101},[91,28713,1583],{"class":108},[91,28715,28619],{"class":101},[91,28717,28718],{"class":169},"'third'",[91,28720,15376],{"class":101},[91,28722,28723,28725,28727,28729,28731],{"class":93,"line":387},[91,28724,28309],{"class":101},[91,28726,591],{"class":108},[91,28728,28619],{"class":101},[91,28730,28718],{"class":169},[91,28732,15376],{"class":101},[91,28734,28735],{"class":93,"line":402},[91,28736,22495],{"class":101},[91,28738,28739,28742,28744,28746,28748,28750],{"class":93,"line":422},[91,28740,28741],{"class":108},"  this",[91,28743,28699],{"class":101},[91,28745,28340],{"class":108},[91,28747,28223],{"class":101},[91,28749,166],{"class":566},[91,28751,13192],{"class":101},[91,28753,28754,28756,28758,28760,28763],{"class":93,"line":438},[91,28755,28309],{"class":101},[91,28757,1583],{"class":108},[91,28759,28619],{"class":101},[91,28761,28762],{"class":169},"'forth'",[91,28764,15376],{"class":101},[91,28766,28767,28769,28771,28773,28775],{"class":93,"line":458},[91,28768,28309],{"class":101},[91,28770,591],{"class":108},[91,28772,28619],{"class":101},[91,28774,28762],{"class":169},[91,28776,15376],{"class":101},[91,28778,28779],{"class":93,"line":467},[91,28780,22495],{"class":101},[91,28782,28783],{"class":93,"line":481},[91,28784,137],{"class":101},[16,28786,28787],{},"만약 다중 배열의 경우 어떻게 될까? 배열 요소가 배열이고, 그 안에는 객체들이 있는 구조이다.",[82,28789,28791],{"className":10952,"code":28790,"language":10954,"meta":87,"style":87},"const newObject = { \n  \"id\": 1, \n  \"comments\": \"새로운 오브젝트를 넣음!\", \n};\nthis.twoDimensionalArray[1][1] = newObject \u002F\u002F 반응형 x\nthis.$set(this.twoDimensionalArray[1], 1, newObject); \u002F\u002F 반응형 o\nthis.twoDimensionalArray[0][0].cat = \"내가 바꾸었다!!!\"; \u002F\u002F 반응형 o\nthis.twoDimensionalArray[2][0].cat = \"새로 넣은 오브젝트인데 바뀔까?\"; \u002F\u002F 반응형 x\nthis.$set(this.twoDimensionalArray[3][1], 'comments', \"내가 바꾸었다!!!\"); \u002F\u002F 반응형 x\n",[31,28792,28793,28803,28813,28823,28827,28849,28873,28896,28919],{"__ignoreMap":87},[91,28794,28795,28797,28799,28801],{"class":93,"line":94},[91,28796,1968],{"class":566},[91,28798,28464],{"class":108},[91,28800,1366],{"class":566},[91,28802,13130],{"class":101},[91,28804,28805,28807,28809,28811],{"class":93,"line":105},[91,28806,28473],{"class":169},[91,28808,112],{"class":101},[91,28810,1583],{"class":108},[91,28812,10624],{"class":101},[91,28814,28815,28817,28819,28821],{"class":93,"line":121},[91,28816,28484],{"class":169},[91,28818,112],{"class":101},[91,28820,28489],{"class":169},[91,28822,10624],{"class":101},[91,28824,28825],{"class":93,"line":134},[91,28826,20036],{"class":101},[91,28828,28829,28831,28833,28835,28838,28840,28842,28844,28847],{"class":93,"line":228},[91,28830,11782],{"class":108},[91,28832,28699],{"class":101},[91,28834,1583],{"class":108},[91,28836,28837],{"class":101},"][",[91,28839,1583],{"class":108},[91,28841,28223],{"class":101},[91,28843,166],{"class":566},[91,28845,28846],{"class":101}," newObject ",[91,28848,28513],{"class":1343},[91,28850,28851,28853,28855,28857,28859,28861,28863,28865,28867,28869,28871],{"class":93,"line":250},[91,28852,11782],{"class":108},[91,28854,1235],{"class":101},[91,28856,28037],{"class":97},[91,28858,795],{"class":101},[91,28860,11782],{"class":108},[91,28862,28699],{"class":101},[91,28864,1583],{"class":108},[91,28866,22817],{"class":101},[91,28868,1583],{"class":108},[91,28870,28533],{"class":101},[91,28872,28536],{"class":1343},[91,28874,28875,28877,28879,28881,28883,28885,28888,28890,28892,28894],{"class":93,"line":260},[91,28876,11782],{"class":108},[91,28878,28699],{"class":101},[91,28880,1578],{"class":108},[91,28882,28837],{"class":101},[91,28884,1578],{"class":108},[91,28886,28887],{"class":101},"].cat ",[91,28889,166],{"class":566},[91,28891,28551],{"class":169},[91,28893,20231],{"class":101},[91,28895,28536],{"class":1343},[91,28897,28898,28900,28902,28904,28906,28908,28910,28912,28915,28917],{"class":93,"line":274},[91,28899,11782],{"class":108},[91,28901,28699],{"class":101},[91,28903,591],{"class":108},[91,28905,28837],{"class":101},[91,28907,1578],{"class":108},[91,28909,28887],{"class":101},[91,28911,166],{"class":566},[91,28913,28914],{"class":169}," \"새로 넣은 오브젝트인데 바뀔까?\"",[91,28916,20231],{"class":101},[91,28918,28513],{"class":1343},[91,28920,28921,28923,28925,28927,28929,28931,28933,28935,28937,28939,28941,28943,28945,28947,28949],{"class":93,"line":284},[91,28922,11782],{"class":108},[91,28924,1235],{"class":101},[91,28926,28037],{"class":97},[91,28928,795],{"class":101},[91,28930,11782],{"class":108},[91,28932,28699],{"class":101},[91,28934,28340],{"class":108},[91,28936,28837],{"class":101},[91,28938,1583],{"class":108},[91,28940,22817],{"class":101},[91,28942,28576],{"class":169},[91,28944,64],{"class":101},[91,28946,28581],{"class":169},[91,28948,28584],{"class":101},[91,28950,28513],{"class":1343},[16,28952,28953],{},"기본적으로 배열의 인덱스에 직접 할당하는 것은 무조건 반응형이 아니다.",[16,28955,28956,28957,28959],{},"2번 인덱스의 객체는, 처음에는 빈 배열이다가 인덱스에 직접 할당되었다. 그래서 반응형 설정이 되지 않았고, 다중배열 안의 객체 속성을 바꾸려고 했을 때 반응이 없다. 처음부터 할당이 되어 있거나, ",[31,28958,13348],{}," 등으로 추가된 항목이 아니기 때문이다. 반대 상황으로 0번 인덱스와 1번 인덱스는 반응형으로 내부 속성을 변경하려고 할 때 반응형이다.",[16,28961,28962,28963,28965],{},"3번 인덱스는 처음부터 객체에 없다가, 인덱스로 할당된 객체이다. 2번과 사실상 같은 유형이다. 이 경우 ",[31,28964,28037],{}," 함수로도 반응이 없다.",[16,28967,28968,28969,28971],{},"3번 항목이야 ",[31,28970,13348],{}," 를 통해 항목을 추가하면 된다곤 하지만, 2번 항목을 반응형으로 할당하려면 어떻게 해야할까?",[82,28973,28975],{"className":10952,"code":28974,"language":10954,"meta":87,"style":87},"this.twoDimensionalArray[2].push(...[\n  {id: 1, cat: 'third'},\n  {id: 2, cat: 'third'},\n])\nthis.twoDimensionalArray.splice(2, 1, [\n  {id: 1, cat: 'third'},\n  {id: 2, cat: 'third'},\n]);\n",[31,28976,28977,28996,29009,29021,29026,29047,29059,29071],{"__ignoreMap":87},[91,28978,28979,28981,28983,28985,28988,28990,28992,28994],{"class":93,"line":94},[91,28980,11782],{"class":108},[91,28982,28699],{"class":101},[91,28984,591],{"class":108},[91,28986,28987],{"class":101},"].",[91,28989,13348],{"class":97},[91,28991,795],{"class":101},[91,28993,1442],{"class":566},[91,28995,11369],{"class":101},[91,28997,28998,29001,29003,29005,29007],{"class":93,"line":105},[91,28999,29000],{"class":101},"  {id: ",[91,29002,1583],{"class":108},[91,29004,28619],{"class":101},[91,29006,28718],{"class":169},[91,29008,15376],{"class":101},[91,29010,29011,29013,29015,29017,29019],{"class":93,"line":121},[91,29012,29000],{"class":101},[91,29014,591],{"class":108},[91,29016,28619],{"class":101},[91,29018,28718],{"class":169},[91,29020,15376],{"class":101},[91,29022,29023],{"class":93,"line":134},[91,29024,29025],{"class":101},"])\n",[91,29027,29028,29030,29033,29036,29038,29040,29042,29044],{"class":93,"line":228},[91,29029,11782],{"class":108},[91,29031,29032],{"class":101},".twoDimensionalArray.",[91,29034,29035],{"class":97},"splice",[91,29037,795],{"class":101},[91,29039,591],{"class":108},[91,29041,64],{"class":101},[91,29043,1583],{"class":108},[91,29045,29046],{"class":101},", [\n",[91,29048,29049,29051,29053,29055,29057],{"class":93,"line":250},[91,29050,29000],{"class":101},[91,29052,1583],{"class":108},[91,29054,28619],{"class":101},[91,29056,28718],{"class":169},[91,29058,15376],{"class":101},[91,29060,29061,29063,29065,29067,29069],{"class":93,"line":260},[91,29062,29000],{"class":101},[91,29064,591],{"class":108},[91,29066,28619],{"class":101},[91,29068,28718],{"class":169},[91,29070,15376],{"class":101},[91,29072,29073],{"class":93,"line":274},[91,29074,19380],{"class":101},[24,29076,29077,29080],{},[27,29078,29079],{},"spread 문으로 내용물을 펼쳐서 push 를 하는 방법",[27,29081,29082,29084],{},[31,29083,29035],{}," 함수로 대상 교체하기",[16,29086,29087],{},"배열은 간단하게 생각하면 꼭 함수를 거쳐야 한다고 보면 된다. 그럼 쉽게 반응형을 끌어낼 수 있다.",[757,29089,29091],{"id":29090},"비동기-업데이트-큐","비동기 업데이트 큐",[16,29093,29094,29095,29098],{},"이 부분은 딱히 문제는 아니지만 알아두면 좋은 Vue 의 특성이다. Vue 의 UI 업데이트를 위해 컴파일되는 Virtual DOM은 비동기로 생성되고 화면에 렌더링된다. 즉, queue 에 담긴 여러 변경사항들을 flush 하기 전까지는 바로 화면에 적용되지 않고, 한 번에 렌더링한다. 그 시점은 다음 ",[792,29096,29097],{},"tick"," 이 된다. 또, queue 에 담긴 Watcher 중 중복인 항목은 제거하고 최신으로 유지한다.",[82,29100,29102],{"className":11559,"code":29101,"language":11561,"meta":87,"style":87},"template: `\u003Cspan>{{msg}}\u003C\u002Fspan>`,\nata: {\n    msg: \"before update\",\n}\nmethods: {\n    update: () => {\n        this.msg = \"updated\";\n    console.log(this.$el.textContent) \u002F\u002F => 'not updated'\n    this.$nextTick(function () {\n      console.log(this.$el.textContent) \u002F\u002F => 'updated'\n    })\n    }\n}\n",[31,29103,29104,29115,29122,29134,29138,29145,29156,29170,29186,29201,29216,29220,29224],{"__ignoreMap":87},[91,29105,29106,29108,29110,29113],{"class":93,"line":94},[91,29107,2118],{"class":97},[91,29109,112],{"class":101},[91,29111,29112],{"class":169},"`\u003Cspan>{{msg}}\u003C\u002Fspan>`",[91,29114,7560],{"class":101},[91,29116,29117,29120],{"class":93,"line":105},[91,29118,29119],{"class":97},"ata",[91,29121,8789],{"class":101},[91,29123,29124,29127,29129,29132],{"class":93,"line":121},[91,29125,29126],{"class":97},"    msg",[91,29128,112],{"class":101},[91,29130,29131],{"class":169},"\"before update\"",[91,29133,7560],{"class":101},[91,29135,29136],{"class":93,"line":134},[91,29137,137],{"class":101},[91,29139,29140,29143],{"class":93,"line":228},[91,29141,29142],{"class":97},"methods",[91,29144,8789],{"class":101},[91,29146,29147,29150,29152,29154],{"class":93,"line":250},[91,29148,29149],{"class":97},"    update",[91,29151,24747],{"class":101},[91,29153,1179],{"class":566},[91,29155,102],{"class":101},[91,29157,29158,29160,29163,29165,29168],{"class":93,"line":260},[91,29159,26712],{"class":108},[91,29161,29162],{"class":101},".msg ",[91,29164,166],{"class":566},[91,29166,29167],{"class":169}," \"updated\"",[91,29169,118],{"class":101},[91,29171,29172,29174,29176,29178,29180,29183],{"class":93,"line":274},[91,29173,2454],{"class":101},[91,29175,1225],{"class":97},[91,29177,795],{"class":101},[91,29179,11782],{"class":108},[91,29181,29182],{"class":101},".$el.textContent) ",[91,29184,29185],{"class":1343},"\u002F\u002F => 'not updated'\n",[91,29187,29188,29190,29192,29195,29197,29199],{"class":93,"line":284},[91,29189,11922],{"class":108},[91,29191,1235],{"class":101},[91,29193,29194],{"class":97},"$nextTick",[91,29196,795],{"class":101},[91,29198,7471],{"class":566},[91,29200,25921],{"class":101},[91,29202,29203,29205,29207,29209,29211,29213],{"class":93,"line":299},[91,29204,13900],{"class":101},[91,29206,1225],{"class":97},[91,29208,795],{"class":101},[91,29210,11782],{"class":108},[91,29212,29182],{"class":101},[91,29214,29215],{"class":1343},"\u002F\u002F => 'updated'\n",[91,29217,29218],{"class":93,"line":319},[91,29219,23766],{"class":101},[91,29221,29222],{"class":93,"line":334},[91,29223,1693],{"class":101},[91,29225,29226],{"class":93,"line":355},[91,29227,137],{"class":101},[16,29229,29230,29231,29234,29235,29238,29239,29241],{},"간단하게 update 함수를 통해 변경된 ",[31,29232,29233],{},"msg"," 는 실제 DOM에 적용되기 전이라서 함수 실행 중에는 이전 데이터로 여전히 남아 있다. 그러다 함수 호출이 끝나고, 다음 이벤트 루프가 발생할 때가 되어서야 갱신된 데이터가 화면에 보인다. 이를 추적할 수 있는 게 ",[31,29236,29237],{},"this.$nextTick"," 이다. 이는 함수의 호출을 다음 ",[792,29240,29097],{}," 으로 미루는 작업이다. tick 에 대해서는 추후에 이벤트 루프에 대해서 작성할 때 자세하게 다룰 것이다.",[757,29243,29245],{"id":29244},"created-와-mounted","created 와 mounted",[16,29247,29248],{},"앞서 Vue 컴포넌트는 mount 시점에 렌더링을 한 번 실행한다는 것을 알았다. beforeMounted → 렌더링 → mounted 순서로 훅이 실행된다. 그렇기 때문에 발생하는 현상이 있다. created 훅과 mounted 훅에서 data 에 반응형이 아닌 데이터를 추가를 하면 UI에 표시가 될까 안될까?",[82,29250,29252],{"className":11559,"code":29251,"language":11561,"meta":87,"style":87},"template: `\n    \u003Cdiv v-for=\"item of notReactive\" :key=\"item.id\">\n    {{item}}\n  \u003C\u002Fdiv>\n`,\ncreated() {\n  this.notReactive[1] = {id: 2, cat: 'reactive from created'};\n},\nmounted() {\n  this.notReactive[2] = {id: 3, cat: 'not reactive from mounted'};\n},\ndata: () => {\n  return {\n    notReactive: [\n      {id: 1, cat: 'reactive'},\n    ]\n  }\n}\n",[31,29253,29254,29263,29268,29273,29278,29285,29291,29315,29319,29326,29349,29353,29363,29369,29374,29388,29392,29396],{"__ignoreMap":87},[91,29255,29256,29258,29260],{"class":93,"line":94},[91,29257,2118],{"class":97},[91,29259,112],{"class":101},[91,29261,29262],{"class":169},"`\n",[91,29264,29265],{"class":93,"line":105},[91,29266,29267],{"class":169},"    \u003Cdiv v-for=\"item of notReactive\" :key=\"item.id\">\n",[91,29269,29270],{"class":93,"line":121},[91,29271,29272],{"class":169},"    {{item}}\n",[91,29274,29275],{"class":93,"line":134},[91,29276,29277],{"class":169},"  \u003C\u002Fdiv>\n",[91,29279,29280,29283],{"class":93,"line":228},[91,29281,29282],{"class":169},"`",[91,29284,7560],{"class":101},[91,29286,29287,29289],{"class":93,"line":250},[91,29288,28360],{"class":97},[91,29290,2007],{"class":101},[91,29292,29293,29295,29298,29300,29302,29304,29306,29308,29310,29313],{"class":93,"line":260},[91,29294,28741],{"class":108},[91,29296,29297],{"class":101},".notReactive[",[91,29299,1583],{"class":108},[91,29301,28223],{"class":101},[91,29303,166],{"class":566},[91,29305,28378],{"class":101},[91,29307,591],{"class":108},[91,29309,28619],{"class":101},[91,29311,29312],{"class":169},"'reactive from created'",[91,29314,20036],{"class":101},[91,29316,29317],{"class":93,"line":274},[91,29318,15376],{"class":101},[91,29320,29321,29324],{"class":93,"line":284},[91,29322,29323],{"class":97},"mounted",[91,29325,2007],{"class":101},[91,29327,29328,29330,29332,29334,29336,29338,29340,29342,29344,29347],{"class":93,"line":299},[91,29329,28741],{"class":108},[91,29331,29297],{"class":101},[91,29333,591],{"class":108},[91,29335,28223],{"class":101},[91,29337,166],{"class":566},[91,29339,28378],{"class":101},[91,29341,28340],{"class":108},[91,29343,28619],{"class":101},[91,29345,29346],{"class":169},"'not reactive from mounted'",[91,29348,20036],{"class":101},[91,29350,29351],{"class":93,"line":319},[91,29352,15376],{"class":101},[91,29354,29355,29357,29359,29361],{"class":93,"line":334},[91,29356,7901],{"class":97},[91,29358,24747],{"class":101},[91,29360,1179],{"class":566},[91,29362,102],{"class":101},[91,29364,29365,29367],{"class":93,"line":355},[91,29366,2695],{"class":566},[91,29368,102],{"class":101},[91,29370,29371],{"class":93,"line":364},[91,29372,29373],{"class":101},"    notReactive: [\n",[91,29375,29376,29379,29381,29383,29386],{"class":93,"line":378},[91,29377,29378],{"class":101},"      {id: ",[91,29380,1583],{"class":108},[91,29382,28619],{"class":101},[91,29384,29385],{"class":169},"'reactive'",[91,29387,15376],{"class":101},[91,29389,29390],{"class":93,"line":387},[91,29391,10681],{"class":101},[91,29393,29394],{"class":93,"line":402},[91,29395,1698],{"class":101},[91,29397,29398],{"class":93,"line":422},[91,29399,137],{"class":101},[16,29401,29402,29403,29406,29407,29410],{},"말로는 헷갈릴 수 있으니 예시를 보자. 0번 인덱스는 데이터 초기화 시점에 이미 할당되어 있기 때문에 당연하게도 반응형이다. 그렇다면, 1번 인덱스와 2번 인덱스는 반응형일까? 우리가 테스트했을 때는 배열의 인덱스에 할당한 대상은 반응형이 아니다. 그렇기 때문에, UI에는 0번 인덱스 항목만 보일 거라고 예상한다. 결과는 0번 1번 인덱스 항목은 출력되고, 2번 인덱스 항목은 출력되지 않는다. 즉, created 에서 넣은 객체는 렌더가 되었고, mounted 에서 넣은 객체는 무시됐다. 렌더링과 훅의 순서 때문이다. created 시점에서는 렌더링 전이기 때문에, 렌더링 시점에 데이터는 인지되고 적용된다. 하지만 mounted 시점에는 이미 렌더링이 끝난 시점이라, 이때 추가된 데이터는 값만 바뀐 채 렌더링은 무시된다. 여담으로 mounted 에서 넣은 데이터는 ",[31,29404,29405],{},"this.$forceUpdate"," 를 호출하면 화면에 보인다. ",[31,29408,29409],{},"watcher.update"," 를 강제로 호출하기 때문이다.",[82,29412,29414],{"className":11559,"code":29413,"language":11561,"meta":87,"style":87},"methods: {\n  onClick() {\n        \u002F\u002F 아래를 개별로 실행\n        \u002F\u002F 한번에 실행하면 1번 행이 반응형이기 때문에, 모두 렌더링 된다.\n    this.notReactive[0].cat = 'reactive from onClick'; \u002F\u002F 반응형\n        this.$set(this.notReactive[1], 'cat', 'reactive from onClick') \u002F\u002F 반응형 x\n    this.notReactive[1].cat = 'reactive from onClick'; \u002F\u002F 반응형 x\n    this.notReactive[2].cat = 'reactive from onClick'; \u002F\u002F 반응형 x\n  }\n},\n",[31,29415,29416,29422,29429,29434,29439,29459,29488,29506,29524,29528],{"__ignoreMap":87},[91,29417,29418,29420],{"class":93,"line":94},[91,29419,29142],{"class":97},[91,29421,8789],{"class":101},[91,29423,29424,29427],{"class":93,"line":105},[91,29425,29426],{"class":97},"  onClick",[91,29428,2007],{"class":101},[91,29430,29431],{"class":93,"line":121},[91,29432,29433],{"class":1343},"        \u002F\u002F 아래를 개별로 실행\n",[91,29435,29436],{"class":93,"line":134},[91,29437,29438],{"class":1343},"        \u002F\u002F 한번에 실행하면 1번 행이 반응형이기 때문에, 모두 렌더링 된다.\n",[91,29440,29441,29443,29445,29447,29449,29451,29454,29456],{"class":93,"line":228},[91,29442,11922],{"class":108},[91,29444,29297],{"class":101},[91,29446,1578],{"class":108},[91,29448,28887],{"class":101},[91,29450,166],{"class":566},[91,29452,29453],{"class":169}," 'reactive from onClick'",[91,29455,20231],{"class":101},[91,29457,29458],{"class":1343},"\u002F\u002F 반응형\n",[91,29460,29461,29463,29465,29467,29469,29471,29473,29475,29477,29479,29481,29484,29486],{"class":93,"line":250},[91,29462,26712],{"class":108},[91,29464,1235],{"class":101},[91,29466,28037],{"class":97},[91,29468,795],{"class":101},[91,29470,11782],{"class":108},[91,29472,29297],{"class":101},[91,29474,1583],{"class":108},[91,29476,22817],{"class":101},[91,29478,28317],{"class":169},[91,29480,64],{"class":101},[91,29482,29483],{"class":169},"'reactive from onClick'",[91,29485,1176],{"class":101},[91,29487,28513],{"class":1343},[91,29489,29490,29492,29494,29496,29498,29500,29502,29504],{"class":93,"line":260},[91,29491,11922],{"class":108},[91,29493,29297],{"class":101},[91,29495,1583],{"class":108},[91,29497,28887],{"class":101},[91,29499,166],{"class":566},[91,29501,29453],{"class":169},[91,29503,20231],{"class":101},[91,29505,28513],{"class":1343},[91,29507,29508,29510,29512,29514,29516,29518,29520,29522],{"class":93,"line":274},[91,29509,11922],{"class":108},[91,29511,29297],{"class":101},[91,29513,591],{"class":108},[91,29515,28887],{"class":101},[91,29517,166],{"class":566},[91,29519,29453],{"class":169},[91,29521,20231],{"class":101},[91,29523,28513],{"class":1343},[91,29525,29526],{"class":93,"line":284},[91,29527,1698],{"class":101},[91,29529,29530],{"class":93,"line":299},[91,29531,15376],{"class":101},[16,29533,29534],{},"mount 시점에 렌더링되어 화면에 나타났다고 해서 반응형인 건 아니다. mount 이후 데이터를 바꾸려고 하면 반응형이 아니기 때문에 반응이 없다.",[829,29536,29537],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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":87,"searchDepth":105,"depth":105,"links":29539},[29540,29541,29545],{"id":25178,"depth":105,"text":25179},{"id":25191,"depth":105,"text":25192,"children":29542},[29543,29544],{"id":25213,"depth":121,"text":25214},{"id":25890,"depth":121,"text":25891},{"id":27957,"depth":105,"text":27958,"children":29546},[29547,29548,29549,29550,29551],{"id":27969,"depth":121,"text":27970},{"id":28061,"depth":121,"text":28062},{"id":28149,"depth":121,"text":28150},{"id":29090,"depth":121,"text":29091},{"id":29244,"depth":121,"text":29245},"2022-07-12","Vue2 Vue3 의 Reactivity 비교. Vue2 Reactive에 대한 설명. VNODE, Watcher, Dependency, ref, reactive, update, vue hook 에 대해서 전반적인 설명.","vue2-reactivity",{},"\u002Fblog\u002Fvue2-reactivity",{"title":25173,"description":29553},{"loc":29556},"blog\u002Fvue2-reactivity",[15042,25166,29561,25178,29562],"Vue Reactivity","Vue Rendering","U7JmBwVUePV3dPh-UoxU6v-3t3Q4dgI2UrRgS3sLJ_U",{"id":29565,"title":29566,"body":29567,"created":29955,"description":29956,"extension":843,"filename":29957,"meta":29958,"navigation":846,"path":29959,"seo":29960,"sitemap":29961,"stem":29962,"subject":15043,"tags":29963,"updated":29955,"volume":853,"__hash__":29966},"blog\u002Fblog\u002Fvue3-route-component-reuse-data-refresh.md","Vue3에서 같은 컴포넌트를 재사용하는 두 가지 라우트 갱신 문제",{"type":8,"value":29568,"toc":29950},[29569,29572,29579,29583,29590,29596,29612,29676,29682,29691,29695,29698,29806,29813,29822,29918,29927,29930,29932,29939,29943,29947],[16,29570,29571],{},"같은 컴포넌트를 재사용하는 라우트에서 두 가지 갱신 문제를 겪었다. 하나는 같은 상세 페이지에서 파라미터만 바꿨을 때 데이터를 다시 조회하지 않는 문제였고, 다른 하나는 서로 다른 메뉴가 같은 목록 컴포넌트를 사용해서 이전 화면의 상태가 남는 문제였다.",[16,29573,29574,29575,29578],{},"두 문제 모두 Vue Router가 컴포넌트 인스턴스를 재사용해서 ",[31,29576,29577],{},"onMounted()","를 다시 실행하지 한다는 점은 같았다. 하지만 첫 번째는 현재 인스턴스를 유지하면서 데이터만 바꾸면 됐고, 두 번째는 목록의 로컬 상태까지 초기화해야 했다.",[49,29580,29582],{"id":29581},"같은-상세-페이지에서-라우트-파라미터만-바뀔-때","같은 상세 페이지에서 라우트 파라미터만 바뀔 때",[16,29584,29585,29586,29589],{},"상세 화면에서 다음 항목을 누르면 같은 페이지를 유지한 채 다음 정보를 보여줘야 했다. URL의 ",[31,29587,29588],{},"itemId","는 바뀌었지만 같은 라우트 레코드와 컴포넌트를 사용했기 때문에 기존 인스턴스가 그대로 남았다.",[16,29591,29592],{},[19,29593],{"alt":29594,"src":29595},"라우트 파라미터 갱신 다이어그램","\u002Fblog\u002Fimg\u002Fvue3-route-component-reuse-data-refresh\u002Fvue-route-param-update-diagram.svg",[16,29597,29598,6301,29601,29604,29605,29608,29609,29611],{},[31,29599,29600],{},"\u002Fitems\u002F1",[31,29602,29603],{},"\u002Fitems\u002F2","로 이동해도 ",[31,29606,29607],{},"ItemDetailView"," 인스턴스는 유지된다. 컴포넌트를 새로 만들지 않으므로 최초 진입 때 사용한 ",[31,29610,29577],{}," 는 호출되지 않아서 데이터를 가져오지 않고 무반응이었다.",[82,29613,29615],{"className":1154,"code":29614,"language":1156,"meta":87,"style":87},"import { onBeforeRouteUpdate } from 'vue-router'\n\nonBeforeRouteUpdate(to => {\n  const itemId = Number(to.params.itemId)\n\n  fetchItem(itemId)\n})\n",[31,29616,29617,29629,29633,29646,29660,29664,29672],{"__ignoreMap":87},[91,29618,29619,29621,29624,29626],{"class":93,"line":94},[91,29620,2499],{"class":566},[91,29622,29623],{"class":101}," { onBeforeRouteUpdate } ",[91,29625,2505],{"class":566},[91,29627,29628],{"class":169}," 'vue-router'\n",[91,29630,29631],{"class":93,"line":105},[91,29632,1450],{"emptyLinePlaceholder":846},[91,29634,29635,29638,29640,29642,29644],{"class":93,"line":121},[91,29636,29637],{"class":97},"onBeforeRouteUpdate",[91,29639,795],{"class":101},[91,29641,23700],{"class":1172},[91,29643,11859],{"class":566},[91,29645,102],{"class":101},[91,29647,29648,29650,29653,29655,29657],{"class":93,"line":134},[91,29649,2641],{"class":566},[91,29651,29652],{"class":108}," itemId",[91,29654,1366],{"class":566},[91,29656,7916],{"class":97},[91,29658,29659],{"class":101},"(to.params.itemId)\n",[91,29661,29662],{"class":93,"line":228},[91,29663,1450],{"emptyLinePlaceholder":846},[91,29665,29666,29669],{"class":93,"line":250},[91,29667,29668],{"class":97},"  fetchItem",[91,29670,29671],{"class":101},"(itemId)\n",[91,29673,29674],{"class":93,"line":260},[91,29675,9444],{"class":101},[16,29677,29678,29679,29681],{},"최초 진입의 데이터 조회는 기존 로직에서 처리하고, 같은 컴포넌트 안에서 라우트 파라미터가 바뀔 때만 ",[31,29680,29637],{}," 가드가 다음 데이터를 불러온다. 라우트 전환과 관련된 로직을 컴포넌트의 일반적인 반응형 상태 감시와 구분할 수 있다는 점도 이 방식이 읽기 편했다.",[16,29683,29684,29685,29687,29688,29690],{},"라우트 파라미터를 ",[31,29686,1884],{},"해서 데이터를 다시 조회할 수도 있다. 일단 ",[31,29689,1884],{}," 를 선호하지 않기도 하고, 라우트 전환으로 범위를 명확히 하고 싶어서 사용했다.",[49,29692,29694],{"id":29693},"서로-다른-경로가-같은-목록-컴포넌트를-사용할-때","서로 다른 경로가 같은 목록 컴포넌트를 사용할 때",[16,29696,29697],{},"다른 문제도 있었다. 두 메뉴는 서로 다른 라우트 경로를 사용하지만 실제 화면은 같은 목록 컴포넌트로 구성했다.",[82,29699,29701],{"className":1154,"code":29700,"language":1156,"meta":87,"style":87},"const activeListRoute = {\n  path: 'active',\n  name: 'ActiveList',\n  component: () => import('@\u002Fviews\u002Fitems\u002FItemListView.vue'),\n}\n\nconst archivedListRoute = {\n  path: 'archived',\n  name: 'ArchivedList',\n  component: () => import('@\u002Fviews\u002Fitems\u002FItemListView.vue'),\n}\n",[31,29702,29703,29714,29723,29732,29749,29753,29757,29768,29777,29786,29802],{"__ignoreMap":87},[91,29704,29705,29707,29710,29712],{"class":93,"line":94},[91,29706,1968],{"class":566},[91,29708,29709],{"class":108}," activeListRoute",[91,29711,1366],{"class":566},[91,29713,102],{"class":101},[91,29715,29716,29718,29721],{"class":93,"line":105},[91,29717,24725],{"class":101},[91,29719,29720],{"class":169},"'active'",[91,29722,7560],{"class":101},[91,29724,29725,29727,29730],{"class":93,"line":121},[91,29726,24735],{"class":101},[91,29728,29729],{"class":169},"'ActiveList'",[91,29731,7560],{"class":101},[91,29733,29734,29736,29738,29740,29742,29744,29747],{"class":93,"line":134},[91,29735,22214],{"class":97},[91,29737,24747],{"class":101},[91,29739,1179],{"class":566},[91,29741,24752],{"class":566},[91,29743,795],{"class":101},[91,29745,29746],{"class":169},"'@\u002Fviews\u002Fitems\u002FItemListView.vue'",[91,29748,8037],{"class":101},[91,29750,29751],{"class":93,"line":228},[91,29752,137],{"class":101},[91,29754,29755],{"class":93,"line":250},[91,29756,1450],{"emptyLinePlaceholder":846},[91,29758,29759,29761,29764,29766],{"class":93,"line":260},[91,29760,1968],{"class":566},[91,29762,29763],{"class":108}," archivedListRoute",[91,29765,1366],{"class":566},[91,29767,102],{"class":101},[91,29769,29770,29772,29775],{"class":93,"line":274},[91,29771,24725],{"class":101},[91,29773,29774],{"class":169},"'archived'",[91,29776,7560],{"class":101},[91,29778,29779,29781,29784],{"class":93,"line":284},[91,29780,24735],{"class":101},[91,29782,29783],{"class":169},"'ArchivedList'",[91,29785,7560],{"class":101},[91,29787,29788,29790,29792,29794,29796,29798,29800],{"class":93,"line":299},[91,29789,22214],{"class":97},[91,29791,24747],{"class":101},[91,29793,1179],{"class":566},[91,29795,24752],{"class":566},[91,29797,795],{"class":101},[91,29799,29746],{"class":169},[91,29801,8037],{"class":101},[91,29803,29804],{"class":93,"line":319},[91,29805,137],{"class":101},[16,29807,29808,29809,29812],{},"한 메뉴에서 다른 메뉴로 이동해도 ",[31,29810,29811],{},"ItemListView"," 인스턴스를 재사용했다. 이때는 컴포넌트가 가진 상태도 새 메뉴에 맞게 초기화해야 했다.",[16,29814,29815,29816,29818,29819,29821],{},"라우트 상위에 ",[31,29817,23507],{},"를 한 단계 두고 현재 경로를 ",[31,29820,9452],{},"로 사용했다.",[82,29823,29825],{"className":1934,"code":29824,"language":1936,"meta":87,"style":87},"\u003C!-- ItemRouterView.vue -->\n\u003Cscript setup lang=\"ts\">\nimport { useRoute } from 'vue-router'\n\nconst route = useRoute()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CRouterView :key=\"route.path\" \u002F>\n\u003C\u002Ftemplate>\n",[31,29826,29827,29832,29848,29858,29862,29874,29882,29886,29894,29910],{"__ignoreMap":87},[91,29828,29829],{"class":93,"line":94},[91,29830,29831],{"class":1343},"\u003C!-- ItemRouterView.vue -->\n",[91,29833,29834,29836,29838,29840,29842,29844,29846],{"class":93,"line":105},[91,29835,156],{"class":101},[91,29837,1945],{"class":159},[91,29839,1948],{"class":97},[91,29841,1951],{"class":97},[91,29843,166],{"class":101},[91,29845,1956],{"class":169},[91,29847,173],{"class":101},[91,29849,29850,29852,29854,29856],{"class":93,"line":121},[91,29851,2499],{"class":566},[91,29853,12217],{"class":101},[91,29855,2505],{"class":566},[91,29857,29628],{"class":169},[91,29859,29860],{"class":93,"line":134},[91,29861,1450],{"emptyLinePlaceholder":846},[91,29863,29864,29866,29868,29870,29872],{"class":93,"line":228},[91,29865,1968],{"class":566},[91,29867,12259],{"class":108},[91,29869,1366],{"class":566},[91,29871,12264],{"class":97},[91,29873,9313],{"class":101},[91,29875,29876,29878,29880],{"class":93,"line":250},[91,29877,493],{"class":101},[91,29879,1945],{"class":159},[91,29881,173],{"class":101},[91,29883,29884],{"class":93,"line":260},[91,29885,1450],{"emptyLinePlaceholder":846},[91,29887,29888,29890,29892],{"class":93,"line":274},[91,29889,156],{"class":101},[91,29891,2118],{"class":159},[91,29893,173],{"class":101},[91,29895,29896,29898,29900,29903,29905,29908],{"class":93,"line":284},[91,29897,2125],{"class":101},[91,29899,23507],{"class":159},[91,29901,29902],{"class":97}," :key",[91,29904,166],{"class":101},[91,29906,29907],{"class":169},"\"route.path\"",[91,29909,2147],{"class":101},[91,29911,29912,29914,29916],{"class":93,"line":299},[91,29913,493],{"class":101},[91,29915,2118],{"class":159},[91,29917,173],{"class":101},[16,29919,29920,29923,29924,29926],{},[31,29921,29922],{},"route.path","가 달라지면 자식 뷰의 key도 바뀐다. Vue는 기존 목록 컴포넌트를 재사용하지 않고 새 인스턴스를 만들며 ",[31,29925,29577],{},"도 다시 실행한다.",[16,29928,29929],{},"상위 라우트와 레이아웃은 유지되므로 사이드바 같은 공통 UI는 다시 만들지 않는다. 대신 자식 목록이 가진 입력값, 스크롤 위치와 로컬 상태는 모두 초기화한다. 이 사례에서는 메뉴가 바뀔 때 목록 상태까지 새로 시작해야 했기 때문에 원하는 동작이었다.",[49,29931,6005],{"id":6004},[1112,29933],{"description":29934,"favicon":29935,"host":29936,"title":29937,"url":29938},"The official Router for Vue.js","https:\u002F\u002Frouter.vuejs.org\u002Flogo.svg","router.vuejs.org","Vue Router and the Composition API | Vue Router","https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fadvanced\u002Fcomposition-api.html",[1112,29940],{"description":29934,"favicon":29935,"host":29936,"title":29941,"url":29942},"Dynamic Route Matching with Params | Vue Router","https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fessentials\u002Fdynamic-matching.html",[1112,29944],{"description":29934,"favicon":29935,"host":29936,"title":29945,"url":29946},"Navigation Guards | Vue Router","https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fadvanced\u002Fnavigation-guards.html",[829,29948,29949],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":87,"searchDepth":105,"depth":105,"links":29951},[29952,29953,29954],{"id":29581,"depth":105,"text":29582},{"id":29693,"depth":105,"text":29694},{"id":6004,"depth":105,"text":6005},"2025-11-28","같은 상세 페이지에서 라우트 파라미터만 바뀔 때는 onBeforeRouteUpdate로 데이터를 다시 조회하고, 서로 다른 경로가 같은 목록 컴포넌트를 사용할 때는 RouterView key로 상태를 초기화한 과정을 정리한다.","vue3-route-component-reuse-data-refresh",{},"\u002Fblog\u002Fvue3-route-component-reuse-data-refresh",{"title":29566,"description":29956},{"loc":29959},"blog\u002Fvue3-route-component-reuse-data-refresh",[16324,21680,29964,29965],"routing","composition-api","WOpT9t2lbgj2X189PVwVfDyQkWx3gOz69S9wBfliYeU",{"id":29968,"title":29969,"body":29970,"created":30430,"description":30431,"extension":843,"filename":30432,"meta":30433,"navigation":846,"path":30434,"seo":30435,"sitemap":30436,"stem":30437,"subject":7200,"tags":30438,"updated":30430,"volume":853,"__hash__":30442},"blog\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge.md","Merge와 Squash Merge는 언제 사용할까",{"type":8,"value":29971,"toc":30421},[29972,29982,29986,29989,30075,30078,30081,30085,30088,30094,30109,30115,30118,30133,30146,30150,30160,30166,30178,30181,30198,30201,30205,30221,30224,30227,30264,30267,30271,30274,30277,30296,30299,30307,30311,30314,30325,30363,30366,30398,30401,30403,30408,30413,30418],[16,29973,29974,29975,5321,29978,29981],{},"GitHub Pull Request를 병합할 때 ",[31,29976,29977],{},"Create a merge commit",[31,29979,29980],{},"Squash and merge"," 중 무엇을 선택해야 할지 고민할 때가 있다. 선택 기준은 히스토리를 깔끔하게 보이게 만드는 데 있지 않다. 작업 브랜치를 병합 후에도 이어서 사용할지, 개별 커밋을 보존할 가치가 있는지, 장애가 났을 때 어느 단위로 되돌릴지를 먼저 판단해야 한다.",[49,29983,29985],{"id":29984},"선택-기준부터-정리","선택 기준부터 정리",[16,29987,29988],{},"매번 개인 취향으로 선택하면 main의 히스토리 규칙이 일정하지 않게 된다. 팀의 규칙을 만들고 지키는 것이 결국 중요하다.",[812,29990,29991,30004],{},[3001,29992,29993],{},[3004,29994,29995,29998,30001],{},[3007,29996,29997],{},"상황",[3007,29999,30000],{},"적합한 방식",[3007,30002,30003],{},"이유",[3017,30005,30006,30017,30034,30044,30055,30065],{},[3004,30007,30008,30011,30014],{},[3022,30009,30010],{},"PR이 끝나면 feature 브랜치를 삭제한다",[3022,30012,30013],{},"Squash Merge",[3022,30015,30016],{},"PR의 변경을 커밋 하나로 정리할 수 있다",[3004,30018,30019,30029,30031],{},[3022,30020,30021,30022,64,30025,30028],{},"리뷰 과정에서 ",[31,30023,30024],{},"fix",[31,30026,30027],{},"wip"," 커밋이 많이 생긴다",[3022,30030,30013],{},[3022,30032,30033],{},"중간 작업 커밋을 main에 남기지 않는다",[3004,30035,30036,30039,30041],{},[3022,30037,30038],{},"PR 하나를 하나의 배포·revert 단위로 사용한다",[3022,30040,30013],{},[3022,30042,30043],{},"생성된 커밋 하나를 되돌리면 된다",[3004,30045,30046,30049,30052],{},[3022,30047,30048],{},"같은 브랜치를 여러 차례 base 브랜치에 병합한다",[3022,30050,30051],{},"Merge",[3022,30053,30054],{},"기존 브랜치와 base의 조상 관계를 유지한다",[3004,30056,30057,30060,30062],{},[3022,30058,30059],{},"feature 브랜치에서 다른 후속 브랜치가 갈라진다",[3022,30061,30051],{},[3022,30063,30064],{},"커밋 관계를 보존해 후속 브랜치 흐름을 추적하기 쉽다",[3004,30066,30067,30070,30072],{},[3022,30068,30069],{},"개별 커밋이 각각 의미 있는 검토 단위다",[3022,30071,30051],{},[3022,30073,30074],{},"작성 순서와 커밋별 변경을 그대로 남긴다",[16,30076,30077],{},"일반적인 짧은 feature 브랜치 중심의 제품 개발이라면 Squash Merge를 기본으로 두고, 장기 브랜치나 커밋 관계를 보존해야 하는 작업에 Merge를 허용할 수 있다. 반대로 커밋 자체를 리뷰와 배포의 중요한 기록으로 관리한다면 Merge를 기본으로 두는 편이 맞다.",[16,30079,30080],{},"GitHub 저장소 설정에서는 허용할 병합 방식을 제한할 수 있다. 선형 히스토리를 강제하는 branch protection을 사용한다면 merge commit을 사용할 수 없으므로 Squash Merge나 Rebase Merge를 선택해야 한다.",[49,30082,30084],{"id":30083},"짧은-feature-브랜치는-squash-merge로-정리하기","짧은 feature 브랜치는 Squash Merge로 정리하기",[16,30086,30087],{},"작은 기능 하나를 위해 브랜치를 만들고 PR이 끝나면 삭제하는 흐름에서는 개발 중간 커밋을 main에 모두 남길 필요가 없는 경우가 많다.",[82,30089,30092],{"className":30090,"code":30091,"language":1099,"meta":87},[1097],"A---B                 main\n     \\\n      C---D---E       feature\n",[31,30093,30091],{"__ignoreMap":87},[16,30095,30096,64,30099,64,30101,30104,30105,30108],{},[31,30097,30098],{},"C",[31,30100,12660],{},[31,30102,30103],{},"E","가 리뷰 반영과 작은 수정으로 나뉜 커밋이라면 Squash Merge는 최종 변경을 합친 새 커밋 ",[31,30106,30107],{},"S","를 main에 추가한다.",[82,30110,30113],{"className":30111,"code":30112,"language":1099,"meta":87},[1097],"A---B---S             main\n     \\\n      C---D---E       feature\n",[31,30114,30112],{"__ignoreMap":87},[16,30116,30117],{},"main에서는 PR 하나가 커밋 하나로 보인다. 배포 후 이 기능 전체를 되돌려야 한다면 squash commit을 직접 revert할 수 있다.",[82,30119,30121],{"className":6839,"code":30120,"language":6841,"meta":87,"style":87},"git revert S\n",[31,30122,30123],{"__ignoreMap":87},[91,30124,30125,30127,30130],{"class":93,"line":94},[91,30126,7202],{"class":97},[91,30128,30129],{"class":169}," revert",[91,30131,30132],{"class":169}," S\n",[16,30134,20150,30135,64,30137,64,30139,30141,30142,30145],{},[31,30136,30098],{},[31,30138,12660],{},[31,30140,30103],{},"는 main의 조상이 되지 않는다. 개별 커밋을 기준으로 ",[31,30143,30144],{},"git bisect","를 하거나 특정 중간 변경만 revert하려면 사용할 지점이 줄어든다. Squash Merge를 기본으로 사용하려면 PR 제목과 설명을 최종 커밋 메시지로 써도 될 정도로 정리해야 한다.",[49,30147,30149],{"id":30148},"중간-커밋-자체가-중요하면-merge-사용하기","중간 커밋 자체가 중요하면 Merge 사용하기",[16,30151,30152,30153,30155,30156,30159],{},"feature 브랜치의 커밋이 각각 독립적으로 이해할 수 있는 작업 단위라면 Merge로 보존할 가치가 있다. GitHub의 ",[31,30154,29977],{},"은 feature 커밋을 유지하면서 두 브랜치를 부모로 갖는 merge commit ",[31,30157,30158],{},"M","을 만든다.",[82,30161,30164],{"className":30162,"code":30163,"language":1099,"meta":87},[1097],"A---B---------M       main\n     \\       \u002F\n      C---D---E       feature\n",[31,30165,30163],{"__ignoreMap":87},[16,30167,30168,30170,30171,64,30173,64,30175,30177],{},[31,30169,30158],{},"은 base 브랜치의 기존 커밋과 feature 브랜치의 마지막 커밋을 부모로 갖는다. main에서 ",[31,30172,30098],{},[31,30174,12660],{},[31,30176,30103],{},"까지 도달할 수 있으므로 Git은 feature 브랜치가 병합됐다는 관계를 알 수 있다.",[16,30179,30180],{},"이 방식은 다음 상황에서 유용하다.",[24,30182,30183,30186,30192,30195],{},[27,30184,30185],{},"기능 구현을 여러 개의 의미 있는 커밋으로 나눠 리뷰한다.",[27,30187,30188,30189,30191],{},"특정 커밋이 문제를 만든 시점을 ",[31,30190,30144],{},"로 찾고 싶다.",[27,30193,30194],{},"feature 브랜치를 기준으로 다른 브랜치가 이미 파생됐다.",[27,30196,30197],{},"release나 integration 브랜치를 장기간 유지하며 반복 병합한다.",[16,30199,30200],{},"반면 리뷰 과정의 사소한 수정까지 모두 main에 남는다. Merge를 사용하려면 브랜치 안에서도 커밋 메시지와 변경 범위를 어느 정도 정리하는 편이 좋다.",[49,30202,30204],{"id":30203},"장기-브랜치에는-squash-merge를-피하기","장기 브랜치에는 Squash Merge를 피하기",[16,30206,30207,30208,30210,30211,64,30213,64,30215,30217,30218,3512],{},"Squash Merge 이후에도 같은 feature 브랜치에서 작업을 계속하면 문제가 생길 수 있다. squash commit ",[31,30209,30107],{},"는 main에만 존재하고 원래 브랜치의 ",[31,30212,30098],{},[31,30214,12660],{},[31,30216,30103],{},"와 부모 관계가 없다. 두 브랜치의 공통 조상은 여전히 ",[31,30219,30220],{},"B",[16,30222,30223],{},"이 상태에서 같은 feature 브랜치로 새 PR을 만들면 이전에 squash한 커밋이 비교 범위에 다시 나타날 수 있다. 충돌이 있었다면 같은 충돌을 반복해서 해결할 가능성도 커진다. GitHub 공식 문서도 병합 후 계속 사용할 head 브랜치에는 Squash Merge를 권장하지 않는다.",[16,30225,30226],{},"Squash Merge를 사용했다면 기존 브랜치를 삭제하고 최신 main에서 다음 브랜치를 만드는 흐름이 단순하다.",[82,30228,30230],{"className":6839,"code":30229,"language":6841,"meta":87,"style":87},"git switch main\ngit pull --ff-only\ngit switch -c feature\u002Fnext-task\n",[31,30231,30232,30242,30252],{"__ignoreMap":87},[91,30233,30234,30236,30239],{"class":93,"line":94},[91,30235,7202],{"class":97},[91,30237,30238],{"class":169}," switch",[91,30240,30241],{"class":169}," main\n",[91,30243,30244,30246,30249],{"class":93,"line":105},[91,30245,7202],{"class":97},[91,30247,30248],{"class":169}," pull",[91,30250,30251],{"class":108}," --ff-only\n",[91,30253,30254,30256,30258,30261],{"class":93,"line":121},[91,30255,7202],{"class":97},[91,30257,30238],{"class":169},[91,30259,30260],{"class":108}," -c",[91,30262,30263],{"class":169}," feature\u002Fnext-task\n",[16,30265,30266],{},"같은 브랜치를 유지해야 하는 작업이라면 Merge를 사용해 조상 관계를 보존하는 편이 낫다.",[49,30268,30270],{"id":30269},"빠른-되돌리기만-보면-squash-merge가-단순하다","빠른 되돌리기만 보면 Squash Merge가 단순하다",[16,30272,30273],{},"Squash Merge는 PR 전체가 커밋 하나이므로 기능 단위 revert가 단순하다. 하지만 기능 안에서 일부 변경만 되돌리려면 squash commit의 내용을 직접 나누어 처리해야 한다.",[16,30275,30276],{},"Merge는 개별 커밋을 보존하므로 작은 단위의 원인 추적과 revert에 유리하다. 병합 전체를 merge commit으로 되돌릴 때는 mainline 부모를 지정해야 한다.",[82,30278,30280],{"className":6839,"code":30279,"language":6841,"meta":87,"style":87},"git revert -m 1 M\n",[31,30281,30282],{"__ignoreMap":87},[91,30283,30284,30286,30288,30291,30293],{"class":93,"line":94},[91,30285,7202],{"class":97},[91,30287,30129],{"class":169},[91,30289,30290],{"class":108}," -m",[91,30292,6594],{"class":108},[91,30294,30295],{"class":169}," M\n",[16,30297,30298],{},"따라서 “revert가 쉬운 방식”도 팀이 되돌리는 단위에 따라 다르다.",[24,30300,30301,30304],{},[27,30302,30303],{},"PR 전체를 한 번에 되돌리는 경우가 많다면 Squash Merge가 단순하다.",[27,30305,30306],{},"기능 내부의 특정 커밋만 골라 되돌려야 한다면 Merge가 유리하다.",[49,30308,30310],{"id":30309},"git이-두-방식을-다르게-보는-이유","Git이 두 방식을 다르게 보는 이유",[16,30312,30313],{},"두 방식의 핵심 차이는 커밋 수보다 부모 관계에 있다. Merge는 feature 브랜치의 마지막 커밋을 merge commit의 부모로 기록하지만, Squash Merge는 최종 변경만 복사한 새 커밋을 만든다.",[16,30315,30316,30317,30320,30321,30324],{},"로컬의 ",[31,30318,30319],{},"git merge --squash","도 작업 트리와 인덱스를 병합 결과처럼 만들 뿐 ",[31,30322,30323],{},"MERGE_HEAD","를 기록하지 않는다. 이후 커밋은 일반적인 단일 부모 커밋이 된다.",[82,30326,30328],{"className":6839,"code":30327,"language":6841,"meta":87,"style":87},"git switch main\ngit merge --squash feature\ngit commit -m \"feat: 검색 기능 추가\"\n",[31,30329,30330,30338,30351],{"__ignoreMap":87},[91,30331,30332,30334,30336],{"class":93,"line":94},[91,30333,7202],{"class":97},[91,30335,30238],{"class":169},[91,30337,30241],{"class":169},[91,30339,30340,30342,30345,30348],{"class":93,"line":105},[91,30341,7202],{"class":97},[91,30343,30344],{"class":169}," merge",[91,30346,30347],{"class":108}," --squash",[91,30349,30350],{"class":169}," feature\n",[91,30352,30353,30355,30358,30360],{"class":93,"line":121},[91,30354,7202],{"class":97},[91,30356,30357],{"class":169}," commit",[91,30359,30290],{"class":108},[91,30361,30362],{"class":169}," \"feat: 검색 기능 추가\"\n",[16,30364,30365],{},"이 차이 때문에 Squash Merge 이후에는 feature의 tip이 main의 조상으로 판정되지 않을 수 있다.",[82,30367,30369],{"className":6839,"code":30368,"language":6841,"meta":87,"style":87},"git merge-base --is-ancestor feature main\ngit branch --merged main\n",[31,30370,30371,30386],{"__ignoreMap":87},[91,30372,30373,30375,30378,30381,30384],{"class":93,"line":94},[91,30374,7202],{"class":97},[91,30376,30377],{"class":169}," merge-base",[91,30379,30380],{"class":108}," --is-ancestor",[91,30382,30383],{"class":169}," feature",[91,30385,30241],{"class":169},[91,30387,30388,30390,30393,30396],{"class":93,"line":105},[91,30389,7202],{"class":97},[91,30391,30392],{"class":169}," branch",[91,30394,30395],{"class":108}," --merged",[91,30397,30241],{"class":169},[16,30399,30400],{},"변경 내용이 main에 들어갔더라도 로컬 Git의 병합 브랜치 목록에는 feature가 나타나지 않을 수 있다. GitHub의 PR 상태와 Git 커밋 그래프의 조상 관계는 구분해서 봐야 한다.",[49,30402,6005],{"id":6004},[1112,30404],{"description":30405,"host":7154,"title":30406,"url":30407},"GitHub의 merge commit, squash merge, rebase merge가 만드는 이력과 장기 브랜치 주의사항","About pull request merges - GitHub Docs","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpull-requests\u002Fcollaborating-with-pull-requests\u002Fincorporating-changes-from-a-pull-request\u002Fabout-pull-request-merges",[1112,30409],{"description":30410,"host":7154,"title":30411,"url":30412},"저장소의 squash merge 허용 여부와 기본 커밋 메시지 설정","Configuring commit squashing for pull requests - GitHub Docs","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fconfiguring-pull-request-merges\u002Fconfiguring-commit-squashing-for-pull-requests",[1112,30414],{"description":30415,"host":7170,"title":30416,"url":30417},"git merge와 --squash 옵션의 작업 트리, 인덱스, MERGE_HEAD 동작","git-merge Documentation","https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-merge",[829,30419,30420],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":87,"searchDepth":105,"depth":105,"links":30422},[30423,30424,30425,30426,30427,30428,30429],{"id":29984,"depth":105,"text":29985},{"id":30083,"depth":105,"text":30084},{"id":30148,"depth":105,"text":30149},{"id":30203,"depth":105,"text":30204},{"id":30269,"depth":105,"text":30270},{"id":30309,"depth":105,"text":30310},{"id":6004,"depth":105,"text":6005},"2025-06-04","짧은 feature 브랜치, 장기 브랜치, 커밋 추적과 되돌리기 방식에 따라 GitHub Merge와 Squash Merge를 선택하는 기준을 정리한다.","when-to-use-merge-or-squash-merge",{},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge",{"title":29969,"description":30431},{"loc":30434},"blog\u002Fwhen-to-use-merge-or-squash-merge",[7202,7203,30439,30440,30441],"merge","squash-merge","git-history","-k80p0B79ddE1q17bTfa8owcKPo_sjnswByZzGmSRYU",{"id":30444,"title":30445,"body":30446,"created":4430,"description":30493,"extension":843,"filename":30494,"meta":30495,"navigation":846,"path":30498,"seo":30499,"sitemap":30500,"stem":30501,"subject":851,"tags":30502,"updated":4430,"volume":1863,"__hash__":30503},"blog\u002Fblog\u002Fword-wrap-overflow-wrap.md","word-wrap 이 overflow-wrap 로 변경됨",{"type":8,"value":30447,"toc":30491},[30448,30453,30460,30465,30482],[16,30449,30450],{},[19,30451],{"alt":21,"src":30452},"\u002Fblog\u002Fimg\u002Fword-wrap-overflow-wrap\u002Fword-wrap-overflow-wrap1.png",[16,30454,30455,30456,30459],{},"어느날 gemini 가 리뷰에서 알려준 지식이 있다. 대충 보고 ",[31,30457,30458],{},"overflow-wrap"," 을 쓰라는데 뭐가 다르길래 쓰라고 하지해서 자세히 읽어봤다. alias 격이면 더더욱 바꿀 필요가 없지 않은가 했다. s",[1112,30461],{"description":30462,"favicon":9248,"host":5541,"title":30463,"url":30464},"overflow-wrap CSS 요소는 어떤 문자가 내용 칸 밖으로 넘치지 않게 브라우저가 단어 마디 안에 줄을 바꿔야 할 것인지 아닌지를 정할 때 사용됩니다.","overflow-wrap - CSS: Cascading Style Sheets | MDN","https:\u002F\u002Fdeveloper.mozilla.org\u002Fko\u002Fdocs\u002FWeb\u002FCSS\u002Foverflow-wrap",[1722,30466,30467],{},[16,30468,30469,30471,30472,30475,30476,30478,30479,30481],{},[91,30470,1728],{},"\n이 속성은 처음에 마이크로소프트에서 표준이 아니고 접두어가 없는",[31,30473,30474],{},"word-wrap","으로 나왔고, 대부분 브라우저에서 똑같은 이름으로 구현되었습니다. 요즘은",[31,30477,30458],{},"으로 다시 지어지고,",[31,30480,30474],{},"은 동의어가 되었습니다.",[16,30483,30484,30485,30487,30488,30490],{},"같은 단어이지만 이제는 ",[31,30486,30458],{}," 을 써야한다. mdn 에는 ",[31,30489,30474],{}," 메뉴도 없다.",{"title":87,"searchDepth":105,"depth":105,"links":30492},[],"지금까지 사용했던 word-wrap 이 overflow-wrap 으로 변경되었다.","word-wrap-overflow-wrap",{"references":30496},[30497],"[[overflow-wrap (word-wrap)]]","\u002Fblog\u002Fword-wrap-overflow-wrap",{"title":30445,"description":30493},{"loc":30498},"blog\u002Fword-wrap-overflow-wrap",[86],"Y16f3Nt1Tr75nGsg6WfK4diddbM7VtwNljkqXYPbbtQ",[30505,31161,31637,31926,32748,33966,34060,34333,34575,34666,34871,35092,35686,35948,36099,37052,37436,38255,38801,42279,42457,42548,43289,43955,44286,44386,44675,44958,45047,45266,45828,45937,46059,46831,47429,49831,49988,50423,54184,54512,54857],{"id":5,"title":6,"body":30506,"created":841,"description":842,"extension":843,"filename":844,"meta":31157,"navigation":846,"path":847,"seo":31158,"sitemap":31159,"stem":850,"subject":851,"tags":31160,"updated":841,"volume":853,"__hash__":854},{"type":8,"value":30507,"toc":31148},[30508,30510,30514,30528,30530,30548,30550,30584,30588,30890,30894,30900,30902,30906,30912,30914,30916,30994,30996,31084,31088,31096,31098,31100,31102,31104,31110,31112,31134,31136,31138,31142,31146],[11,30509,14],{"id":13},[16,30511,30512],{},[19,30513],{"alt":21,"src":22},[24,30515,30516,30522,30524,30526],{},[27,30517,29,30518,34,30520,38],{},[31,30519,33],{},[31,30521,37],{},[27,30523,41],{},[27,30525,44],{},[27,30527,47],{},[49,30529,51],{"id":51},[24,30531,30532,30542],{},[27,30533,56,30534],{},[24,30535,30536],{},[27,30537,30538,64,30540,68],{},[31,30539,63],{},[31,30541,67],{},[27,30543,71,30544],{},[24,30545,30546],{},[27,30547,76],{},[11,30549,80],{"id":79},[82,30551,30552],{"className":84,"code":85,"language":86,"meta":87,"style":87},[31,30553,30554,30560,30570,30580],{"__ignoreMap":87},[91,30555,30556,30558],{"class":93,"line":94},[91,30557,98],{"class":97},[91,30559,102],{"class":101},[91,30561,30562,30564,30566,30568],{"class":93,"line":105},[91,30563,109],{"class":108},[91,30565,112],{"class":101},[91,30567,115],{"class":108},[91,30569,118],{"class":101},[91,30571,30572,30574,30576,30578],{"class":93,"line":121},[91,30573,124],{"class":108},[91,30575,112],{"class":101},[91,30577,129],{"class":108},[91,30579,118],{"class":101},[91,30581,30582],{"class":93,"line":134},[91,30583,137],{"class":101},[16,30585,140,30586,144],{},[31,30587,143],{},[82,30589,30590],{"className":147,"code":148,"language":149,"meta":87,"style":87},[31,30591,30592,30606,30620,30638,30652,30670,30678,30690,30698,30712,30730,30744,30762,30770,30782,30790,30804,30822,30836,30854,30862,30874,30882],{"__ignoreMap":87},[91,30593,30594,30596,30598,30600,30602,30604],{"class":93,"line":94},[91,30595,156],{"class":101},[91,30597,160],{"class":159},[91,30599,163],{"class":97},[91,30601,166],{"class":101},[91,30603,170],{"class":169},[91,30605,173],{"class":101},[91,30607,30608,30610,30612,30614,30616,30618],{"class":93,"line":105},[91,30609,178],{"class":101},[91,30611,160],{"class":159},[91,30613,163],{"class":97},[91,30615,166],{"class":101},[91,30617,187],{"class":169},[91,30619,173],{"class":101},[91,30621,30622,30624,30626,30628,30630,30632,30634,30636],{"class":93,"line":121},[91,30623,194],{"class":101},[91,30625,160],{"class":159},[91,30627,163],{"class":97},[91,30629,166],{"class":101},[91,30631,203],{"class":169},[91,30633,206],{"class":101},[91,30635,160],{"class":159},[91,30637,173],{"class":101},[91,30639,30640,30642,30644,30646,30648,30650],{"class":93,"line":134},[91,30641,194],{"class":101},[91,30643,160],{"class":159},[91,30645,163],{"class":97},[91,30647,166],{"class":101},[91,30649,223],{"class":169},[91,30651,173],{"class":101},[91,30653,30654,30656,30658,30660,30662,30664,30666,30668],{"class":93,"line":228},[91,30655,231],{"class":101},[91,30657,160],{"class":159},[91,30659,163],{"class":97},[91,30661,166],{"class":101},[91,30663,240],{"class":169},[91,30665,243],{"class":101},[91,30667,160],{"class":159},[91,30669,173],{"class":101},[91,30671,30672,30674,30676],{"class":93,"line":250},[91,30673,253],{"class":101},[91,30675,160],{"class":159},[91,30677,173],{"class":101},[91,30679,30680,30682,30684,30686,30688],{"class":93,"line":260},[91,30681,194],{"class":101},[91,30683,160],{"class":159},[91,30685,267],{"class":101},[91,30687,160],{"class":159},[91,30689,173],{"class":101},[91,30691,30692,30694,30696],{"class":93,"line":274},[91,30693,277],{"class":101},[91,30695,160],{"class":159},[91,30697,173],{"class":101},[91,30699,30700,30702,30704,30706,30708,30710],{"class":93,"line":284},[91,30701,178],{"class":101},[91,30703,160],{"class":159},[91,30705,163],{"class":97},[91,30707,166],{"class":101},[91,30709,187],{"class":169},[91,30711,173],{"class":101},[91,30713,30714,30716,30718,30720,30722,30724,30726,30728],{"class":93,"line":299},[91,30715,194],{"class":101},[91,30717,160],{"class":159},[91,30719,163],{"class":97},[91,30721,166],{"class":101},[91,30723,203],{"class":169},[91,30725,312],{"class":101},[91,30727,160],{"class":159},[91,30729,173],{"class":101},[91,30731,30732,30734,30736,30738,30740,30742],{"class":93,"line":319},[91,30733,194],{"class":101},[91,30735,160],{"class":159},[91,30737,163],{"class":97},[91,30739,166],{"class":101},[91,30741,223],{"class":169},[91,30743,173],{"class":101},[91,30745,30746,30748,30750,30752,30754,30756,30758,30760],{"class":93,"line":334},[91,30747,231],{"class":101},[91,30749,160],{"class":159},[91,30751,163],{"class":97},[91,30753,166],{"class":101},[91,30755,345],{"class":169},[91,30757,348],{"class":101},[91,30759,160],{"class":159},[91,30761,173],{"class":101},[91,30763,30764,30766,30768],{"class":93,"line":355},[91,30765,253],{"class":101},[91,30767,160],{"class":159},[91,30769,173],{"class":101},[91,30771,30772,30774,30776,30778,30780],{"class":93,"line":364},[91,30773,194],{"class":101},[91,30775,160],{"class":159},[91,30777,371],{"class":101},[91,30779,160],{"class":159},[91,30781,173],{"class":101},[91,30783,30784,30786,30788],{"class":93,"line":378},[91,30785,277],{"class":101},[91,30787,160],{"class":159},[91,30789,173],{"class":101},[91,30791,30792,30794,30796,30798,30800,30802],{"class":93,"line":387},[91,30793,178],{"class":101},[91,30795,160],{"class":159},[91,30797,163],{"class":97},[91,30799,166],{"class":101},[91,30801,187],{"class":169},[91,30803,173],{"class":101},[91,30805,30806,30808,30810,30812,30814,30816,30818,30820],{"class":93,"line":402},[91,30807,194],{"class":101},[91,30809,160],{"class":159},[91,30811,163],{"class":97},[91,30813,166],{"class":101},[91,30815,203],{"class":169},[91,30817,415],{"class":101},[91,30819,160],{"class":159},[91,30821,173],{"class":101},[91,30823,30824,30826,30828,30830,30832,30834],{"class":93,"line":422},[91,30825,194],{"class":101},[91,30827,160],{"class":159},[91,30829,163],{"class":97},[91,30831,166],{"class":101},[91,30833,433],{"class":169},[91,30835,173],{"class":101},[91,30837,30838,30840,30842,30844,30846,30848,30850,30852],{"class":93,"line":438},[91,30839,231],{"class":101},[91,30841,160],{"class":159},[91,30843,163],{"class":97},[91,30845,166],{"class":101},[91,30847,345],{"class":169},[91,30849,451],{"class":101},[91,30851,160],{"class":159},[91,30853,173],{"class":101},[91,30855,30856,30858,30860],{"class":93,"line":458},[91,30857,253],{"class":101},[91,30859,160],{"class":159},[91,30861,173],{"class":101},[91,30863,30864,30866,30868,30870,30872],{"class":93,"line":467},[91,30865,194],{"class":101},[91,30867,160],{"class":159},[91,30869,474],{"class":101},[91,30871,160],{"class":159},[91,30873,173],{"class":101},[91,30875,30876,30878,30880],{"class":93,"line":481},[91,30877,277],{"class":101},[91,30879,160],{"class":159},[91,30881,173],{"class":101},[91,30883,30884,30886,30888],{"class":93,"line":490},[91,30885,493],{"class":101},[91,30887,160],{"class":159},[91,30889,173],{"class":101},[16,30891,30892],{},[19,30893],{"alt":21,"src":502},[16,30895,505,30896,508,30898,512],{},[31,30897,143],{},[31,30899,511],{},[49,30901,515],{"id":515},[16,30903,30904],{},[19,30905],{"alt":21,"src":520},[16,30907,523,30908,527,30910,531],{},[31,30909,526],{},[31,30911,530],{},[16,30913,534],{},[49,30915,538],{"id":537},[82,30917,30918],{"className":84,"code":541,"language":86,"meta":87,"style":87},[31,30919,30920,30928,30940,30950,30960,30970,30980,30990],{"__ignoreMap":87},[91,30921,30922,30924,30926],{"class":93,"line":94},[91,30923,548],{"class":101},[91,30925,551],{"class":159},[91,30927,102],{"class":101},[91,30929,30930,30932,30934,30936,30938],{"class":93,"line":105},[91,30931,558],{"class":108},[91,30933,112],{"class":101},[91,30935,563],{"class":108},[91,30937,567],{"class":566},[91,30939,118],{"class":101},[91,30941,30942,30944,30946,30948],{"class":93,"line":121},[91,30943,574],{"class":108},[91,30945,112],{"class":101},[91,30947,579],{"class":108},[91,30949,118],{"class":101},[91,30951,30952,30954,30956,30958],{"class":93,"line":134},[91,30953,586],{"class":108},[91,30955,112],{"class":101},[91,30957,591],{"class":108},[91,30959,118],{"class":101},[91,30961,30962,30964,30966,30968],{"class":93,"line":228},[91,30963,598],{"class":108},[91,30965,112],{"class":101},[91,30967,603],{"class":108},[91,30969,118],{"class":101},[91,30971,30972,30974,30976,30978],{"class":93,"line":250},[91,30973,610],{"class":108},[91,30975,112],{"class":101},[91,30977,115],{"class":108},[91,30979,118],{"class":101},[91,30981,30982,30984,30986,30988],{"class":93,"line":260},[91,30983,621],{"class":108},[91,30985,112],{"class":101},[91,30987,129],{"class":108},[91,30989,118],{"class":101},[91,30991,30992],{"class":93,"line":274},[91,30993,137],{"class":101},[16,30995,634],{},[82,30997,30998],{"className":84,"code":637,"language":86,"meta":87,"style":87},[31,30999,31000,31006,31018,31028,31038,31048,31058,31068,31080],{"__ignoreMap":87},[91,31001,31002,31004],{"class":93,"line":94},[91,31003,644],{"class":97},[91,31005,102],{"class":101},[91,31007,31008,31010,31012,31014,31016],{"class":93,"line":105},[91,31009,558],{"class":108},[91,31011,112],{"class":101},[91,31013,563],{"class":108},[91,31015,567],{"class":566},[91,31017,118],{"class":101},[91,31019,31020,31022,31024,31026],{"class":93,"line":121},[91,31021,574],{"class":108},[91,31023,112],{"class":101},[91,31025,579],{"class":108},[91,31027,118],{"class":101},[91,31029,31030,31032,31034,31036],{"class":93,"line":134},[91,31031,586],{"class":108},[91,31033,112],{"class":101},[91,31035,591],{"class":108},[91,31037,118],{"class":101},[91,31039,31040,31042,31044,31046],{"class":93,"line":228},[91,31041,598],{"class":108},[91,31043,112],{"class":101},[91,31045,603],{"class":108},[91,31047,118],{"class":101},[91,31049,31050,31052,31054,31056],{"class":93,"line":250},[91,31051,610],{"class":108},[91,31053,112],{"class":101},[91,31055,115],{"class":108},[91,31057,118],{"class":101},[91,31059,31060,31062,31064,31066],{"class":93,"line":260},[91,31061,621],{"class":108},[91,31063,112],{"class":101},[91,31065,129],{"class":108},[91,31067,118],{"class":101},[91,31069,31070,31072,31074,31076,31078],{"class":93,"line":274},[91,31071,713],{"class":108},[91,31073,112],{"class":101},[91,31075,718],{"class":108},[91,31077,721],{"class":101},[91,31079,724],{"class":101},[91,31081,31082],{"class":93,"line":284},[91,31083,137],{"class":101},[16,31085,731,31086,735],{},[31,31087,734],{},[16,31089,31090,741,31092,744,31094,748],{},[31,31091,740],{},[31,31093,734],{},[31,31095,747],{},[49,31097,752],{"id":751},[16,31099,755],{},[757,31101,33],{"id":33},[16,31103,761],{},[24,31105,31106,31108],{},[27,31107,766],{},[27,31109,769],{},[771,31111,774],{"id":773},[24,31113,31114,31122],{},[27,31115,779,31116],{},[24,31117,31118],{},[27,31119,31120,787],{},[31,31121,786],{},[27,31123,790,31124,795,31126,799,31128,799,31130,799,31132,809],{},[792,31125,794],{},[31,31127,798],{},[31,31129,802],{},[31,31131,805],{},[31,31133,808],{},[757,31135,812],{"id":812},[771,31137,815],{"id":815},[16,31139,31140,821],{},[31,31141,820],{},[16,31143,31144,827],{},[31,31145,826],{},[829,31147,831],{},{"title":87,"searchDepth":105,"depth":105,"links":31149},[31150,31151,31152,31153],{"id":51,"depth":105,"text":51},{"id":515,"depth":105,"text":515},{"id":537,"depth":105,"text":538},{"id":751,"depth":105,"text":752,"children":31154},[31155,31156],{"id":33,"depth":121,"text":33},{"id":812,"depth":121,"text":812},{},{"title":6,"description":842},{"loc":847},[86],{"id":856,"title":857,"body":31162,"created":1501,"description":1502,"extension":843,"filename":1503,"meta":31633,"navigation":846,"path":1505,"seo":31634,"sitemap":31635,"stem":1508,"subject":1509,"tags":31636,"updated":1501,"volume":853,"__hash__":1513},{"type":8,"value":31163,"toc":31627},[31164,31166,31222,31224,31226,31230,31236,31248,31256,31332,31337,31341,31343,31345,31347,31351,31353,31355,31357,31359,31361,31363,31483,31487,31489,31491,31493,31499,31623,31625],[16,31165,862],{},[24,31167,31168,31182,31208],{},[27,31169,31170,870,31172],{},[792,31171,869],{},[24,31173,31174,31178],{},[27,31175,31176,878],{},[792,31177,877],{},[27,31179,31180,884],{},[792,31181,883],{},[27,31183,31184,890,31186],{},[792,31185,889],{},[24,31187,31188,31192,31196,31200],{},[27,31189,31190,898],{},[792,31191,897],{},[27,31193,31194,904],{},[792,31195,903],{},[27,31197,31198,910],{},[792,31199,909],{},[27,31201,31202,64,31204,64,31206,922],{},[792,31203,915],{},[792,31205,918],{},[792,31207,921],{},[27,31209,31210,928,31212],{},[792,31211,927],{},[24,31213,31214,31218],{},[27,31215,31216,936],{},[792,31217,935],{},[27,31219,31220,942],{},[792,31221,941],{},[16,31223,945],{},[11,31225,949],{"id":948},[16,31227,952,31228,956],{},[31,31229,955],{},[16,31231,959,31232,963,31234,967],{},[31,31233,962],{},[31,31235,966],{},[82,31237,31238],{"className":970,"code":971,"language":972,"meta":87,"style":87},[31,31239,31240,31244],{"__ignoreMap":87},[91,31241,31242],{"class":93,"line":94},[91,31243,979],{},[91,31245,31246],{"class":93,"line":105},[91,31247,984],{},[16,31249,31250,989,31252,993,31254,997],{},[31,31251,962],{},[31,31253,992],{},[31,31255,996],{},[82,31257,31258],{"className":1000,"code":1001,"language":1002,"meta":87,"style":87},[31,31259,31260,31264,31268,31272,31276,31280,31284,31288,31292,31296,31300,31304,31308,31312,31316,31320,31324,31328],{"__ignoreMap":87},[91,31261,31262],{"class":93,"line":94},[91,31263,1009],{},[91,31265,31266],{"class":93,"line":105},[91,31267,1014],{},[91,31269,31270],{"class":93,"line":121},[91,31271,1019],{},[91,31273,31274],{"class":93,"line":134},[91,31275,1024],{},[91,31277,31278],{"class":93,"line":228},[91,31279,1029],{},[91,31281,31282],{"class":93,"line":250},[91,31283,1034],{},[91,31285,31286],{"class":93,"line":260},[91,31287,1039],{},[91,31289,31290],{"class":93,"line":274},[91,31291,1044],{},[91,31293,31294],{"class":93,"line":284},[91,31295,1049],{},[91,31297,31298],{"class":93,"line":299},[91,31299,1054],{},[91,31301,31302],{"class":93,"line":319},[91,31303,1059],{},[91,31305,31306],{"class":93,"line":334},[91,31307,1064],{},[91,31309,31310],{"class":93,"line":355},[91,31311,1069],{},[91,31313,31314],{"class":93,"line":364},[91,31315,1074],{},[91,31317,31318],{"class":93,"line":378},[91,31319,1079],{},[91,31321,31322],{"class":93,"line":387},[91,31323,1084],{},[91,31325,31326],{"class":93,"line":402},[91,31327,1089],{},[91,31329,31330],{"class":93,"line":422},[91,31331,137],{},[82,31333,31335],{"className":31334,"code":1098,"language":1099},[1097],[31,31336,1098],{"__ignoreMap":87},[16,31338,31339,1106],{},[31,31340,966],{},[11,31342,1110],{"id":1109},[1112,31344],{"description":1114,"host":1115,"title":1116,"url":1117,"favicon":1118},[16,31346,1121],{},[16,31348,1124,31349,1128],{},[31,31350,1127],{},[49,31352,1132],{"id":1131},[16,31354,1135],{},[16,31356,1138],{},[1112,31358],{"description":1141,"host":1142,"title":1143,"url":1144},[16,31360,1147],{},[757,31362,1151],{"id":1150},[82,31364,31365],{"className":1154,"code":1155,"language":1156,"meta":87,"style":87},[31,31366,31367,31383,31391,31411,31431,31435,31455,31475,31479],{"__ignoreMap":87},[91,31368,31369,31371,31373,31375,31377,31379,31381],{"class":93,"line":94},[91,31370,1163],{"class":101},[91,31372,1166],{"class":97},[91,31374,1169],{"class":101},[91,31376,1173],{"class":1172},[91,31378,1176],{"class":101},[91,31380,1179],{"class":566},[91,31382,102],{"class":101},[91,31384,31385,31387,31389],{"class":93,"line":105},[91,31386,1186],{"class":101},[91,31388,1189],{"class":97},[91,31390,1192],{"class":101},[91,31392,31393,31395,31397,31399,31401,31403,31405,31407,31409],{"class":93,"line":121},[91,31394,1197],{"class":101},[91,31396,1200],{"class":97},[91,31398,1169],{"class":101},[91,31400,1205],{"class":1172},[91,31402,1208],{"class":566},[91,31404,1211],{"class":108},[91,31406,1176],{"class":101},[91,31408,1179],{"class":566},[91,31410,102],{"class":101},[91,31412,31413,31415,31417,31419,31421,31423,31425,31427,31429],{"class":93,"line":134},[91,31414,1222],{"class":101},[91,31416,1225],{"class":97},[91,31418,795],{"class":101},[91,31420,1230],{"class":169},[91,31422,1173],{"class":101},[91,31424,1235],{"class":169},[91,31426,1238],{"class":101},[91,31428,1241],{"class":169},[91,31430,1244],{"class":101},[91,31432,31433],{"class":93,"line":228},[91,31434,1249],{"class":101},[91,31436,31437,31439,31441,31443,31445,31447,31449,31451,31453],{"class":93,"line":250},[91,31438,1197],{"class":101},[91,31440,1256],{"class":97},[91,31442,1169],{"class":101},[91,31444,1261],{"class":1172},[91,31446,1208],{"class":566},[91,31448,1211],{"class":108},[91,31450,1176],{"class":101},[91,31452,1179],{"class":566},[91,31454,102],{"class":101},[91,31456,31457,31459,31461,31463,31465,31467,31469,31471,31473],{"class":93,"line":260},[91,31458,1222],{"class":101},[91,31460,1261],{"class":97},[91,31462,795],{"class":101},[91,31464,1282],{"class":169},[91,31466,1173],{"class":101},[91,31468,1235],{"class":169},[91,31470,1238],{"class":101},[91,31472,1241],{"class":169},[91,31474,1293],{"class":101},[91,31476,31477],{"class":93,"line":274},[91,31478,1298],{"class":101},[91,31480,31481],{"class":93,"line":284},[91,31482,1303],{"class":101},[16,31484,31485,1309],{},[31,31486,1308],{},[49,31488,1313],{"id":1312},[1112,31490],{"description":1316,"host":1317,"title":1318,"url":1319,"favicon":1320,"image":1321},[16,31492,1324],{},[16,31494,31495,1329,31497,1333],{},[31,31496,1308],{},[31,31498,1332],{},[82,31500,31501],{"className":1154,"code":1336,"language":1156,"meta":87,"style":87},[31,31502,31503,31507,31527,31533,31547,31561,31573,31585,31589,31593,31599,31611],{"__ignoreMap":87},[91,31504,31505],{"class":93,"line":94},[91,31506,1344],{"class":1343},[91,31508,31509,31511,31513,31515,31517,31519,31521,31523,31525],{"class":93,"line":105},[91,31510,1349],{"class":566},[91,31512,1352],{"class":101},[91,31514,1208],{"class":566},[91,31516,1357],{"class":108},[91,31518,1360],{"class":566},[91,31520,1363],{"class":108},[91,31522,1366],{"class":566},[91,31524,1363],{"class":108},[91,31526,118],{"class":101},[91,31528,31529,31531],{"class":93,"line":121},[91,31530,1375],{"class":566},[91,31532,102],{"class":101},[91,31534,31535,31537,31539,31541,31543,31545],{"class":93,"line":134},[91,31536,1382],{"class":566},[91,31538,1385],{"class":108},[91,31540,1366],{"class":566},[91,31542,1390],{"class":566},[91,31544,1393],{"class":97},[91,31546,1396],{"class":101},[91,31548,31549,31551,31553,31555,31557,31559],{"class":93,"line":228},[91,31550,1382],{"class":566},[91,31552,1403],{"class":108},[91,31554,1366],{"class":566},[91,31556,1408],{"class":101},[91,31558,1411],{"class":97},[91,31560,1414],{"class":101},[91,31562,31563,31565,31567,31569,31571],{"class":93,"line":250},[91,31564,1419],{"class":101},[91,31566,166],{"class":566},[91,31568,1408],{"class":101},[91,31570,1426],{"class":97},[91,31572,1429],{"class":101},[91,31574,31575,31577,31579,31581,31583],{"class":93,"line":260},[91,31576,1434],{"class":101},[91,31578,1256],{"class":566},[91,31580,1439],{"class":101},[91,31582,1442],{"class":566},[91,31584,1445],{"class":101},[91,31586,31587],{"class":93,"line":274},[91,31588,1450],{"emptyLinePlaceholder":846},[91,31590,31591],{"class":93,"line":284},[91,31592,1455],{"class":1343},[91,31594,31595,31597],{"class":93,"line":299},[91,31596,1375],{"class":566},[91,31598,102],{"class":101},[91,31600,31601,31603,31605,31607,31609],{"class":93,"line":319},[91,31602,1466],{"class":101},[91,31604,166],{"class":566},[91,31606,1408],{"class":101},[91,31608,1473],{"class":97},[91,31610,1476],{"class":101},[91,31612,31613,31615,31617,31619,31621],{"class":93,"line":334},[91,31614,1434],{"class":101},[91,31616,1256],{"class":566},[91,31618,1439],{"class":101},[91,31620,1442],{"class":566},[91,31622,1445],{"class":101},[16,31624,1491],{},[829,31626,1494],{},{"title":87,"searchDepth":105,"depth":105,"links":31628},[31629,31632],{"id":1131,"depth":105,"text":1132,"children":31630},[31631],{"id":1150,"depth":121,"text":1151},{"id":1312,"depth":105,"text":1313},{},{"title":857,"description":1502},{"loc":1505},[1511,1512],{"id":1515,"title":1516,"body":31638,"created":1854,"description":1855,"extension":843,"filename":1856,"meta":31922,"navigation":846,"path":1858,"seo":31923,"sitemap":31924,"stem":1861,"subject":851,"tags":31925,"updated":1854,"volume":1863,"__hash__":1864},{"type":8,"value":31639,"toc":31920},[31640,31794,31798,31800,31802,31804,31818,31916,31918],[82,31641,31642],{"className":84,"code":1521,"language":86,"meta":87,"style":87},[31,31643,31644,31650,31660,31672,31702,31712,31722,31728,31732,31740,31752,31766,31770,31774,31782,31786,31790],{"__ignoreMap":87},[91,31645,31646,31648],{"class":93,"line":94},[91,31647,1528],{"class":97},[91,31649,102],{"class":101},[91,31651,31652,31654,31656,31658],{"class":93,"line":105},[91,31653,1535],{"class":108},[91,31655,112],{"class":101},[91,31657,1540],{"class":108},[91,31659,118],{"class":101},[91,31661,31662,31664,31666,31668,31670],{"class":93,"line":121},[91,31663,1547],{"class":108},[91,31665,112],{"class":101},[91,31667,1552],{"class":108},[91,31669,567],{"class":566},[91,31671,118],{"class":101},[91,31673,31674,31676,31678,31680,31682,31684,31686,31688,31690,31692,31694,31696,31698,31700],{"class":93,"line":134},[91,31675,1561],{"class":108},[91,31677,1564],{"class":101},[91,31679,1567],{"class":108},[91,31681,1570],{"class":566},[91,31683,1573],{"class":108},[91,31685,795],{"class":101},[91,31687,1578],{"class":108},[91,31689,64],{"class":101},[91,31691,1583],{"class":108},[91,31693,64],{"class":101},[91,31695,1578],{"class":108},[91,31697,64],{"class":101},[91,31699,1583],{"class":108},[91,31701,1594],{"class":101},[91,31703,31704,31706,31708,31710],{"class":93,"line":228},[91,31705,109],{"class":108},[91,31707,112],{"class":101},[91,31709,115],{"class":108},[91,31711,118],{"class":101},[91,31713,31714,31716,31718,31720],{"class":93,"line":250},[91,31715,1609],{"class":108},[91,31717,112],{"class":101},[91,31719,1614],{"class":108},[91,31721,118],{"class":101},[91,31723,31724,31726],{"class":93,"line":260},[91,31725,1621],{"class":108},[91,31727,1624],{"class":101},[91,31729,31730],{"class":93,"line":274},[91,31731,1629],{"class":101},[91,31733,31734,31736,31738],{"class":93,"line":284},[91,31735,1634],{"class":101},[91,31737,1637],{"class":108},[91,31739,102],{"class":101},[91,31741,31742,31744,31746,31748,31750],{"class":93,"line":299},[91,31743,1644],{"class":108},[91,31745,112],{"class":101},[91,31747,1649],{"class":108},[91,31749,567],{"class":566},[91,31751,118],{"class":101},[91,31753,31754,31756,31758,31760,31762,31764],{"class":93,"line":319},[91,31755,1658],{"class":108},[91,31757,1564],{"class":101},[91,31759,1583],{"class":108},[91,31761,1570],{"class":566},[91,31763,1667],{"class":108},[91,31765,118],{"class":101},[91,31767,31768],{"class":93,"line":334},[91,31769,1674],{"class":101},[91,31771,31772],{"class":93,"line":355},[91,31773,1679],{"class":101},[91,31775,31776,31778,31780],{"class":93,"line":364},[91,31777,1684],{"class":101},[91,31779,1578],{"class":108},[91,31781,118],{"class":101},[91,31783,31784],{"class":93,"line":378},[91,31785,1693],{"class":101},[91,31787,31788],{"class":93,"line":387},[91,31789,1698],{"class":101},[91,31791,31792],{"class":93,"line":402},[91,31793,137],{"class":101},[16,31795,31796],{},[19,31797],{"alt":1516,"src":1707},[16,31799,1710],{},[1112,31801],{"description":1713,"host":1714,"image":1715,"title":1716,"url":1717},[16,31803,1720],{},[1722,31805,31806],{},[16,31807,31808,1729,31810,1732,31812,1736,31814,1740,31816,1744],{},[91,31809,1728],{},[31,31811,1578],{},[31,31813,1735],{},[31,31815,1739],{},[31,31817,1743],{},[82,31819,31820],{"className":84,"code":1747,"language":86,"meta":87,"style":87},[31,31821,31822,31828,31838,31848,31878,31886,31898,31912],{"__ignoreMap":87},[91,31823,31824,31826],{"class":93,"line":94},[91,31825,1754],{"class":97},[91,31827,102],{"class":101},[91,31829,31830,31832,31834,31836],{"class":93,"line":105},[91,31831,109],{"class":108},[91,31833,112],{"class":101},[91,31835,115],{"class":108},[91,31837,118],{"class":101},[91,31839,31840,31842,31844,31846],{"class":93,"line":121},[91,31841,1547],{"class":108},[91,31843,112],{"class":101},[91,31845,1578],{"class":108},[91,31847,118],{"class":101},[91,31849,31850,31852,31854,31856,31858,31860,31862,31864,31866,31868,31870,31872,31874,31876],{"class":93,"line":134},[91,31851,1561],{"class":108},[91,31853,1564],{"class":101},[91,31855,1567],{"class":108},[91,31857,1570],{"class":566},[91,31859,1573],{"class":108},[91,31861,795],{"class":101},[91,31863,1578],{"class":108},[91,31865,64],{"class":101},[91,31867,1583],{"class":108},[91,31869,64],{"class":101},[91,31871,1578],{"class":108},[91,31873,64],{"class":101},[91,31875,1583],{"class":108},[91,31877,1594],{"class":101},[91,31879,31880,31882,31884],{"class":93,"line":228},[91,31881,1634],{"class":101},[91,31883,1813],{"class":108},[91,31885,102],{"class":101},[91,31887,31888,31890,31892,31894,31896],{"class":93,"line":250},[91,31889,1644],{"class":108},[91,31891,112],{"class":101},[91,31893,1649],{"class":108},[91,31895,567],{"class":566},[91,31897,118],{"class":101},[91,31899,31900,31902,31904,31906,31908,31910],{"class":93,"line":260},[91,31901,1658],{"class":108},[91,31903,1564],{"class":101},[91,31905,1583],{"class":108},[91,31907,1570],{"class":566},[91,31909,1667],{"class":108},[91,31911,118],{"class":101},[91,31913,31914],{"class":93,"line":274},[91,31915,137],{"class":101},[16,31917,1848],{},[829,31919,1851],{},{"title":87,"searchDepth":105,"depth":105,"links":31921},[],{},{"title":1516,"description":1855},{"loc":1858},[86],{"id":1866,"title":1867,"body":31927,"created":2854,"description":2855,"extension":843,"filename":2856,"meta":32744,"navigation":846,"path":2858,"seo":32745,"sitemap":32746,"stem":2861,"subject":2862,"tags":32747,"updated":2854,"volume":1863,"__hash__":2866},{"type":8,"value":31928,"toc":32741},[31929,31933,31947,31949,31953,31957,31959,31967,32151,32159,32269,32273,32275,32285,32287,32293,32331,32335,32417,32423,32425,32429,32607,32615,32737,32739],[16,31930,1872,31931,1876],{},[792,31932,1875],{},[24,31934,31935,31939,31943],{},[27,31936,1881,31937,1885],{},[31,31938,1884],{},[27,31940,1888,31941,1892],{},[31,31942,1891],{},[27,31944,1895,31945,1898],{},[31,31946,1200],{},[16,31948,1901],{},[16,31950,1904,31951,1907],{},[31,31952,1884],{},[16,31954,1910,31955,1913],{},[31,31956,1891],{},[11,31958,1917],{"id":1916},[16,31960,1920,31961,1924,31963,1927,31965,1931],{},[31,31962,1923],{},[31,31964,1923],{},[31,31966,1930],{},[82,31968,31969],{"className":1934,"code":1935,"language":1936,"meta":87,"style":87},[31,31970,31971,31987,31991,32011,32015,32025,32031,32035,32043,32047,32051,32059,32067,32075,32079,32083,32087,32097,32103,32107,32115,32123,32143],{"__ignoreMap":87},[91,31972,31973,31975,31977,31979,31981,31983,31985],{"class":93,"line":94},[91,31974,156],{"class":101},[91,31976,1945],{"class":159},[91,31978,1948],{"class":97},[91,31980,1951],{"class":97},[91,31982,166],{"class":101},[91,31984,1956],{"class":169},[91,31986,173],{"class":101},[91,31988,31989],{"class":93,"line":105},[91,31990,1963],{"class":1343},[91,31992,31993,31995,31997,31999,32001,32003,32005,32007,32009],{"class":93,"line":121},[91,31994,1968],{"class":566},[91,31996,1971],{"class":108},[91,31998,1366],{"class":566},[91,32000,1976],{"class":108},[91,32002,1235],{"class":101},[91,32004,1981],{"class":97},[91,32006,156],{"class":101},[91,32008,1986],{"class":108},[91,32010,1989],{"class":101},[91,32012,32013],{"class":93,"line":134},[91,32014,1450],{"emptyLinePlaceholder":846},[91,32016,32017,32019,32021,32023],{"class":93,"line":228},[91,32018,1998],{"class":566},[91,32020,2001],{"class":566},[91,32022,2004],{"class":97},[91,32024,2007],{"class":101},[91,32026,32027,32029],{"class":93,"line":250},[91,32028,2012],{"class":566},[91,32030,102],{"class":101},[91,32032,32033],{"class":93,"line":260},[91,32034,2019],{"class":1343},[91,32036,32037,32039,32041],{"class":93,"line":274},[91,32038,2024],{"class":566},[91,32040,2027],{"class":97},[91,32042,2030],{"class":101},[91,32044,32045],{"class":93,"line":284},[91,32046,1674],{"class":101},[91,32048,32049],{"class":93,"line":299},[91,32050,2039],{"class":1343},[91,32052,32053,32055,32057],{"class":93,"line":319},[91,32054,2044],{"class":101},[91,32056,1930],{"class":97},[91,32058,2030],{"class":101},[91,32060,32061,32063,32065],{"class":93,"line":334},[91,32062,2053],{"class":101},[91,32064,1256],{"class":566},[91,32066,2058],{"class":101},[91,32068,32069,32071,32073],{"class":93,"line":355},[91,32070,2044],{"class":101},[91,32072,2065],{"class":97},[91,32074,2068],{"class":101},[91,32076,32077],{"class":93,"line":364},[91,32078,1698],{"class":101},[91,32080,32081],{"class":93,"line":378},[91,32082,137],{"class":101},[91,32084,32085],{"class":93,"line":387},[91,32086,1450],{"emptyLinePlaceholder":846},[91,32088,32089,32091,32093,32095],{"class":93,"line":402},[91,32090,2085],{"class":97},[91,32092,2088],{"class":101},[91,32094,1179],{"class":566},[91,32096,102],{"class":101},[91,32098,32099,32101],{"class":93,"line":422},[91,32100,2097],{"class":97},[91,32102,2030],{"class":101},[91,32104,32105],{"class":93,"line":438},[91,32106,1303],{"class":101},[91,32108,32109,32111,32113],{"class":93,"line":458},[91,32110,493],{"class":101},[91,32112,1945],{"class":159},[91,32114,173],{"class":101},[91,32116,32117,32119,32121],{"class":93,"line":467},[91,32118,156],{"class":101},[91,32120,2118],{"class":159},[91,32122,173],{"class":101},[91,32124,32125,32127,32129,32131,32133,32135,32137,32139,32141],{"class":93,"line":481},[91,32126,2125],{"class":101},[91,32128,2128],{"class":159},[91,32130,2131],{"class":101},[91,32132,2134],{"class":97},[91,32134,166],{"class":101},[91,32136,2139],{"class":169},[91,32138,2142],{"class":101},[91,32140,2139],{"class":169},[91,32142,2147],{"class":101},[91,32144,32145,32147,32149],{"class":93,"line":490},[91,32146,493],{"class":101},[91,32148,2118],{"class":159},[91,32150,173],{"class":101},[16,32152,2158,32153,2162,32155,2166,32157,2169],{},[31,32154,2161],{},[31,32156,2165],{},[31,32158,2142],{},[82,32160,32161],{"className":1934,"code":2172,"language":1936,"meta":87,"style":87},[31,32162,32163,32179,32191,32205,32209,32213,32227,32231,32237,32241,32245,32257,32261],{"__ignoreMap":87},[91,32164,32165,32167,32169,32171,32173,32175,32177],{"class":93,"line":94},[91,32166,156],{"class":101},[91,32168,1945],{"class":159},[91,32170,1948],{"class":97},[91,32172,1951],{"class":97},[91,32174,166],{"class":101},[91,32176,1956],{"class":169},[91,32178,173],{"class":101},[91,32180,32181,32183,32185,32187,32189],{"class":93,"line":105},[91,32182,1968],{"class":566},[91,32184,2197],{"class":108},[91,32186,1366],{"class":566},[91,32188,2202],{"class":97},[91,32190,2205],{"class":101},[91,32192,32193,32195,32197,32199,32201,32203],{"class":93,"line":121},[91,32194,2210],{"class":1172},[91,32196,1208],{"class":566},[91,32198,1976],{"class":97},[91,32200,156],{"class":101},[91,32202,1986],{"class":108},[91,32204,173],{"class":101},[91,32206,32207],{"class":93,"line":134},[91,32208,2225],{"class":101},[91,32210,32211],{"class":93,"line":228},[91,32212,1450],{"emptyLinePlaceholder":846},[91,32214,32215,32217,32219,32221,32223,32225],{"class":93,"line":250},[91,32216,2085],{"class":97},[91,32218,795],{"class":101},[91,32220,1998],{"class":566},[91,32222,2240],{"class":101},[91,32224,1179],{"class":566},[91,32226,102],{"class":101},[91,32228,32229],{"class":93,"line":260},[91,32230,2249],{"class":1343},[91,32232,32233,32235],{"class":93,"line":274},[91,32234,2254],{"class":566},[91,32236,2257],{"class":101},[91,32238,32239],{"class":93,"line":284},[91,32240,1629],{"class":101},[91,32242,32243],{"class":93,"line":299},[91,32244,2266],{"class":1343},[91,32246,32247,32249,32251,32253,32255],{"class":93,"line":319},[91,32248,2271],{"class":101},[91,32250,1225],{"class":97},[91,32252,795],{"class":101},[91,32254,2278],{"class":169},[91,32256,1594],{"class":101},[91,32258,32259],{"class":93,"line":334},[91,32260,1303],{"class":101},[91,32262,32263,32265,32267],{"class":93,"line":355},[91,32264,493],{"class":101},[91,32266,1945],{"class":159},[91,32268,173],{"class":101},[16,32270,32271,2298],{},[31,32272,2297],{},[11,32274,2302],{"id":2301},[16,32276,2305,32277,2309,32279,2312,32281,2315,32283,2318],{},[31,32278,2308],{},[31,32280,2161],{},[31,32282,1930],{},[31,32284,2297],{},[11,32286,2322],{"id":2321},[16,32288,2325,32289,34,32291,2332],{},[31,32290,2328],{},[31,32292,2331],{},[82,32294,32295],{"className":1154,"code":2335,"language":1156,"meta":87,"style":87},[31,32296,32297,32317,32321],{"__ignoreMap":87},[91,32298,32299,32301,32303,32305,32307,32309,32311,32313,32315],{"class":93,"line":94},[91,32300,1968],{"class":566},[91,32302,1971],{"class":108},[91,32304,1366],{"class":566},[91,32306,1976],{"class":108},[91,32308,1235],{"class":101},[91,32310,1981],{"class":97},[91,32312,156],{"class":101},[91,32314,1986],{"class":108},[91,32316,1989],{"class":101},[91,32318,32319],{"class":93,"line":105},[91,32320,2362],{"class":1343},[91,32322,32323,32325,32327,32329],{"class":93,"line":121},[91,32324,2328],{"class":97},[91,32326,795],{"class":101},[91,32328,2371],{"class":169},[91,32330,2374],{"class":101},[16,32332,2158,32333,2379],{},[31,32334,2328],{},[82,32336,32337],{"className":1154,"code":2382,"language":1156,"meta":87,"style":87},[31,32338,32339,32343,32367,32371,32385,32391,32397,32409,32413],{"__ignoreMap":87},[91,32340,32341],{"class":93,"line":94},[91,32342,2389],{"class":1343},[91,32344,32345,32347,32349,32351,32353,32355,32357,32359,32361,32363,32365],{"class":93,"line":105},[91,32346,1968],{"class":566},[91,32348,1971],{"class":108},[91,32350,1366],{"class":566},[91,32352,2400],{"class":97},[91,32354,156],{"class":101},[91,32356,2405],{"class":97},[91,32358,156],{"class":101},[91,32360,1986],{"class":108},[91,32362,2412],{"class":101},[91,32364,2371],{"class":169},[91,32366,1594],{"class":101},[91,32368,32369],{"class":93,"line":121},[91,32370,1450],{"emptyLinePlaceholder":846},[91,32372,32373,32375,32377,32379,32381,32383],{"class":93,"line":134},[91,32374,2085],{"class":97},[91,32376,795],{"class":101},[91,32378,1998],{"class":566},[91,32380,2240],{"class":101},[91,32382,1179],{"class":566},[91,32384,102],{"class":101},[91,32386,32387,32389],{"class":93,"line":228},[91,32388,2439],{"class":566},[91,32390,2442],{"class":101},[91,32392,32393,32395],{"class":93,"line":250},[91,32394,2024],{"class":566},[91,32396,2449],{"class":101},[91,32398,32399,32401,32403,32405,32407],{"class":93,"line":260},[91,32400,2454],{"class":101},[91,32402,1225],{"class":97},[91,32404,795],{"class":101},[91,32406,2461],{"class":169},[91,32408,1594],{"class":101},[91,32410,32411],{"class":93,"line":274},[91,32412,1698],{"class":101},[91,32414,32415],{"class":93,"line":284},[91,32416,1303],{"class":101},[16,32418,32419,2476,32421,2479],{},[31,32420,2331],{},[31,32422,2371],{},[49,32424,2483],{"id":2482},[16,32426,32427,2489],{},[31,32428,2488],{},[82,32430,32431],{"className":1154,"code":2492,"language":1156,"meta":87,"style":87},[31,32432,32433,32445,32449,32479,32483,32487,32491,32495,32517,32523,32527,32531,32535,32539,32543,32553,32565,32569,32579,32593,32597,32603],{"__ignoreMap":87},[91,32434,32435,32437,32439,32441,32443],{"class":93,"line":94},[91,32436,2499],{"class":566},[91,32438,2502],{"class":101},[91,32440,2505],{"class":566},[91,32442,2508],{"class":169},[91,32444,118],{"class":101},[91,32446,32447],{"class":93,"line":105},[91,32448,2515],{"class":1343},[91,32450,32451,32453,32455,32457,32459,32461,32463,32465,32467,32469,32471,32473,32475,32477],{"class":93,"line":121},[91,32452,1968],{"class":566},[91,32454,2522],{"class":108},[91,32456,1208],{"class":566},[91,32458,2527],{"class":97},[91,32460,156],{"class":101},[91,32462,2405],{"class":97},[91,32464,156],{"class":101},[91,32466,1986],{"class":108},[91,32468,2538],{"class":101},[91,32470,166],{"class":566},[91,32472,2543],{"class":97},[91,32474,795],{"class":101},[91,32476,2548],{"class":169},[91,32478,1594],{"class":101},[91,32480,32481],{"class":93,"line":134},[91,32482,1450],{"emptyLinePlaceholder":846},[91,32484,32485],{"class":93,"line":228},[91,32486,2559],{"class":1343},[91,32488,32489],{"class":93,"line":250},[91,32490,2564],{"class":1343},[91,32492,32493],{"class":93,"line":260},[91,32494,2569],{"class":1343},[91,32496,32497,32499,32501,32503,32505,32507,32509,32511,32513,32515],{"class":93,"line":274},[91,32498,2574],{"class":566},[91,32500,2001],{"class":566},[91,32502,2579],{"class":97},[91,32504,795],{"class":101},[91,32506,2584],{"class":1172},[91,32508,1208],{"class":566},[91,32510,1976],{"class":97},[91,32512,156],{"class":101},[91,32514,1986],{"class":108},[91,32516,2595],{"class":101},[91,32518,32519,32521],{"class":93,"line":284},[91,32520,2600],{"class":97},[91,32522,2603],{"class":101},[91,32524,32525],{"class":93,"line":299},[91,32526,137],{"class":101},[91,32528,32529],{"class":93,"line":319},[91,32530,1450],{"emptyLinePlaceholder":846},[91,32532,32533],{"class":93,"line":334},[91,32534,2616],{"class":1343},[91,32536,32537],{"class":93,"line":355},[91,32538,2621],{"class":1343},[91,32540,32541],{"class":93,"line":364},[91,32542,2569],{"class":1343},[91,32544,32545,32547,32549,32551],{"class":93,"line":378},[91,32546,2574],{"class":566},[91,32548,2001],{"class":566},[91,32550,2634],{"class":97},[91,32552,2007],{"class":101},[91,32554,32555,32557,32559,32561,32563],{"class":93,"line":387},[91,32556,2641],{"class":566},[91,32558,1971],{"class":108},[91,32560,1366],{"class":566},[91,32562,2400],{"class":97},[91,32564,2650],{"class":101},[91,32566,32567],{"class":93,"line":402},[91,32568,2655],{"class":1343},[91,32570,32571,32573,32575,32577],{"class":93,"line":422},[91,32572,2439],{"class":566},[91,32574,2662],{"class":101},[91,32576,2665],{"class":566},[91,32578,2668],{"class":101},[91,32580,32581,32583,32585,32587,32589,32591],{"class":93,"line":438},[91,32582,2673],{"class":566},[91,32584,2676],{"class":566},[91,32586,2679],{"class":97},[91,32588,795],{"class":101},[91,32590,2684],{"class":169},[91,32592,1594],{"class":101},[91,32594,32595],{"class":93,"line":458},[91,32596,1698],{"class":101},[91,32598,32599,32601],{"class":93,"line":467},[91,32600,2695],{"class":566},[91,32602,2449],{"class":101},[91,32604,32605],{"class":93,"line":481},[91,32606,137],{"class":101},[16,32608,2704,32609,34,32611,2709,32613,2713],{},[31,32610,2328],{},[31,32612,2331],{},[31,32614,2712],{},[82,32616,32617],{"className":1934,"code":2716,"language":1936,"meta":87,"style":87},[31,32618,32619,32635,32647,32667,32675,32683,32687,32703,32715,32729],{"__ignoreMap":87},[91,32620,32621,32623,32625,32627,32629,32631,32633],{"class":93,"line":94},[91,32622,156],{"class":101},[91,32624,1945],{"class":159},[91,32626,1948],{"class":97},[91,32628,1951],{"class":97},[91,32630,166],{"class":101},[91,32632,1956],{"class":169},[91,32634,173],{"class":101},[91,32636,32637,32639,32641,32643,32645],{"class":93,"line":105},[91,32638,2499],{"class":566},[91,32640,2741],{"class":101},[91,32642,2505],{"class":566},[91,32644,2746],{"class":169},[91,32646,118],{"class":101},[91,32648,32649,32651,32653,32655,32657,32659,32661,32663,32665],{"class":93,"line":121},[91,32650,1968],{"class":566},[91,32652,1971],{"class":108},[91,32654,1366],{"class":566},[91,32656,1976],{"class":108},[91,32658,1235],{"class":101},[91,32660,1981],{"class":97},[91,32662,156],{"class":101},[91,32664,1986],{"class":108},[91,32666,1989],{"class":101},[91,32668,32669,32671,32673],{"class":93,"line":134},[91,32670,2773],{"class":97},[91,32672,2776],{"class":101},[91,32674,2779],{"class":1343},[91,32676,32677,32679,32681],{"class":93,"line":228},[91,32678,493],{"class":101},[91,32680,1945],{"class":159},[91,32682,173],{"class":101},[91,32684,32685],{"class":93,"line":250},[91,32686,1450],{"emptyLinePlaceholder":846},[91,32688,32689,32691,32693,32695,32697,32699,32701],{"class":93,"line":260},[91,32690,156],{"class":101},[91,32692,1945],{"class":159},[91,32694,1948],{"class":97},[91,32696,1951],{"class":97},[91,32698,166],{"class":101},[91,32700,1956],{"class":169},[91,32702,173],{"class":101},[91,32704,32705,32707,32709,32711,32713],{"class":93,"line":274},[91,32706,2499],{"class":566},[91,32708,2814],{"class":101},[91,32710,2505],{"class":566},[91,32712,2746],{"class":169},[91,32714,118],{"class":101},[91,32716,32717,32719,32721,32723,32725,32727],{"class":93,"line":284},[91,32718,1968],{"class":566},[91,32720,1971],{"class":108},[91,32722,1366],{"class":566},[91,32724,2634],{"class":97},[91,32726,2833],{"class":101},[91,32728,2836],{"class":1343},[91,32730,32731,32733,32735],{"class":93,"line":299},[91,32732,493],{"class":101},[91,32734,1945],{"class":159},[91,32736,173],{"class":101},[16,32738,2847],{},[829,32740,2850],{},{"title":87,"searchDepth":105,"depth":105,"links":32742},[32743],{"id":2482,"depth":105,"text":2483},{},{"title":1867,"description":2855},{"loc":2858},[1936,2864,2865],{"id":2868,"title":2869,"body":32749,"created":4430,"description":4431,"extension":843,"filename":4432,"meta":33962,"navigation":846,"path":4434,"seo":33963,"sitemap":33964,"stem":4437,"subject":4438,"tags":33965,"updated":4430,"volume":4441,"__hash__":4442},{"type":8,"value":32750,"toc":33949},[32751,32753,32761,32763,32765,32767,32781,32785,32787,32789,32791,32796,32808,32812,32822,32824,32830,32866,32872,32880,32885,32895,32923,32925,32927,32931,32975,32981,33105,33107,33109,33115,33147,33151,33219,33225,33227,33233,33309,33313,33345,33349,33377,33379,33381,33383,33423,33431,33433,33493,33495,33563,33565,33567,33569,33597,33599,33601,33603,33645,33649,33713,33719,33739,33741,33743,33745,33750,33752,33757,33759,33851,33855,33860,33864,33877,33881,33887,33889,33891,33893,33925,33929,33945,33947],[16,32752,2874],{},[16,32754,2877,32755,34,32757,2884,32759,2888],{},[31,32756,2880],{},[31,32758,2883],{},[31,32760,2887],{},[49,32762,2892],{"id":2891},[16,32764,2895],{},[16,32766,2898],{},[24,32768,32769,32771,32773,32775,32777,32779],{},[27,32770,2903],{},[27,32772,2906],{},[27,32774,2909],{},[27,32776,2912],{},[27,32778,2915],{},[27,32780,2918],{},[16,32782,2921,32783,2925],{},[31,32784,2924],{},[49,32786,2929],{"id":2928},[16,32788,2932],{},[16,32790,2935],{},[82,32792,32794],{"className":32793,"code":2939,"language":1099,"meta":87},[1097],[31,32795,2939],{"__ignoreMap":87},[16,32797,32798,2947,32800,2951,32802,2955,32804,2959,32806,2963],{},[31,32799,2946],{},[31,32801,2950],{},[31,32803,2954],{},[31,32805,2958],{},[31,32807,2962],{},[16,32809,32810],{},[19,32811],{"alt":2968,"src":2969},[16,32813,2972,32814,2975,32816,2978,32818,2982,32820,2985],{},[31,32815,2883],{},[31,32817,2880],{},[31,32819,2981],{},[31,32821,2887],{},[49,32823,2989],{"id":2988},[16,32825,2992,32826,2978,32828,2997],{},[31,32827,2981],{},[31,32829,2880],{},[812,32831,32832,32842],{},[3001,32833,32834],{},[3004,32835,32836,32838,32840],{},[3007,32837,3009],{},[3007,32839,3012],{},[3007,32841,3015],{},[3017,32843,32844,32854],{},[3004,32845,32846,32850,32852],{},[3022,32847,32848],{},[31,32849,2981],{},[3022,32851,3028],{},[3022,32853,3031],{},[3004,32855,32856,32860,32862],{},[3022,32857,32858],{},[31,32859,2880],{},[3022,32861,3040],{},[3022,32863,32864,3045],{},[31,32865,2981],{},[16,32867,3048,32868,3051,32870,3054],{},[31,32869,2981],{},[31,32871,2880],{},[16,32873,32874,3059,32876,3063,32878,3066],{},[31,32875,2880],{},[31,32877,3062],{},[31,32879,2883],{},[82,32881,32883],{"className":32882,"code":3070,"language":1099,"meta":87},[1097],[31,32884,3070],{"__ignoreMap":87},[16,32886,3075,32887,3078,32889,3081,32891,3084,32893,3088],{},[31,32888,2880],{},[31,32890,2883],{},[31,32892,3062],{},[31,32894,3087],{},[82,32896,32897],{"className":1000,"code":3091,"language":1002,"meta":87,"style":87},[31,32898,32899,32903,32907,32911,32915,32919],{"__ignoreMap":87},[91,32900,32901],{"class":93,"line":94},[91,32902,3098],{},[91,32904,32905],{"class":93,"line":105},[91,32906,3103],{},[91,32908,32909],{"class":93,"line":121},[91,32910,3108],{},[91,32912,32913],{"class":93,"line":134},[91,32914,137],{},[91,32916,32917],{"class":93,"line":228},[91,32918,1450],{"emptyLinePlaceholder":846},[91,32920,32921],{"class":93,"line":250},[91,32922,3121],{},[16,32924,3124],{},[49,32926,3128],{"id":3127},[16,32928,3131,32929,3135],{},[31,32930,3134],{},[82,32932,32933],{"className":1000,"code":3138,"language":1002,"meta":87,"style":87},[31,32934,32935,32939,32943,32947,32951,32955,32959,32963,32967,32971],{"__ignoreMap":87},[91,32936,32937],{"class":93,"line":94},[91,32938,3145],{},[91,32940,32941],{"class":93,"line":105},[91,32942,3150],{},[91,32944,32945],{"class":93,"line":121},[91,32946,1450],{"emptyLinePlaceholder":846},[91,32948,32949],{"class":93,"line":134},[91,32950,3159],{},[91,32952,32953],{"class":93,"line":228},[91,32954,1450],{"emptyLinePlaceholder":846},[91,32956,32957],{"class":93,"line":250},[91,32958,3168],{},[91,32960,32961],{"class":93,"line":260},[91,32962,3173],{},[91,32964,32965],{"class":93,"line":274},[91,32966,137],{},[91,32968,32969],{"class":93,"line":284},[91,32970,1450],{"emptyLinePlaceholder":846},[91,32972,32973],{"class":93,"line":299},[91,32974,3186],{},[16,32976,32977,3191,32979,3194],{},[31,32978,2950],{},[31,32980,2954],{},[82,32982,32983],{"className":1000,"code":3197,"language":1002,"meta":87,"style":87},[31,32984,32985,32989,32993,32997,33001,33005,33009,33013,33017,33021,33025,33029,33033,33037,33041,33045,33049,33053,33057,33061,33065,33069,33073,33077,33081,33085,33089,33093,33097,33101],{"__ignoreMap":87},[91,32986,32987],{"class":93,"line":94},[91,32988,3204],{},[91,32990,32991],{"class":93,"line":105},[91,32992,3209],{},[91,32994,32995],{"class":93,"line":121},[91,32996,3214],{},[91,32998,32999],{"class":93,"line":134},[91,33000,3219],{},[91,33002,33003],{"class":93,"line":228},[91,33004,1693],{},[91,33006,33007],{"class":93,"line":250},[91,33008,1450],{"emptyLinePlaceholder":846},[91,33010,33011],{"class":93,"line":260},[91,33012,3232],{},[91,33014,33015],{"class":93,"line":274},[91,33016,3237],{},[91,33018,33019],{"class":93,"line":284},[91,33020,3242],{},[91,33022,33023],{"class":93,"line":299},[91,33024,1693],{},[91,33026,33027],{"class":93,"line":319},[91,33028,1450],{"emptyLinePlaceholder":846},[91,33030,33031],{"class":93,"line":334},[91,33032,3255],{},[91,33034,33035],{"class":93,"line":355},[91,33036,3237],{},[91,33038,33039],{"class":93,"line":364},[91,33040,3242],{},[91,33042,33043],{"class":93,"line":378},[91,33044,1450],{"emptyLinePlaceholder":846},[91,33046,33047],{"class":93,"line":387},[91,33048,3272],{},[91,33050,33051],{"class":93,"line":402},[91,33052,3277],{},[91,33054,33055],{"class":93,"line":422},[91,33056,3282],{},[91,33058,33059],{"class":93,"line":438},[91,33060,3287],{},[91,33062,33063],{"class":93,"line":458},[91,33064,3292],{},[91,33066,33067],{"class":93,"line":467},[91,33068,3297],{},[91,33070,33071],{"class":93,"line":481},[91,33072,3302],{},[91,33074,33075],{"class":93,"line":490},[91,33076,3307],{},[91,33078,33079],{"class":93,"line":3310},[91,33080,1450],{"emptyLinePlaceholder":846},[91,33082,33083],{"class":93,"line":3315},[91,33084,3318],{},[91,33086,33087],{"class":93,"line":3321},[91,33088,3324],{},[91,33090,33091],{"class":93,"line":3327},[91,33092,3330],{},[91,33094,33095],{"class":93,"line":3333},[91,33096,3307],{},[91,33098,33099],{"class":93,"line":3338},[91,33100,1693],{},[91,33102,33103],{"class":93,"line":3343},[91,33104,137],{},[16,33106,3348],{},[49,33108,3352],{"id":3351},[16,33110,3355,33111,3358,33113,3362],{},[31,33112,2880],{},[31,33114,3361],{},[82,33116,33117],{"className":1000,"code":3365,"language":1002,"meta":87,"style":87},[31,33118,33119,33123,33127,33131,33135,33139,33143],{"__ignoreMap":87},[91,33120,33121],{"class":93,"line":94},[91,33122,3372],{},[91,33124,33125],{"class":93,"line":105},[91,33126,3121],{},[91,33128,33129],{"class":93,"line":121},[91,33130,1450],{"emptyLinePlaceholder":846},[91,33132,33133],{"class":93,"line":134},[91,33134,3385],{},[91,33136,33137],{"class":93,"line":228},[91,33138,3390],{},[91,33140,33141],{"class":93,"line":250},[91,33142,1450],{"emptyLinePlaceholder":846},[91,33144,33145],{"class":93,"line":260},[91,33146,3399],{},[16,33148,3402,33149,3406],{},[31,33150,3405],{},[82,33152,33153],{"className":1000,"code":3409,"language":1002,"meta":87,"style":87},[31,33154,33155,33159,33163,33167,33171,33175,33179,33183,33187,33191,33195,33199,33203,33207,33211,33215],{"__ignoreMap":87},[91,33156,33157],{"class":93,"line":94},[91,33158,3416],{},[91,33160,33161],{"class":93,"line":105},[91,33162,3421],{},[91,33164,33165],{"class":93,"line":121},[91,33166,3426],{},[91,33168,33169],{"class":93,"line":134},[91,33170,3431],{},[91,33172,33173],{"class":93,"line":228},[91,33174,3436],{},[91,33176,33177],{"class":93,"line":250},[91,33178,1450],{"emptyLinePlaceholder":846},[91,33180,33181],{"class":93,"line":260},[91,33182,3445],{},[91,33184,33185],{"class":93,"line":274},[91,33186,3450],{},[91,33188,33189],{"class":93,"line":284},[91,33190,3307],{},[91,33192,33193],{"class":93,"line":299},[91,33194,1450],{"emptyLinePlaceholder":846},[91,33196,33197],{"class":93,"line":319},[91,33198,3463],{},[91,33200,33201],{"class":93,"line":334},[91,33202,3468],{},[91,33204,33205],{"class":93,"line":355},[91,33206,3307],{},[91,33208,33209],{"class":93,"line":364},[91,33210,3477],{},[91,33212,33213],{"class":93,"line":378},[91,33214,3482],{},[91,33216,33217],{"class":93,"line":387},[91,33218,3487],{},[16,33220,33221,3493,33223,3497],{},[31,33222,3492],{},[31,33224,3496],{},[49,33226,3501],{"id":3500},[16,33228,3504,33229,3508,33231,3512],{},[31,33230,3507],{},[31,33232,3511],{},[82,33234,33235],{"className":1000,"code":3515,"language":1002,"meta":87,"style":87},[31,33236,33237,33241,33245,33249,33253,33257,33261,33265,33269,33273,33277,33281,33285,33289,33293,33297,33301,33305],{"__ignoreMap":87},[91,33238,33239],{"class":93,"line":94},[91,33240,3522],{},[91,33242,33243],{"class":93,"line":105},[91,33244,3527],{},[91,33246,33247],{"class":93,"line":121},[91,33248,3532],{},[91,33250,33251],{"class":93,"line":134},[91,33252,1450],{"emptyLinePlaceholder":846},[91,33254,33255],{"class":93,"line":228},[91,33256,3541],{},[91,33258,33259],{"class":93,"line":250},[91,33260,3546],{},[91,33262,33263],{"class":93,"line":260},[91,33264,3551],{},[91,33266,33267],{"class":93,"line":274},[91,33268,3556],{},[91,33270,33271],{"class":93,"line":284},[91,33272,3561],{},[91,33274,33275],{"class":93,"line":299},[91,33276,3566],{},[91,33278,33279],{"class":93,"line":319},[91,33280,3571],{},[91,33282,33283],{"class":93,"line":334},[91,33284,1450],{"emptyLinePlaceholder":846},[91,33286,33287],{"class":93,"line":355},[91,33288,3580],{},[91,33290,33291],{"class":93,"line":364},[91,33292,3585],{},[91,33294,33295],{"class":93,"line":378},[91,33296,3590],{},[91,33298,33299],{"class":93,"line":387},[91,33300,3595],{},[91,33302,33303],{"class":93,"line":402},[91,33304,3561],{},[91,33306,33307],{"class":93,"line":422},[91,33308,137],{},[16,33310,3606,33311,3610],{},[31,33312,3609],{},[82,33314,33315],{"className":1000,"code":3613,"language":1002,"meta":87,"style":87},[31,33316,33317,33321,33325,33329,33333,33337,33341],{"__ignoreMap":87},[91,33318,33319],{"class":93,"line":94},[91,33320,3620],{},[91,33322,33323],{"class":93,"line":105},[91,33324,3625],{},[91,33326,33327],{"class":93,"line":121},[91,33328,1450],{"emptyLinePlaceholder":846},[91,33330,33331],{"class":93,"line":134},[91,33332,3634],{},[91,33334,33335],{"class":93,"line":228},[91,33336,3639],{},[91,33338,33339],{"class":93,"line":250},[91,33340,1693],{},[91,33342,33343],{"class":93,"line":260},[91,33344,137],{},[16,33346,3650,33347,3654],{},[31,33348,3653],{},[82,33350,33351],{"className":1000,"code":3657,"language":1002,"meta":87,"style":87},[31,33352,33353,33357,33361,33365,33369,33373],{"__ignoreMap":87},[91,33354,33355],{"class":93,"line":94},[91,33356,3664],{},[91,33358,33359],{"class":93,"line":105},[91,33360,3669],{},[91,33362,33363],{"class":93,"line":121},[91,33364,3674],{},[91,33366,33367],{"class":93,"line":134},[91,33368,3679],{},[91,33370,33371],{"class":93,"line":228},[91,33372,3684],{},[91,33374,33375],{"class":93,"line":250},[91,33376,137],{},[16,33378,3691],{},[49,33380,3695],{"id":3694},[16,33382,3698],{},[82,33384,33385],{"className":970,"code":3701,"language":972,"meta":87,"style":87},[31,33386,33387,33391,33395,33399,33403,33407,33411,33415,33419],{"__ignoreMap":87},[91,33388,33389],{"class":93,"line":94},[91,33390,3708],{},[91,33392,33393],{"class":93,"line":105},[91,33394,1450],{"emptyLinePlaceholder":846},[91,33396,33397],{"class":93,"line":121},[91,33398,3717],{},[91,33400,33401],{"class":93,"line":134},[91,33402,3722],{},[91,33404,33405],{"class":93,"line":228},[91,33406,3727],{},[91,33408,33409],{"class":93,"line":250},[91,33410,1450],{"emptyLinePlaceholder":846},[91,33412,33413],{"class":93,"line":260},[91,33414,3717],{},[91,33416,33417],{"class":93,"line":274},[91,33418,3740],{},[91,33420,33421],{"class":93,"line":284},[91,33422,3745],{},[16,33424,3748,33425,3752,33427,3756,33429,3760],{},[31,33426,3751],{},[31,33428,3755],{},[31,33430,3759],{},[16,33432,3763],{},[82,33434,33435],{"className":1000,"code":3766,"language":1002,"meta":87,"style":87},[31,33436,33437,33441,33445,33449,33453,33457,33461,33465,33469,33473,33477,33481,33485,33489],{"__ignoreMap":87},[91,33438,33439],{"class":93,"line":94},[91,33440,3773],{},[91,33442,33443],{"class":93,"line":105},[91,33444,3778],{},[91,33446,33447],{"class":93,"line":121},[91,33448,3783],{},[91,33450,33451],{"class":93,"line":134},[91,33452,3788],{},[91,33454,33455],{"class":93,"line":228},[91,33456,3793],{},[91,33458,33459],{"class":93,"line":250},[91,33460,137],{},[91,33462,33463],{"class":93,"line":260},[91,33464,1450],{"emptyLinePlaceholder":846},[91,33466,33467],{"class":93,"line":274},[91,33468,3806],{},[91,33470,33471],{"class":93,"line":284},[91,33472,3811],{},[91,33474,33475],{"class":93,"line":299},[91,33476,3783],{},[91,33478,33479],{"class":93,"line":319},[91,33480,3820],{},[91,33482,33483],{"class":93,"line":334},[91,33484,3825],{},[91,33486,33487],{"class":93,"line":355},[91,33488,3561],{},[91,33490,33491],{"class":93,"line":364},[91,33492,137],{},[16,33494,3836],{},[82,33496,33497],{"className":1000,"code":3839,"language":1002,"meta":87,"style":87},[31,33498,33499,33503,33507,33511,33515,33519,33523,33527,33531,33535,33539,33543,33547,33551,33555,33559],{"__ignoreMap":87},[91,33500,33501],{"class":93,"line":94},[91,33502,3846],{},[91,33504,33505],{"class":93,"line":105},[91,33506,3851],{},[91,33508,33509],{"class":93,"line":121},[91,33510,3856],{},[91,33512,33513],{"class":93,"line":134},[91,33514,3861],{},[91,33516,33517],{"class":93,"line":228},[91,33518,3866],{},[91,33520,33521],{"class":93,"line":250},[91,33522,3871],{},[91,33524,33525],{"class":93,"line":260},[91,33526,1450],{"emptyLinePlaceholder":846},[91,33528,33529],{"class":93,"line":274},[91,33530,3880],{},[91,33532,33533],{"class":93,"line":284},[91,33534,3885],{},[91,33536,33537],{"class":93,"line":299},[91,33538,3890],{},[91,33540,33541],{"class":93,"line":319},[91,33542,3895],{},[91,33544,33545],{"class":93,"line":334},[91,33546,3900],{},[91,33548,33549],{"class":93,"line":355},[91,33550,3330],{},[91,33552,33553],{"class":93,"line":364},[91,33554,3307],{},[91,33556,33557],{"class":93,"line":378},[91,33558,1693],{},[91,33560,33561],{"class":93,"line":387},[91,33562,137],{},[49,33564,3920],{"id":3919},[16,33566,3923],{},[16,33568,3926],{},[812,33570,33571,33579],{},[3001,33572,33573],{},[3004,33574,33575,33577],{},[3007,33576,3935],{},[3007,33578,3938],{},[3017,33580,33581,33591],{},[3004,33582,33583,33587],{},[3022,33584,33585],{},[19,33586],{"alt":3947,"src":3948},[3022,33588,33589],{},[19,33590],{"alt":3953,"src":3954},[3004,33592,33593,33595],{},[3022,33594,3959],{},[3022,33596,3962],{},[16,33598,3965],{},[49,33600,3969],{"id":3968},[16,33602,3972],{},[812,33604,33605,33615],{},[3001,33606,33607],{},[3004,33608,33609,33611,33613],{},[3007,33610,3009],{},[3007,33612,3983],{},[3007,33614,3986],{},[3017,33616,33617,33625,33637],{},[3004,33618,33619,33621,33623],{},[3022,33620,3993],{},[3022,33622,3996],{},[3022,33624,3999],{},[3004,33626,33627,33629,33633],{},[3022,33628,4004],{},[3022,33630,33631,4009],{},[31,33632,2880],{},[3022,33634,33635],{},[31,33636,4014],{},[3004,33638,33639,33641,33643],{},[3022,33640,4019],{},[3022,33642,4022],{},[3022,33644,4025],{},[16,33646,4028,33647,4032],{},[31,33648,4031],{},[82,33650,33651],{"className":1000,"code":4035,"language":1002,"meta":87,"style":87},[31,33652,33653,33657,33661,33665,33669,33673,33677,33681,33685,33689,33693,33697,33701,33705,33709],{"__ignoreMap":87},[91,33654,33655],{"class":93,"line":94},[91,33656,4042],{},[91,33658,33659],{"class":93,"line":105},[91,33660,4047],{},[91,33662,33663],{"class":93,"line":121},[91,33664,4052],{},[91,33666,33667],{"class":93,"line":134},[91,33668,4057],{},[91,33670,33671],{"class":93,"line":228},[91,33672,4062],{},[91,33674,33675],{"class":93,"line":250},[91,33676,4067],{},[91,33678,33679],{"class":93,"line":260},[91,33680,1450],{"emptyLinePlaceholder":846},[91,33682,33683],{"class":93,"line":274},[91,33684,4076],{},[91,33686,33687],{"class":93,"line":284},[91,33688,4081],{},[91,33690,33691],{"class":93,"line":299},[91,33692,4086],{},[91,33694,33695],{"class":93,"line":319},[91,33696,4091],{},[91,33698,33699],{"class":93,"line":334},[91,33700,1693],{},[91,33702,33703],{"class":93,"line":355},[91,33704,1450],{"emptyLinePlaceholder":846},[91,33706,33707],{"class":93,"line":364},[91,33708,4104],{},[91,33710,33711],{"class":93,"line":378},[91,33712,137],{},[16,33714,4111,33715,4115,33717,4119],{},[31,33716,4114],{},[31,33718,4118],{},[82,33720,33721],{"className":1000,"code":4122,"language":1002,"meta":87,"style":87},[31,33722,33723,33727,33731,33735],{"__ignoreMap":87},[91,33724,33725],{"class":93,"line":94},[91,33726,4129],{},[91,33728,33729],{"class":93,"line":105},[91,33730,4134],{},[91,33732,33733],{"class":93,"line":121},[91,33734,4139],{},[91,33736,33737],{"class":93,"line":134},[91,33738,3487],{},[16,33740,4146],{},[49,33742,4150],{"id":4149},[16,33744,4153],{},[82,33746,33748],{"className":33747,"code":4157,"language":1099,"meta":87},[1097],[31,33749,4157],{"__ignoreMap":87},[16,33751,4162],{},[82,33753,33755],{"className":33754,"code":4166,"language":1099,"meta":87},[1097],[31,33756,4166],{"__ignoreMap":87},[16,33758,4171],{},[82,33760,33761],{"className":1000,"code":4174,"language":1002,"meta":87,"style":87},[31,33762,33763,33767,33771,33775,33779,33783,33787,33791,33795,33799,33803,33807,33811,33815,33819,33823,33827,33831,33835,33839,33843,33847],{"__ignoreMap":87},[91,33764,33765],{"class":93,"line":94},[91,33766,4181],{},[91,33768,33769],{"class":93,"line":105},[91,33770,4186],{},[91,33772,33773],{"class":93,"line":121},[91,33774,4191],{},[91,33776,33777],{"class":93,"line":134},[91,33778,4196],{},[91,33780,33781],{"class":93,"line":228},[91,33782,4201],{},[91,33784,33785],{"class":93,"line":250},[91,33786,4206],{},[91,33788,33789],{"class":93,"line":260},[91,33790,1450],{"emptyLinePlaceholder":846},[91,33792,33793],{"class":93,"line":274},[91,33794,4215],{},[91,33796,33797],{"class":93,"line":284},[91,33798,4220],{},[91,33800,33801],{"class":93,"line":299},[91,33802,4225],{},[91,33804,33805],{"class":93,"line":319},[91,33806,4230],{},[91,33808,33809],{"class":93,"line":334},[91,33810,4235],{},[91,33812,33813],{"class":93,"line":355},[91,33814,1693],{},[91,33816,33817],{"class":93,"line":364},[91,33818,1450],{"emptyLinePlaceholder":846},[91,33820,33821],{"class":93,"line":378},[91,33822,4248],{},[91,33824,33825],{"class":93,"line":387},[91,33826,1450],{"emptyLinePlaceholder":846},[91,33828,33829],{"class":93,"line":402},[91,33830,4257],{},[91,33832,33833],{"class":93,"line":422},[91,33834,4262],{},[91,33836,33837],{"class":93,"line":438},[91,33838,4267],{},[91,33840,33841],{"class":93,"line":458},[91,33842,4272],{},[91,33844,33845],{"class":93,"line":467},[91,33846,1693],{},[91,33848,33849],{"class":93,"line":481},[91,33850,137],{},[16,33852,4283,33853,4287],{},[31,33854,4286],{},[82,33856,33858],{"className":33857,"code":4291,"language":1099,"meta":87},[1097],[31,33859,4291],{"__ignoreMap":87},[16,33861,4296,33862,4299],{},[31,33863,4118],{},[1112,33865,33866],{},[16,33867,4304,33868,4311,33871,4316,33874],{},[4306,33869,4308],{"href":4308,"rel":33870},[4310],[4306,33872,4314],{"href":4314,"rel":33873},[4310],[4306,33875,4319],{"href":4319,"rel":33876},[4310],[16,33878,33879],{},[19,33880],{"alt":4325,"src":4326},[16,33882,4329,33883,4332,33885,4336],{},[31,33884,4286],{},[31,33886,4335],{},[49,33888,4340],{"id":4339},[16,33890,4343],{},[16,33892,4346],{},[82,33894,33895],{"className":1000,"code":4349,"language":1002,"meta":87,"style":87},[31,33896,33897,33901,33905,33909,33913,33917,33921],{"__ignoreMap":87},[91,33898,33899],{"class":93,"line":94},[91,33900,4356],{},[91,33902,33903],{"class":93,"line":105},[91,33904,4361],{},[91,33906,33907],{"class":93,"line":121},[91,33908,4366],{},[91,33910,33911],{"class":93,"line":134},[91,33912,1693],{},[91,33914,33915],{"class":93,"line":228},[91,33916,4375],{},[91,33918,33919],{"class":93,"line":250},[91,33920,4380],{},[91,33922,33923],{"class":93,"line":260},[91,33924,1693],{},[16,33926,4387,33927,4391],{},[31,33928,4390],{},[82,33930,33931],{"className":1000,"code":4394,"language":1002,"meta":87,"style":87},[31,33932,33933,33937,33941],{"__ignoreMap":87},[91,33934,33935],{"class":93,"line":94},[91,33936,4401],{},[91,33938,33939],{"class":93,"line":105},[91,33940,4406],{},[91,33942,33943],{"class":93,"line":121},[91,33944,137],{},[16,33946,4413],{},[829,33948,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":33950},[33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961],{"id":2891,"depth":105,"text":2892},{"id":2928,"depth":105,"text":2929},{"id":2988,"depth":105,"text":2989},{"id":3127,"depth":105,"text":3128},{"id":3351,"depth":105,"text":3352},{"id":3500,"depth":105,"text":3501},{"id":3694,"depth":105,"text":3695},{"id":3919,"depth":105,"text":3920},{"id":3968,"depth":105,"text":3969},{"id":4149,"depth":105,"text":4150},{"id":4339,"depth":105,"text":4340},{},{"title":2869,"description":4431},{"loc":4434},[1511,4440,1002,1503],{"id":4444,"title":4445,"body":33967,"created":4560,"description":4561,"extension":843,"filename":4562,"meta":34056,"navigation":846,"path":4564,"seo":34057,"sitemap":34058,"stem":4567,"subject":4438,"tags":34059,"updated":4560,"volume":1863,"__hash__":4570},{"type":8,"value":33968,"toc":34054},[33969,34017,34023,34025,34030,34032,34042,34050,34052],[82,33970,33971],{"className":1000,"code":4450,"language":1002,"meta":87,"style":87},[31,33972,33973,33977,33981,33985,33989,33993,33997,34001,34005,34009,34013],{"__ignoreMap":87},[91,33974,33975],{"class":93,"line":94},[91,33976,4457],{},[91,33978,33979],{"class":93,"line":105},[91,33980,4462],{},[91,33982,33983],{"class":93,"line":121},[91,33984,4467],{},[91,33986,33987],{"class":93,"line":134},[91,33988,4472],{},[91,33990,33991],{"class":93,"line":228},[91,33992,4477],{},[91,33994,33995],{"class":93,"line":250},[91,33996,3307],{},[91,33998,33999],{"class":93,"line":260},[91,34000,1693],{},[91,34002,34003],{"class":93,"line":274},[91,34004,4490],{},[91,34006,34007],{"class":93,"line":284},[91,34008,4495],{},[91,34010,34011],{"class":93,"line":299},[91,34012,4500],{},[91,34014,34015],{"class":93,"line":319},[91,34016,137],{},[16,34018,4507,34019,4511,34021,4515],{},[31,34020,4510],{},[31,34022,4514],{},[16,34024,4518],{},[16,34026,34027],{},[4306,34028,4525],{"href":4523,"rel":34029},[4310],[16,34031,4528],{},[4530,34033,34034,34038],{},[27,34035,34036,4537],{},[31,34037,4536],{},[27,34039,34040,4543],{},[31,34041,4542],{},[82,34043,34044],{"className":1000,"code":4546,"language":1002,"meta":87,"style":87},[31,34045,34046],{"__ignoreMap":87},[91,34047,34048],{"class":93,"line":94},[91,34049,4546],{},[16,34051,4555],{},[829,34053,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":34055},[],{},{"title":4445,"description":4561},{"loc":4564},[4438,4569],{"id":4572,"title":4573,"body":34061,"created":4945,"description":4946,"extension":843,"filename":4947,"meta":34329,"navigation":846,"path":4949,"seo":34330,"sitemap":34331,"stem":4952,"subject":4438,"tags":34332,"updated":4945,"volume":853,"__hash__":4955},{"type":8,"value":34062,"toc":34321},[34063,34065,34069,34073,34075,34077,34107,34111,34113,34115,34119,34123,34211,34213,34215,34217,34223,34229,34231,34235,34247,34251,34311,34319],[1112,34064],{"description":4578,"host":4579,"image":4580,"title":4581,"url":4582},[16,34066,34067],{},[19,34068],{"alt":87,"src":4587},[16,34070,4590,34071,4594],{},[31,34072,4593],{},[49,34074,4598],{"id":4597},[16,34076,4601],{},[24,34078,34079,34083,34089,34099,34103],{},[27,34080,34081,4609],{},[792,34082,4608],{},[27,34084,34085,4619],{},[792,34086,4614,34087,4618],{},[31,34088,4617],{},[27,34090,34091,112,34093,4628,34095,64,34097,4635],{},[792,34092,4624],{},[31,34094,4627],{},[31,34096,4631],{},[31,34098,4634],{},[27,34100,34101,4641],{},[792,34102,4640],{},[27,34104,34105,4647],{},[792,34106,4646],{},[16,34108,4650,34109,4654],{},[31,34110,4653],{},[49,34112,4658],{"id":4657},[1112,34114],{"description":4661,"host":4662,"image":4663,"title":4664,"url":4665,"favicon":4666},[16,34116,34117],{},[19,34118],{"alt":87,"src":4671},[16,34120,4674,34121,4678],{},[792,34122,4677],{},[82,34124,34125],{"className":1000,"code":4681,"language":1002,"meta":87,"style":87},[31,34126,34127,34131,34135,34139,34143,34147,34151,34155,34159,34163,34167,34171,34175,34179,34183,34187,34191,34195,34199,34203,34207],{"__ignoreMap":87},[91,34128,34129],{"class":93,"line":94},[91,34130,4688],{},[91,34132,34133],{"class":93,"line":105},[91,34134,4693],{},[91,34136,34137],{"class":93,"line":121},[91,34138,4698],{},[91,34140,34141],{"class":93,"line":134},[91,34142,4703],{},[91,34144,34145],{"class":93,"line":228},[91,34146,1674],{},[91,34148,34149],{"class":93,"line":250},[91,34150,4712],{},[91,34152,34153],{"class":93,"line":260},[91,34154,4717],{},[91,34156,34157],{"class":93,"line":274},[91,34158,4722],{},[91,34160,34161],{"class":93,"line":284},[91,34162,1674],{},[91,34164,34165],{"class":93,"line":299},[91,34166,4731],{},[91,34168,34169],{"class":93,"line":319},[91,34170,4736],{},[91,34172,34173],{"class":93,"line":334},[91,34174,4741],{},[91,34176,34177],{"class":93,"line":355},[91,34178,4746],{},[91,34180,34181],{"class":93,"line":364},[91,34182,4751],{},[91,34184,34185],{"class":93,"line":378},[91,34186,4756],{},[91,34188,34189],{"class":93,"line":387},[91,34190,4761],{},[91,34192,34193],{"class":93,"line":402},[91,34194,1674],{},[91,34196,34197],{"class":93,"line":422},[91,34198,4770],{},[91,34200,34201],{"class":93,"line":438},[91,34202,4775],{},[91,34204,34205],{"class":93,"line":458},[91,34206,1693],{},[91,34208,34209],{"class":93,"line":467},[91,34210,137],{},[49,34212,4787],{"id":4786},[16,34214,4790],{},[757,34216,4794],{"id":4793},[16,34218,4797,34219,4801,34221,4805],{},[31,34220,4800],{},[31,34222,4804],{},[16,34224,4808,34225,4812,34227,4816],{},[31,34226,4811],{},[31,34228,4815],{},[757,34230,4820],{"id":4819},[16,34232,4823,34233,4827],{},[31,34234,4826],{},[82,34236,34237],{"className":970,"code":4830,"language":972,"meta":87,"style":87},[31,34238,34239,34243],{"__ignoreMap":87},[91,34240,34241],{"class":93,"line":94},[91,34242,4837],{},[91,34244,34245],{"class":93,"line":105},[91,34246,4842],{},[16,34248,4845,34249,4848],{},[31,34250,4804],{},[82,34252,34253],{"className":1000,"code":4851,"language":1002,"meta":87,"style":87},[31,34254,34255,34259,34263,34267,34271,34275,34279,34283,34287,34291,34295,34299,34303,34307],{"__ignoreMap":87},[91,34256,34257],{"class":93,"line":94},[91,34258,4858],{},[91,34260,34261],{"class":93,"line":105},[91,34262,4863],{},[91,34264,34265],{"class":93,"line":121},[91,34266,4868],{},[91,34268,34269],{"class":93,"line":134},[91,34270,4873],{},[91,34272,34273],{"class":93,"line":228},[91,34274,1450],{"emptyLinePlaceholder":846},[91,34276,34277],{"class":93,"line":250},[91,34278,4882],{},[91,34280,34281],{"class":93,"line":260},[91,34282,4887],{},[91,34284,34285],{"class":93,"line":274},[91,34286,4892],{},[91,34288,34289],{"class":93,"line":284},[91,34290,4897],{},[91,34292,34293],{"class":93,"line":299},[91,34294,4902],{},[91,34296,34297],{"class":93,"line":319},[91,34298,4907],{},[91,34300,34301],{"class":93,"line":334},[91,34302,3561],{},[91,34304,34305],{"class":93,"line":355},[91,34306,4916],{},[91,34308,34309],{"class":93,"line":364},[91,34310,137],{},[16,34312,34313,4926,34315,4930,34317,4934],{},[31,34314,4925],{},[31,34316,4929],{},[31,34318,4933],{},[829,34320,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":34322},[34323,34324,34325],{"id":4597,"depth":105,"text":4598},{"id":4657,"depth":105,"text":4658},{"id":4786,"depth":105,"text":4787,"children":34326},[34327,34328],{"id":4793,"depth":121,"text":4794},{"id":4819,"depth":121,"text":4820},{},{"title":4573,"description":4946},{"loc":4949},[1511,1002,4954],{"id":4957,"title":4958,"body":34334,"created":5289,"description":5290,"extension":843,"filename":5291,"meta":34571,"navigation":846,"path":5293,"seo":34572,"sitemap":34573,"stem":5296,"subject":5297,"tags":34574,"updated":5289,"volume":1863,"__hash__":5299},{"type":8,"value":34335,"toc":34566},[34336,34346,34460,34464,34468,34474,34496,34500,34502,34508,34510,34512,34558,34564],[16,34337,4963,34338,4967,34340,4971,34342,4975,34344,4979],{},[31,34339,4966],{},[31,34341,4970],{},[31,34343,4974],{},[31,34345,4978],{},[82,34347,34348],{"className":4982,"code":4983,"language":2864,"meta":87,"style":87},[31,34349,34350,34354,34372,34390,34394,34410,34420,34432,34436,34444,34452],{"__ignoreMap":87},[91,34351,34352],{"class":93,"line":94},[91,34353,4990],{"class":1343},[91,34355,34356,34358,34360,34362,34364,34366,34368,34370],{"class":93,"line":105},[91,34357,1968],{"class":566},[91,34359,4997],{"class":108},[91,34361,1366],{"class":566},[91,34363,2676],{"class":566},[91,34365,5004],{"class":97},[91,34367,5007],{"class":101},[91,34369,5010],{"class":169},[91,34371,5013],{"class":101},[91,34373,34374,34376,34378,34380,34382,34384,34386,34388],{"class":93,"line":121},[91,34375,1968],{"class":566},[91,34377,5020],{"class":108},[91,34379,1366],{"class":566},[91,34381,5025],{"class":101},[91,34383,5028],{"class":97},[91,34385,795],{"class":101},[91,34387,5033],{"class":169},[91,34389,1594],{"class":101},[91,34391,34392],{"class":93,"line":134},[91,34393,1450],{"emptyLinePlaceholder":846},[91,34395,34396,34398,34400,34402,34404,34406,34408],{"class":93,"line":228},[91,34397,5044],{"class":101},[91,34399,166],{"class":566},[91,34401,5049],{"class":101},[91,34403,5052],{"class":108},[91,34405,1235],{"class":101},[91,34407,5057],{"class":97},[91,34409,5060],{"class":101},[91,34411,34412,34414,34416,34418],{"class":93,"line":250},[91,34413,5065],{"class":101},[91,34415,166],{"class":566},[91,34417,5070],{"class":169},[91,34419,118],{"class":101},[91,34421,34422,34424,34426,34428,34430],{"class":93,"line":260},[91,34423,5077],{"class":101},[91,34425,166],{"class":566},[91,34427,5082],{"class":97},[91,34429,5085],{"class":101},[91,34431,5088],{"class":1343},[91,34433,34434],{"class":93,"line":274},[91,34435,1450],{"emptyLinePlaceholder":846},[91,34437,34438,34440,34442],{"class":93,"line":284},[91,34439,5097],{"class":101},[91,34441,5100],{"class":97},[91,34443,5103],{"class":101},[91,34445,34446,34448,34450],{"class":93,"line":299},[91,34447,5108],{"class":101},[91,34449,5111],{"class":97},[91,34451,2030],{"class":101},[91,34453,34454,34456,34458],{"class":93,"line":319},[91,34455,5097],{"class":101},[91,34457,5120],{"class":97},[91,34459,5103],{"class":101},[16,34461,5125,34462,5129],{},[31,34463,5128],{},[16,34465,34466],{},[19,34467],{"alt":5134,"src":5135},[16,34469,5138,34470,5142,34472,5146],{},[31,34471,5141],{},[31,34473,5145],{},[4530,34475,34476,34482,34488],{},[27,34477,34478,5154,34480,5158],{},[792,34479,5153],{},[31,34481,5157],{},[27,34483,34484,5164,34486,5168],{},[792,34485,5163],{},[31,34487,5167],{},[27,34489,34490,5174,34492,5178,34494,5182],{},[792,34491,5173],{},[31,34493,5177],{},[31,34495,5181],{},[16,34497,5185,34498,5189],{},[31,34499,5188],{},[49,34501,5193],{"id":5192},[16,34503,5196,34504,5199,34506,5203],{},[31,34505,4974],{},[792,34507,5202],{},[757,34509,5207],{"id":5206},[16,34511,5210],{},[82,34513,34514],{"className":5213,"code":5214,"language":2865,"meta":87,"style":87},[31,34515,34516,34520,34530,34534,34542,34550,34554],{"__ignoreMap":87},[91,34517,34518],{"class":93,"line":94},[91,34519,5221],{"class":1343},[91,34521,34522,34524,34526,34528],{"class":93,"line":105},[91,34523,5226],{"class":566},[91,34525,5229],{"class":101},[91,34527,5232],{"class":566},[91,34529,5235],{"class":101},[91,34531,34532],{"class":93,"line":121},[91,34533,5240],{"class":1343},[91,34535,34536,34538,34540],{"class":93,"line":134},[91,34537,5245],{"class":101},[91,34539,5248],{"class":97},[91,34541,5251],{"class":101},[91,34543,34544,34546,34548],{"class":93,"line":228},[91,34545,1434],{"class":101},[91,34547,5258],{"class":566},[91,34549,102],{"class":101},[91,34551,34552],{"class":93,"line":250},[91,34553,5265],{"class":1343},[91,34555,34556],{"class":93,"line":260},[91,34557,137],{"class":101},[16,34559,5272,34560,5276,34562,5280],{},[31,34561,5275],{},[31,34563,5279],{},[829,34565,5283],{},{"title":87,"searchDepth":105,"depth":105,"links":34567},[34568],{"id":5192,"depth":105,"text":5193,"children":34569},[34570],{"id":5206,"depth":121,"text":5207},{},{"title":4958,"description":5290},{"loc":5293},[2865,1511,4954],{"id":5301,"title":5302,"body":34576,"created":5436,"description":5437,"extension":843,"filename":5438,"meta":34662,"navigation":846,"path":5440,"seo":34663,"sitemap":34664,"stem":5443,"subject":5444,"tags":34665,"updated":5436,"volume":1863,"__hash__":5448},{"type":8,"value":34577,"toc":34658},[34578,34582,34590,34596,34602,34604,34618,34620,34622,34652],[16,34579,5307,34580,5311],{},[31,34581,5310],{},[16,34583,5314,34584,5317,34586,5321,34588,5325],{},[31,34585,5310],{},[31,34587,5320],{},[31,34589,5324],{},[16,34591,5328,34592,5332,34594,5336],{},[31,34593,5331],{},[31,34595,5335],{},[16,34597,5339,34598,5343,34600,5347],{},[31,34599,5342],{},[31,34601,5346],{},[49,34603,5351],{"id":5350},[24,34605,34606,34610,34614],{},[27,34607,34608,5358],{},[31,34609,5320],{},[27,34611,34612,5363],{},[31,34613,5324],{},[27,34615,34616,5368],{},[31,34617,5331],{},[49,34619,5372],{"id":5371},[16,34621,5375],{},[4530,34623,34624,34636,34642,34646],{},[27,34625,34626,5383,34628,5387,34630,5391,34632,2978,34634,5398],{},[792,34627,5382],{},[31,34629,5386],{},[31,34631,5390],{},[31,34633,5394],{},[31,34635,5397],{},[27,34637,34638,112,34640,5407],{},[792,34639,5403],{},[31,34641,5406],{},[27,34643,34644,5413],{},[792,34645,5412],{},[27,34647,34648,5419,34650,5203],{},[792,34649,5418],{},[792,34651,5422],{},[16,34653,34654,5427,34656,5431],{},[31,34655,5390],{},[31,34657,5430],{},{"title":87,"searchDepth":105,"depth":105,"links":34659},[34660,34661],{"id":5350,"depth":105,"text":5351},{"id":5371,"depth":105,"text":5372},{},{"title":5302,"description":5437},{"loc":5440},[5446,2865,5447],{"id":5450,"title":5451,"body":34667,"created":5712,"description":5713,"extension":843,"filename":5714,"meta":34867,"navigation":846,"path":5716,"seo":34868,"sitemap":34869,"stem":5719,"subject":851,"tags":34870,"updated":5712,"volume":1863,"__hash__":5722},{"type":8,"value":34668,"toc":34863},[34669,34679,34681,34713,34715,34733,34735,34737,34739,34753,34755,34761,34763,34765,34769,34771,34773,34775,34857,34861],[82,34670,34671],{"className":84,"code":5456,"language":86,"meta":87,"style":87},[31,34672,34673],{"__ignoreMap":87},[91,34674,34675,34677],{"class":93,"line":94},[91,34676,5463],{"class":101},[91,34678,5467],{"class":5466},[16,34680,5470],{},[82,34682,34683],{"className":84,"code":5473,"language":86,"meta":87,"style":87},[31,34684,34685,34695,34705],{"__ignoreMap":87},[91,34686,34687,34689,34691,34693],{"class":93,"line":94},[91,34688,5480],{"class":159},[91,34690,5483],{"class":101},[91,34692,5486],{"class":97},[91,34694,1594],{"class":101},[91,34696,34697,34699,34701,34703],{"class":93,"line":105},[91,34698,5480],{"class":159},[91,34700,5495],{"class":101},[91,34702,5486],{"class":97},[91,34704,1594],{"class":101},[91,34706,34707,34709,34711],{"class":93,"line":121},[91,34708,5504],{"class":101},[91,34710,5486],{"class":97},[91,34712,1594],{"class":101},[16,34714,5511],{},[82,34716,34717],{"className":84,"code":5514,"language":86,"meta":87,"style":87},[31,34718,34719,34723],{"__ignoreMap":87},[91,34720,34721],{"class":93,"line":94},[91,34722,5521],{"class":101},[91,34724,34725,34727,34729,34731],{"class":93,"line":105},[91,34726,5480],{"class":159},[91,34728,5495],{"class":101},[91,34730,5486],{"class":97},[91,34732,1594],{"class":101},[16,34734,5534],{},[49,34736,5537],{"id":5537},[1112,34738],{"favicon":5540,"host":5541,"title":5542,"url":5543,"description":5544,"image":5545},[82,34740,34741],{"className":84,"code":5548,"language":86,"meta":87,"style":87},[31,34742,34743],{"__ignoreMap":87},[91,34744,34745,34747,34749,34751],{"class":93,"line":94},[91,34746,5480],{"class":159},[91,34748,5557],{"class":101},[91,34750,5560],{"class":5466},[91,34752,5563],{"class":101},[16,34754,5566],{},[4530,34756,34757,34759],{},[27,34758,5571],{},[27,34760,5574],{},[16,34762,5577],{},[1112,34764],{"favicon":5580,"host":5581,"title":5582,"url":5583},[16,34766,34767],{},[19,34768],{"alt":21,"src":5588},[16,34770,5591],{},[49,34772,5595],{"id":5594},[1112,34774],{"favicon":5598,"host":5599,"title":5600,"url":5601,"description":5602,"image":5603},[82,34776,34777],{"className":84,"code":5606,"language":86,"meta":87,"style":87},[31,34778,34779,34785,34805,34809,34813,34819,34853],{"__ignoreMap":87},[91,34780,34781,34783],{"class":93,"line":94},[91,34782,5613],{"class":97},[91,34784,102],{"class":101},[91,34786,34787,34789,34791,34793,34795,34797,34799,34801,34803],{"class":93,"line":105},[91,34788,5620],{"class":108},[91,34790,5623],{"class":101},[91,34792,5626],{"class":108},[91,34794,795],{"class":101},[91,34796,5631],{"class":1172},[91,34798,5634],{"class":101},[91,34800,5637],{"class":108},[91,34802,5640],{"class":566},[91,34804,1594],{"class":101},[91,34806,34807],{"class":93,"line":121},[91,34808,137],{"class":101},[91,34810,34811],{"class":93,"line":134},[91,34812,5651],{"class":1343},[91,34814,34815,34817],{"class":93,"line":228},[91,34816,5613],{"class":97},[91,34818,102],{"class":101},[91,34820,34821,34823,34825,34827,34829,34831,34833,34835,34837,34839,34841,34843,34845,34847,34849,34851],{"class":93,"line":250},[91,34822,5620],{"class":108},[91,34824,112],{"class":101},[91,34826,5537],{"class":108},[91,34828,795],{"class":101},[91,34830,5670],{"class":1172},[91,34832,5673],{"class":1172},[91,34834,64],{"class":101},[91,34836,5626],{"class":108},[91,34838,795],{"class":101},[91,34840,5631],{"class":1172},[91,34842,1176],{"class":101},[91,34844,5637],{"class":108},[91,34846,5640],{"class":566},[91,34848,64],{"class":101},[91,34850,5692],{"class":108},[91,34852,1594],{"class":101},[91,34854,34855],{"class":93,"line":260},[91,34856,137],{"class":101},[16,34858,5701,34859,5704],{},[31,34860,5537],{},[829,34862,5707],{},{"title":87,"searchDepth":105,"depth":105,"links":34864},[34865,34866],{"id":5537,"depth":105,"text":5537},{"id":5594,"depth":105,"text":5595},{},{"title":5451,"description":5713},{"loc":5716},[86,5721],{"id":5724,"title":5725,"body":34872,"created":6033,"description":6034,"extension":843,"filename":6035,"meta":35088,"navigation":846,"path":6037,"seo":35089,"sitemap":35090,"stem":6040,"subject":6041,"tags":35091,"updated":6033,"volume":853,"__hash__":6044},{"type":8,"value":34873,"toc":35080},[34874,34884,34886,34902,34908,34914,34920,34922,34934,34940,34948,34956,34958,34974,34980,34990,34992,35028,35034,35042,35048,35050,35058,35066,35068,35076,35078],[16,34875,34876,5733,34878,5737,34880,5321,34882,5743],{},[31,34877,5732],{},[31,34879,5736],{},[31,34881,5167],{},[31,34883,5742],{},[49,34885,5747],{"id":5746},[82,34887,34888],{"className":5750,"code":5751,"language":5752,"meta":87,"style":87},[31,34889,34890,34894,34898],{"__ignoreMap":87},[91,34891,34892],{"class":93,"line":94},[91,34893,5759],{},[91,34895,34896],{"class":93,"line":105},[91,34897,5764],{},[91,34899,34900],{"class":93,"line":121},[91,34901,5769],{},[16,34903,34904,5775,34906,5778],{},[31,34905,5774],{},[31,34907,5774],{},[16,34909,34910,5784,34912,5788],{},[31,34911,5783],{},[31,34913,5787],{},[16,34915,5791,34916,5794,34918,5797],{},[31,34917,5167],{},[31,34919,5742],{},[49,34921,5801],{"id":5800},[82,34923,34924],{"className":5750,"code":5804,"language":5752,"meta":87,"style":87},[31,34925,34926,34930],{"__ignoreMap":87},[91,34927,34928],{"class":93,"line":94},[91,34929,5811],{},[91,34931,34932],{"class":93,"line":105},[91,34933,5759],{},[16,34935,5818,34936,5733,34938,5823],{},[31,34937,5732],{},[31,34939,5736],{},[16,34941,5826,34942,5830,34944,5834,34946,5838],{},[31,34943,5829],{},[31,34945,5833],{},[31,34947,5837],{},[16,34949,5841,34950,5844,34952,5321,34954,5849],{},[31,34951,5732],{},[31,34953,5742],{},[31,34955,5167],{},[49,34957,5853],{"id":5852},[82,34959,34960],{"className":5750,"code":5856,"language":5752,"meta":87,"style":87},[31,34961,34962,34966,34970],{"__ignoreMap":87},[91,34963,34964],{"class":93,"line":94},[91,34965,5863],{},[91,34967,34968],{"class":93,"line":105},[91,34969,5868],{},[91,34971,34972],{"class":93,"line":121},[91,34973,5873],{},[16,34975,34976,5878,34978,5882],{},[31,34977,5787],{},[31,34979,5881],{},[16,34981,5885,34982,5888,34984,5891,34986,5894,34988,5897],{},[31,34983,5881],{},[31,34985,5787],{},[31,34987,5787],{},[31,34989,5881],{},[49,34991,5901],{"id":5900},[82,34993,34994],{"className":1154,"code":5904,"language":1156,"meta":87,"style":87},[31,34995,34996,35010],{"__ignoreMap":87},[91,34997,34998,35000,35002,35004,35006,35008],{"class":93,"line":94},[91,34999,1968],{"class":566},[91,35001,5913],{"class":108},[91,35003,1366],{"class":566},[91,35005,1390],{"class":566},[91,35007,5920],{"class":97},[91,35009,5923],{"class":101},[91,35011,35012,35014,35016,35018,35020,35022,35024,35026],{"class":93,"line":105},[91,35013,1968],{"class":566},[91,35015,5930],{"class":108},[91,35017,1366],{"class":566},[91,35019,5935],{"class":101},[91,35021,5938],{"class":97},[91,35023,795],{"class":101},[91,35025,5943],{"class":169},[91,35027,3487],{"class":101},[16,35029,5948,35030,5952,35032,5955],{},[31,35031,5951],{},[31,35033,5167],{},[82,35035,35036],{"className":5750,"code":5958,"language":5752,"meta":87,"style":87},[31,35037,35038],{"__ignoreMap":87},[91,35039,35040],{"class":93,"line":94},[91,35041,5958],{},[16,35043,5967,35044,5971,35046,5975],{},[31,35045,5970],{},[31,35047,5974],{},[49,35049,5979],{"id":5978},[82,35051,35052],{"className":5750,"code":5982,"language":5752,"meta":87,"style":87},[31,35053,35054],{"__ignoreMap":87},[91,35055,35056],{"class":93,"line":94},[91,35057,5982],{},[16,35059,5991,35060,5994,35062,5998,35064,6001],{},[31,35061,5167],{},[31,35063,5997],{},[31,35065,5167],{},[49,35067,6005],{"id":6004},[16,35069,35070,35073],{},[4306,35071,6010],{"href":6010,"rel":35072},[4310],[4306,35074,6014],{"href":6014,"rel":35075},[4310],[1112,35077],{"favicon":6018,"host":6019,"title":6020,"url":6021},[829,35079,6024],{},{"title":87,"searchDepth":105,"depth":105,"links":35081},[35082,35083,35084,35085,35086,35087],{"id":5746,"depth":105,"text":5747},{"id":5800,"depth":105,"text":5801},{"id":5852,"depth":105,"text":5853},{"id":5900,"depth":105,"text":5901},{"id":5978,"depth":105,"text":5979},{"id":6004,"depth":105,"text":6005},{},{"title":5725,"description":6034},{"loc":6037},[5752,6043,4978],{"id":6046,"title":6047,"body":35093,"created":6807,"description":6808,"extension":843,"filename":6809,"meta":35682,"navigation":846,"path":6811,"seo":35683,"sitemap":35684,"stem":6814,"subject":851,"tags":35685,"updated":6807,"volume":853,"__hash__":6817},{"type":8,"value":35094,"toc":35673},[35095,35097,35099,35107,35109,35113,35117,35121,35123,35145,35149,35153,35157,35161,35163,35168,35250,35254,35256,35268,35272,35278,35286,35290,35302,35304,35308,35314,35316,35320,35336,35340,35352,35358,35360,35626,35634,35648,35652,35654,35660,35662,35664,35671],[1112,35096],{"description":6052,"favicon":6053,"host":6054,"image":6055,"title":6056,"url":6057},[16,35098,6060],{},[16,35100,35101,34,35103,6069,35105,6073],{},[31,35102,6065],{},[31,35104,6068],{},[31,35106,6072],{},[49,35108,6077],{"id":6076},[16,35110,35111],{},[19,35112],{"alt":6082,"src":6083},[16,35114,6086,35115,6089],{},[31,35116,6072],{},[16,35118,35119],{},[19,35120],{"alt":6094,"src":6095},[16,35122,6098],{},[24,35124,35125,35129,35133,35137,35141],{},[27,35126,35127,6106],{},[792,35128,6105],{},[27,35130,35131,6112],{},[792,35132,6111],{},[27,35134,35135,6118],{},[792,35136,6117],{},[27,35138,35139,6124],{},[792,35140,6123],{},[27,35142,35143,6130],{},[792,35144,6129],{},[16,35146,6133,35147,6136],{},[31,35148,6072],{},[16,35150,35151],{},[19,35152],{"alt":6141,"src":6142},[16,35154,6145,35155,6149],{},[31,35156,6148],{},[16,35158,35159],{},[19,35160],{"alt":6154,"src":6155},[49,35162,6159],{"id":6158},[16,35164,35165],{},[4306,35166,6166],{"href":6164,"rel":35167},[4310],[82,35169,35170],{"className":147,"code":6169,"language":149,"meta":87,"style":87},[31,35171,35172,35180,35184,35202,35220,35238,35242],{"__ignoreMap":87},[91,35173,35174,35176,35178],{"class":93,"line":94},[91,35175,156],{"class":101},[91,35177,16],{"class":159},[91,35179,173],{"class":101},[91,35181,35182],{"class":93,"line":105},[91,35183,6184],{"class":101},[91,35185,35186,35188,35190,35192,35194,35196,35198,35200],{"class":93,"line":121},[91,35187,178],{"class":101},[91,35189,91],{"class":159},[91,35191,163],{"class":97},[91,35193,166],{"class":101},[91,35195,6197],{"class":169},[91,35197,6200],{"class":101},[91,35199,91],{"class":159},[91,35201,173],{"class":101},[91,35203,35204,35206,35208,35210,35212,35214,35216,35218],{"class":93,"line":134},[91,35205,178],{"class":101},[91,35207,91],{"class":159},[91,35209,163],{"class":97},[91,35211,166],{"class":101},[91,35213,6217],{"class":169},[91,35215,6200],{"class":101},[91,35217,91],{"class":159},[91,35219,173],{"class":101},[91,35221,35222,35224,35226,35228,35230,35232,35234,35236],{"class":93,"line":228},[91,35223,178],{"class":101},[91,35225,91],{"class":159},[91,35227,163],{"class":97},[91,35229,166],{"class":101},[91,35231,6236],{"class":169},[91,35233,6200],{"class":101},[91,35235,91],{"class":159},[91,35237,173],{"class":101},[91,35239,35240],{"class":93,"line":250},[91,35241,6247],{"class":101},[91,35243,35244,35246,35248],{"class":93,"line":260},[91,35245,493],{"class":101},[91,35247,16],{"class":159},[91,35249,173],{"class":101},[16,35251,35252],{},[19,35253],{"alt":6260,"src":6261},[16,35255,6264],{},[24,35257,35258,35262],{},[27,35259,35260,6272],{},[792,35261,6271],{},[27,35263,35264,112,35266,6280],{},[792,35265,6277],{},[31,35267,6065],{},[16,35269,35270],{},[19,35271],{"alt":6285,"src":6286},[16,35273,6289,35274,6292,35276,6296],{},[31,35275,6065],{},[31,35277,6295],{},[16,35279,35280,6301,35282,6305,35284,6308],{},[31,35281,6065],{},[31,35283,6304],{},[31,35285,6304],{},[16,35287,35288],{},[19,35289],{"alt":6313,"src":6314},[16,35291,6317,35292,64,35294,64,35296,6324,35298,6328,35300,6332],{},[31,35293,805],{},[31,35295,798],{},[31,35297,802],{},[31,35299,6327],{},[31,35301,6331],{},[757,35303,6336],{"id":6335},[16,35305,35306],{},[19,35307],{"alt":6341,"src":6342},[16,35309,35310,6347,35312,6350],{},[31,35311,6336],{},[31,35313,6304],{},[49,35315,6068],{"id":6068},[16,35317,35318],{},[19,35319],{"alt":6357,"src":6358},[16,35321,35322,6363,35324,6367,35326,64,35328,6373,35330,6377,35332,6380,35334,6383],{},[31,35323,6068],{},[31,35325,6366],{},[31,35327,6370],{},[31,35329,6072],{},[31,35331,6376],{},[31,35333,6065],{},[31,35335,6065],{},[16,35337,35338],{},[19,35339],{"alt":6388,"src":6389},[16,35341,6392,35342,6396,35344,6400,35346,6403,35348,6406,35350,6409],{},[31,35343,6395],{},[31,35345,6399],{},[31,35347,6366],{},[31,35349,6123],{},[31,35351,6123],{},[16,35353,6412,35354,6416,35356,6420],{},[31,35355,6415],{},[31,35357,6419],{},[49,35359,6424],{"id":6423},[82,35361,35362],{"className":84,"code":6427,"language":86,"meta":87,"style":87},[31,35363,35364,35370,35374,35380,35390,35400,35410,35420,35424,35428,35438,35452,35456,35460,35482,35508,35512,35516,35530,35552,35582,35586,35590,35596,35622],{"__ignoreMap":87},[91,35365,35366,35368],{"class":93,"line":94},[91,35367,16],{"class":159},[91,35369,102],{"class":101},[91,35371,35372],{"class":93,"line":105},[91,35373,6440],{"class":1343},[91,35375,35376,35378],{"class":93,"line":121},[91,35377,6445],{"class":1172},[91,35379,6448],{"class":101},[91,35381,35382,35384,35386,35388],{"class":93,"line":134},[91,35383,6453],{"class":1172},[91,35385,112],{"class":101},[91,35387,6458],{"class":108},[91,35389,118],{"class":101},[91,35391,35392,35394,35396,35398],{"class":93,"line":228},[91,35393,6465],{"class":1172},[91,35395,112],{"class":101},[91,35397,6470],{"class":108},[91,35399,118],{"class":101},[91,35401,35402,35404,35406,35408],{"class":93,"line":250},[91,35403,6477],{"class":1172},[91,35405,112],{"class":101},[91,35407,6482],{"class":108},[91,35409,118],{"class":101},[91,35411,35412,35414,35416,35418],{"class":93,"line":260},[91,35413,6489],{"class":1172},[91,35415,112],{"class":101},[91,35417,1578],{"class":108},[91,35419,118],{"class":101},[91,35421,35422],{"class":93,"line":274},[91,35423,1450],{"emptyLinePlaceholder":846},[91,35425,35426],{"class":93,"line":284},[91,35427,6504],{"class":1343},[91,35429,35430,35432,35434,35436],{"class":93,"line":299},[91,35431,6509],{"class":1172},[91,35433,112],{"class":101},[91,35435,6514],{"class":108},[91,35437,118],{"class":101},[91,35439,35440,35442,35444,35446,35448,35450],{"class":93,"line":319},[91,35441,6521],{"class":108},[91,35443,112],{"class":101},[91,35445,5626],{"class":108},[91,35447,795],{"class":101},[91,35449,6530],{"class":1172},[91,35451,1594],{"class":101},[91,35453,35454],{"class":93,"line":334},[91,35455,1450],{"emptyLinePlaceholder":846},[91,35457,35458],{"class":93,"line":355},[91,35459,6541],{"class":1343},[91,35461,35462,35464,35466,35468,35470,35472,35474,35476,35478,35480],{"class":93,"line":364},[91,35463,6546],{"class":1172},[91,35465,6549],{"class":101},[91,35467,5626],{"class":108},[91,35469,795],{"class":101},[91,35471,6556],{"class":1172},[91,35473,5634],{"class":101},[91,35475,5626],{"class":108},[91,35477,795],{"class":101},[91,35479,6565],{"class":1172},[91,35481,6568],{"class":101},[91,35483,35484,35486,35488,35490,35492,35494,35496,35498,35500,35502,35504,35506],{"class":93,"line":378},[91,35485,6573],{"class":108},[91,35487,112],{"class":101},[91,35489,6415],{"class":108},[91,35491,795],{"class":101},[91,35493,5626],{"class":108},[91,35495,795],{"class":101},[91,35497,6586],{"class":1172},[91,35499,1176],{"class":101},[91,35501,6591],{"class":566},[91,35503,6594],{"class":108},[91,35505,567],{"class":566},[91,35507,1594],{"class":101},[91,35509,35510],{"class":93,"line":387},[91,35511,1450],{"emptyLinePlaceholder":846},[91,35513,35514],{"class":93,"line":402},[91,35515,6607],{"class":1343},[91,35517,35518,35520,35522,35524,35526,35528],{"class":93,"line":422},[91,35519,6612],{"class":1172},[91,35521,112],{"class":101},[91,35523,5626],{"class":108},[91,35525,795],{"class":101},[91,35527,6621],{"class":1172},[91,35529,1594],{"class":101},[91,35531,35532,35534,35536,35538,35540,35542,35544,35546,35548,35550],{"class":93,"line":438},[91,35533,6628],{"class":1172},[91,35535,6549],{"class":101},[91,35537,5626],{"class":108},[91,35539,795],{"class":101},[91,35541,6637],{"class":1172},[91,35543,6640],{"class":101},[91,35545,5626],{"class":108},[91,35547,795],{"class":101},[91,35549,6565],{"class":1172},[91,35551,6568],{"class":101},[91,35553,35554,35556,35558,35560,35562,35564,35566,35568,35570,35572,35574,35576,35578,35580],{"class":93,"line":458},[91,35555,6653],{"class":1172},[91,35557,6656],{"class":101},[91,35559,5626],{"class":108},[91,35561,795],{"class":101},[91,35563,6663],{"class":1172},[91,35565,6640],{"class":101},[91,35567,5626],{"class":108},[91,35569,795],{"class":101},[91,35571,6672],{"class":1172},[91,35573,6675],{"class":101},[91,35575,5626],{"class":108},[91,35577,795],{"class":101},[91,35579,6586],{"class":1172},[91,35581,6568],{"class":101},[91,35583,35584],{"class":93,"line":467},[91,35585,137],{"class":101},[91,35587,35588],{"class":93,"line":481},[91,35589,1450],{"emptyLinePlaceholder":846},[91,35591,35592,35594],{"class":93,"line":490},[91,35593,91],{"class":159},[91,35595,102],{"class":101},[91,35597,35598,35600,35602,35604,35606,35608,35610,35612,35614,35616,35618,35620],{"class":93,"line":3310},[91,35599,6702],{"class":108},[91,35601,112],{"class":101},[91,35603,6415],{"class":108},[91,35605,795],{"class":101},[91,35607,5626],{"class":108},[91,35609,795],{"class":101},[91,35611,6715],{"class":1172},[91,35613,1176],{"class":101},[91,35615,6591],{"class":566},[91,35617,6722],{"class":108},[91,35619,567],{"class":566},[91,35621,1594],{"class":101},[91,35623,35624],{"class":93,"line":3315},[91,35625,137],{"class":101},[16,35627,6733,35628,6737,35630,6740,35632,6743],{},[31,35629,6736],{},[31,35631,6117],{},[31,35633,6072],{},[16,35635,35636,6748,35638,6751,35640,6754,35642,5321,35644,6759,35646,6762],{},[31,35637,6556],{},[31,35639,6565],{},[31,35641,6072],{},[31,35643,6663],{},[31,35645,6672],{},[31,35647,6068],{},[16,35649,35650],{},[19,35651],{"alt":6767,"src":6768},[16,35653,6771],{},[24,35655,35656,35658],{},[27,35657,6776],{},[27,35659,6779],{},[16,35661,6782],{},[49,35663,6786],{"id":6785},[24,35665,35666],{},[27,35667,35668],{},[4306,35669,6794],{"href":6057,"rel":35670},[4310],[829,35672,6797],{},{"title":87,"searchDepth":105,"depth":105,"links":35674},[35675,35676,35679,35680,35681],{"id":6076,"depth":105,"text":6077},{"id":6158,"depth":105,"text":6159,"children":35677},[35678],{"id":6335,"depth":121,"text":6336},{"id":6068,"depth":105,"text":6068},{"id":6423,"depth":105,"text":6424},{"id":6785,"depth":105,"text":6786},{},{"title":6047,"description":6808},{"loc":6811},[86,6816,149],{"id":6819,"title":6820,"body":35687,"created":7192,"description":7193,"extension":843,"filename":7194,"meta":35944,"navigation":846,"path":7196,"seo":35945,"sitemap":35946,"stem":7199,"subject":7200,"tags":35947,"updated":7192,"volume":853,"__hash__":7206},{"type":8,"value":35688,"toc":35937},[35689,35691,35693,35697,35709,35713,35719,35724,35728,35748,35750,35762,35764,35766,35768,35804,35810,35814,35826,35834,35836,35840,35842,35866,35870,35875,35883,35885,35889,35897,35903,35919,35921,35923,35925,35927,35929,35931,35933,35935],[16,35690,6825],{},[49,35692,6829],{"id":6828},[16,35694,6832,35695,6836],{},[31,35696,6835],{},[82,35698,35699],{"className":6839,"code":6840,"language":6841,"meta":87,"style":87},[31,35700,35701,35705],{"__ignoreMap":87},[91,35702,35703],{"class":93,"line":94},[91,35704,6848],{},[91,35706,35707],{"class":93,"line":105},[91,35708,6853],{},[16,35710,35711],{},[19,35712],{"alt":6858,"src":6859},[16,35714,6862,35715,6866,35717,6870],{},[31,35716,6865],{},[31,35718,6869],{},[82,35720,35722],{"className":35721,"code":6874,"language":1099,"meta":87},[1097],[31,35723,6874],{"__ignoreMap":87},[16,35725,35726,6882],{},[31,35727,6881],{},[82,35729,35730],{"className":6839,"code":6885,"language":6841,"meta":87,"style":87},[31,35731,35732,35736,35740,35744],{"__ignoreMap":87},[91,35733,35734],{"class":93,"line":94},[91,35735,6892],{},[91,35737,35738],{"class":93,"line":105},[91,35739,1450],{"emptyLinePlaceholder":846},[91,35741,35742],{"class":93,"line":121},[91,35743,6901],{},[91,35745,35746],{"class":93,"line":134},[91,35747,6906],{},[16,35749,6909],{},[82,35751,35752],{"className":6839,"code":6912,"language":6841,"meta":87,"style":87},[31,35753,35754,35758],{"__ignoreMap":87},[91,35755,35756],{"class":93,"line":94},[91,35757,6919],{},[91,35759,35760],{"class":93,"line":105},[91,35761,6924],{},[16,35763,6927],{},[49,35765,6931],{"id":6930},[16,35767,6934],{},[82,35769,35770],{"className":6839,"code":6937,"language":6841,"meta":87,"style":87},[31,35771,35772,35776,35780,35784,35788,35792,35796,35800],{"__ignoreMap":87},[91,35773,35774],{"class":93,"line":94},[91,35775,6944],{},[91,35777,35778],{"class":93,"line":105},[91,35779,6949],{},[91,35781,35782],{"class":93,"line":121},[91,35783,6954],{},[91,35785,35786],{"class":93,"line":134},[91,35787,1450],{"emptyLinePlaceholder":846},[91,35789,35790],{"class":93,"line":228},[91,35791,6963],{},[91,35793,35794],{"class":93,"line":250},[91,35795,6968],{},[91,35797,35798],{"class":93,"line":260},[91,35799,6973],{},[91,35801,35802],{"class":93,"line":274},[91,35803,6978],{},[16,35805,6981,35806,6985,35808,6988],{},[31,35807,6984],{},[31,35809,6984],{},[16,35811,6991,35812,6995],{},[31,35813,6994],{},[82,35815,35816],{"className":6998,"code":6999,"language":7000,"meta":87,"style":87},[31,35817,35818,35822],{"__ignoreMap":87},[91,35819,35820],{"class":93,"line":94},[91,35821,7007],{},[91,35823,35824],{"class":93,"line":105},[91,35825,7012],{},[16,35827,7015,35828,7019,35830,64,35832,7026],{},[31,35829,7018],{},[31,35831,7022],{},[31,35833,7025],{},[49,35835,7030],{"id":7029},[16,35837,7033,35838,7037],{},[31,35839,7036],{},[16,35841,7040],{},[82,35843,35844],{"className":6839,"code":7043,"language":6841,"meta":87,"style":87},[31,35845,35846,35850,35854,35858,35862],{"__ignoreMap":87},[91,35847,35848],{"class":93,"line":94},[91,35849,7050],{},[91,35851,35852],{"class":93,"line":105},[91,35853,7055],{},[91,35855,35856],{"class":93,"line":121},[91,35857,1450],{"emptyLinePlaceholder":846},[91,35859,35860],{"class":93,"line":134},[91,35861,7064],{},[91,35863,35864],{"class":93,"line":228},[91,35865,7069],{},[16,35867,7072,35868,7075],{},[31,35869,6869],{},[82,35871,35873],{"className":35872,"code":7079,"language":1099,"meta":87},[1097],[31,35874,7079],{"__ignoreMap":87},[16,35876,7084,35877,7088,35879,7092,35881,7096],{},[31,35878,7087],{},[31,35880,7091],{},[31,35882,7095],{},[49,35884,7100],{"id":7099},[16,35886,35887,7106],{},[31,35888,7105],{},[82,35890,35891],{"className":6839,"code":7109,"language":6841,"meta":87,"style":87},[31,35892,35893],{"__ignoreMap":87},[91,35894,35895],{"class":93,"line":94},[91,35896,7109],{},[16,35898,35899,7121,35901,7125],{},[31,35900,7120],{},[31,35902,7124],{},[82,35904,35905],{"className":6839,"code":7128,"language":6841,"meta":87,"style":87},[31,35906,35907,35911,35915],{"__ignoreMap":87},[91,35908,35909],{"class":93,"line":94},[91,35910,7135],{},[91,35912,35913],{"class":93,"line":105},[91,35914,7140],{},[91,35916,35917],{"class":93,"line":121},[91,35918,7145],{},[16,35920,7148],{},[49,35922,6005],{"id":6004},[1112,35924],{"description":7153,"host":7154,"title":7155,"url":7156},[1112,35926],{"description":7159,"host":7154,"title":7160,"url":7161},[1112,35928],{"description":7164,"host":7154,"title":7165,"url":7166},[1112,35930],{"description":7169,"host":7170,"title":7171,"url":7172},[1112,35932],{"description":7175,"host":1317,"title":7176,"url":7177},[1112,35934],{"description":7180,"host":1317,"title":7181,"url":7182},[829,35936,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":35938},[35939,35940,35941,35942,35943],{"id":6828,"depth":105,"text":6829},{"id":6930,"depth":105,"text":6931},{"id":7029,"depth":105,"text":7030},{"id":7099,"depth":105,"text":7100},{"id":6004,"depth":105,"text":6005},{},{"title":6820,"description":7193},{"loc":7196},[7202,7203,7204,7205,1511],{"id":7208,"title":7209,"body":35949,"created":7400,"description":7401,"extension":843,"filename":7402,"meta":36095,"navigation":846,"path":7404,"seo":36096,"sitemap":36097,"stem":7407,"subject":7200,"tags":36098,"updated":7400,"volume":1863,"__hash__":7410},{"type":8,"value":35950,"toc":36093},[35951,35953,35959,35963,35965,35971,36043,36047,36081,36085,36089,36091],[16,35952,7214],{},[24,35954,35955,35957],{},[27,35956,7219],{},[27,35958,7222],{},[16,35960,35961],{},[19,35962],{"alt":87,"src":7227},[16,35964,7230],{},[24,35966,35967,35969],{},[27,35968,7235],{},[27,35970,7238],{},[82,35972,35973],{"className":7241,"code":7242,"language":7243,"meta":87,"style":87},[31,35974,35975,35985,35991,35999,36007,36015,36023,36031,36039],{"__ignoreMap":87},[91,35976,35977,35979,35981,35983],{"class":93,"line":94},[91,35978,7250],{"class":101},[91,35980,1238],{"class":159},[91,35982,112],{"class":101},[91,35984,7257],{"class":169},[91,35986,35987,35989],{"class":93,"line":105},[91,35988,7262],{"class":159},[91,35990,7265],{"class":101},[91,35992,35993,35995,35997],{"class":93,"line":121},[91,35994,7270],{"class":159},[91,35996,112],{"class":101},[91,35998,7275],{"class":169},[91,36000,36001,36003,36005],{"class":93,"line":134},[91,36002,7280],{"class":159},[91,36004,112],{"class":101},[91,36006,7285],{"class":169},[91,36008,36009,36011,36013],{"class":93,"line":228},[91,36010,7290],{"class":159},[91,36012,112],{"class":101},[91,36014,7295],{"class":169},[91,36016,36017,36019,36021],{"class":93,"line":250},[91,36018,7300],{"class":159},[91,36020,112],{"class":101},[91,36022,7305],{"class":169},[91,36024,36025,36027,36029],{"class":93,"line":260},[91,36026,7310],{"class":159},[91,36028,112],{"class":101},[91,36030,7315],{"class":169},[91,36032,36033,36035,36037],{"class":93,"line":274},[91,36034,7320],{"class":159},[91,36036,112],{"class":101},[91,36038,7325],{"class":566},[91,36040,36041],{"class":93,"line":284},[91,36042,7330],{"class":169},[16,36044,7333,36045,7337],{},[31,36046,7336],{},[82,36048,36049],{"className":7241,"code":7340,"language":7243,"meta":87,"style":87},[31,36050,36051,36057,36063,36073],{"__ignoreMap":87},[91,36052,36053,36055],{"class":93,"line":94},[91,36054,7347],{"class":159},[91,36056,7265],{"class":101},[91,36058,36059,36061],{"class":93,"line":105},[91,36060,7354],{"class":159},[91,36062,7265],{"class":101},[91,36064,36065,36067,36069,36071],{"class":93,"line":121},[91,36066,7361],{"class":159},[91,36068,112],{"class":101},[91,36070,7366],{"class":169},[91,36072,7369],{"class":1343},[91,36074,36075,36077,36079],{"class":93,"line":134},[91,36076,7374],{"class":159},[91,36078,112],{"class":101},[91,36080,7379],{"class":169},[16,36082,7382,36083,7386],{},[31,36084,7385],{},[16,36086,36087],{},[19,36088],{"alt":87,"src":7391},[16,36090,7394],{},[829,36092,7397],{},{"title":87,"searchDepth":105,"depth":105,"links":36094},[],{},{"title":7209,"description":7401},{"loc":7404},[7409,7203],{"id":7412,"title":7413,"body":36100,"created":8606,"description":8607,"extension":843,"filename":8608,"meta":37048,"navigation":846,"path":8610,"seo":37049,"sitemap":37050,"stem":8613,"subject":8614,"tags":37051,"updated":8606,"volume":853,"__hash__":8619},{"type":8,"value":36101,"toc":37040},[36102,36108,36110,36120,36128,36226,36230,36232,36236,36240,36242,36244,36652,36654,36658,36662,36900,36906,36916,36918,36922,36954,36958,36988,36994,36996,37000,37004,37006,37008,37016,37022,37028,37030,37032,37034,37036,37038],[16,36103,7418,36104,5321,36106,7425],{},[31,36105,7421],{},[31,36107,7424],{},[49,36109,7429],{"id":7428},[16,36111,7432,36112,2978,36114,7439,36116,7442,36118,7445],{},[31,36113,7435],{},[31,36115,7438],{},[31,36117,7421],{},[31,36119,7424],{},[16,36121,7448,36122,2978,36124,7455,36126,7459],{},[31,36123,7451],{},[31,36125,7454],{},[31,36127,7458],{},[82,36129,36130],{"className":7462,"code":7463,"language":7464,"meta":87,"style":87},[31,36131,36132,36144,36150,36166,36178,36182,36186,36194,36202,36210,36218,36222],{"__ignoreMap":87},[91,36133,36134,36136,36138,36140,36142],{"class":93,"line":94},[91,36135,7471],{"class":566},[91,36137,7474],{"class":97},[91,36139,795],{"class":101},[91,36141,7479],{"class":1172},[91,36143,3866],{"class":101},[91,36145,36146,36148],{"class":93,"line":105},[91,36147,2695],{"class":566},[91,36149,7488],{"class":101},[91,36151,36152,36154,36156,36158,36160,36162,36164],{"class":93,"line":121},[91,36153,7493],{"class":101},[91,36155,7496],{"class":97},[91,36157,795],{"class":101},[91,36159,7501],{"class":108},[91,36161,1235],{"class":101},[91,36163,7506],{"class":97},[91,36165,7509],{"class":101},[91,36167,36168,36170,36172,36174,36176],{"class":93,"line":134},[91,36169,7493],{"class":101},[91,36171,7516],{"class":97},[91,36173,7519],{"class":101},[91,36175,7501],{"class":108},[91,36177,1594],{"class":101},[91,36179,36180],{"class":93,"line":228},[91,36181,137],{"class":101},[91,36183,36184],{"class":93,"line":250},[91,36185,1450],{"emptyLinePlaceholder":846},[91,36187,36188,36190,36192],{"class":93,"line":260},[91,36189,7471],{"class":566},[91,36191,7538],{"class":97},[91,36193,2007],{"class":101},[91,36195,36196,36198,36200],{"class":93,"line":274},[91,36197,2695],{"class":566},[91,36199,7474],{"class":97},[91,36201,7549],{"class":101},[91,36203,36204,36206,36208],{"class":93,"line":284},[91,36205,7554],{"class":101},[91,36207,7557],{"class":108},[91,36209,7560],{"class":101},[91,36211,36212,36214,36216],{"class":93,"line":299},[91,36213,7565],{"class":101},[91,36215,7568],{"class":169},[91,36217,7560],{"class":101},[91,36219,36220],{"class":93,"line":319},[91,36221,7575],{"class":101},[91,36223,36224],{"class":93,"line":334},[91,36225,137],{"class":101},[16,36227,7582,36228,7586],{},[31,36229,7585],{},[49,36231,7590],{"id":7589},[16,36233,7593,36234,7597],{},[31,36235,7596],{},[16,36237,36238],{},[19,36239],{"alt":7590,"src":7602},[16,36241,7605],{},[49,36243,7609],{"id":7608},[82,36245,36246],{"className":7462,"code":7612,"language":7464,"meta":87,"style":87},[31,36247,36248,36260,36272,36276,36288,36294,36306,36318,36322,36328,36332,36340,36348,36356,36360,36368,36376,36380,36388,36396,36400,36404,36408,36412,36416,36428,36450,36464,36468,36472,36484,36488,36492,36504,36516,36520,36552,36566,36570,36574,36580,36610,36614,36644,36648],{"__ignoreMap":87},[91,36249,36250,36252,36254,36256,36258],{"class":93,"line":94},[91,36251,1968],{"class":566},[91,36253,7621],{"class":108},[91,36255,1366],{"class":566},[91,36257,7626],{"class":169},[91,36259,118],{"class":101},[91,36261,36262,36264,36266,36268,36270],{"class":93,"line":105},[91,36263,1968],{"class":566},[91,36265,7635],{"class":108},[91,36267,1366],{"class":566},[91,36269,7640],{"class":169},[91,36271,118],{"class":101},[91,36273,36274],{"class":93,"line":121},[91,36275,1450],{"emptyLinePlaceholder":846},[91,36277,36278,36280,36282,36284,36286],{"class":93,"line":134},[91,36279,7471],{"class":566},[91,36281,7653],{"class":97},[91,36283,795],{"class":101},[91,36285,7658],{"class":1172},[91,36287,3866],{"class":101},[91,36289,36290,36292],{"class":93,"line":228},[91,36291,2012],{"class":566},[91,36293,102],{"class":101},[91,36295,36296,36298,36300,36302,36304],{"class":93,"line":250},[91,36297,1382],{"class":566},[91,36299,7673],{"class":108},[91,36301,1366],{"class":566},[91,36303,7678],{"class":97},[91,36305,7681],{"class":101},[91,36307,36308,36310,36312,36314,36316],{"class":93,"line":260},[91,36309,1382],{"class":566},[91,36311,7688],{"class":108},[91,36313,1366],{"class":566},[91,36315,7693],{"class":97},[91,36317,7696],{"class":101},[91,36319,36320],{"class":93,"line":274},[91,36321,1450],{"emptyLinePlaceholder":846},[91,36323,36324,36326],{"class":93,"line":284},[91,36325,7705],{"class":97},[91,36327,7708],{"class":101},[91,36329,36330],{"class":93,"line":299},[91,36331,1450],{"emptyLinePlaceholder":846},[91,36333,36334,36336,36338],{"class":93,"line":319},[91,36335,7717],{"class":566},[91,36337,7474],{"class":97},[91,36339,7549],{"class":101},[91,36341,36342,36344,36346],{"class":93,"line":334},[91,36343,7726],{"class":101},[91,36345,7557],{"class":108},[91,36347,7560],{"class":101},[91,36349,36350,36352,36354],{"class":93,"line":355},[91,36351,7735],{"class":101},[91,36353,7738],{"class":169},[91,36355,7560],{"class":101},[91,36357,36358],{"class":93,"line":364},[91,36359,7745],{"class":101},[91,36361,36362,36364,36366],{"class":93,"line":378},[91,36363,2053],{"class":101},[91,36365,1256],{"class":566},[91,36367,2058],{"class":101},[91,36369,36370,36372,36374],{"class":93,"line":387},[91,36371,2454],{"class":101},[91,36373,1261],{"class":97},[91,36375,2068],{"class":101},[91,36377,36378],{"class":93,"line":402},[91,36379,1450],{"emptyLinePlaceholder":846},[91,36381,36382,36384,36386],{"class":93,"line":422},[91,36383,7717],{"class":566},[91,36385,7474],{"class":97},[91,36387,7549],{"class":101},[91,36389,36390,36392,36394],{"class":93,"line":438},[91,36391,7726],{"class":101},[91,36393,7780],{"class":108},[91,36395,7560],{"class":101},[91,36397,36398],{"class":93,"line":458},[91,36399,7787],{"class":101},[91,36401,36402],{"class":93,"line":467},[91,36403,7745],{"class":101},[91,36405,36406],{"class":93,"line":481},[91,36407,1698],{"class":101},[91,36409,36410],{"class":93,"line":490},[91,36411,137],{"class":101},[91,36413,36414],{"class":93,"line":3310},[91,36415,1450],{"emptyLinePlaceholder":846},[91,36417,36418,36420,36422,36424,36426],{"class":93,"line":3315},[91,36419,7471],{"class":566},[91,36421,7678],{"class":97},[91,36423,795],{"class":101},[91,36425,7658],{"class":1172},[91,36427,3866],{"class":101},[91,36429,36430,36432,36434,36436,36438,36440,36442,36444,36446,36448],{"class":93,"line":3321},[91,36431,2439],{"class":566},[91,36433,2662],{"class":101},[91,36435,2665],{"class":566},[91,36437,7826],{"class":101},[91,36439,7829],{"class":566},[91,36441,7832],{"class":566},[91,36443,7835],{"class":101},[91,36445,7829],{"class":566},[91,36447,7832],{"class":566},[91,36449,7842],{"class":101},[91,36451,36452,36454,36456,36458,36460,36462],{"class":93,"line":3327},[91,36453,2673],{"class":566},[91,36455,2676],{"class":566},[91,36457,2679],{"class":97},[91,36459,795],{"class":101},[91,36461,7855],{"class":169},[91,36463,1594],{"class":101},[91,36465,36466],{"class":93,"line":3333},[91,36467,1698],{"class":101},[91,36469,36470],{"class":93,"line":3338},[91,36471,1450],{"emptyLinePlaceholder":846},[91,36473,36474,36476,36478,36480,36482],{"class":93,"line":3343},[91,36475,2695],{"class":566},[91,36477,7872],{"class":108},[91,36479,1235],{"class":101},[91,36481,1189],{"class":97},[91,36483,7879],{"class":101},[91,36485,36486],{"class":93,"line":7882},[91,36487,137],{"class":101},[91,36489,36490],{"class":93,"line":7887},[91,36491,1450],{"emptyLinePlaceholder":846},[91,36493,36494,36496,36498,36500,36502],{"class":93,"line":7892},[91,36495,7471],{"class":566},[91,36497,7693],{"class":97},[91,36499,795],{"class":101},[91,36501,7901],{"class":1172},[91,36503,3866],{"class":101},[91,36505,36506,36508,36510,36512,36514],{"class":93,"line":7906},[91,36507,2641],{"class":566},[91,36509,7911],{"class":108},[91,36511,1366],{"class":566},[91,36513,7916],{"class":97},[91,36515,7919],{"class":101},[91,36517,36518],{"class":93,"line":7922},[91,36519,1450],{"emptyLinePlaceholder":846},[91,36521,36522,36524,36526,36528,36530,36532,36534,36536,36538,36540,36542,36544,36546,36548,36550],{"class":93,"line":7927},[91,36523,2439],{"class":566},[91,36525,2662],{"class":101},[91,36527,2665],{"class":566},[91,36529,7936],{"class":101},[91,36531,7939],{"class":97},[91,36533,7942],{"class":101},[91,36535,7829],{"class":566},[91,36537,7947],{"class":101},[91,36539,156],{"class":566},[91,36541,6594],{"class":108},[91,36543,7954],{"class":566},[91,36545,7947],{"class":101},[91,36547,7959],{"class":566},[91,36549,7962],{"class":108},[91,36551,3866],{"class":101},[91,36553,36554,36556,36558,36560,36562,36564],{"class":93,"line":7967},[91,36555,2673],{"class":566},[91,36557,2676],{"class":566},[91,36559,2679],{"class":97},[91,36561,795],{"class":101},[91,36563,7978],{"class":169},[91,36565,1594],{"class":101},[91,36567,36568],{"class":93,"line":7983},[91,36569,1698],{"class":101},[91,36571,36572],{"class":93,"line":7988},[91,36573,1450],{"emptyLinePlaceholder":846},[91,36575,36576,36578],{"class":93,"line":7993},[91,36577,2695],{"class":566},[91,36579,102],{"class":101},[91,36581,36582,36584,36586,36588,36590,36592,36594,36596,36598,36600,36602,36604,36606,36608],{"class":93,"line":8000},[91,36583,8003],{"class":101},[91,36585,8006],{"class":97},[91,36587,8009],{"class":101},[91,36589,7829],{"class":566},[91,36591,8014],{"class":169},[91,36593,8017],{"class":101},[91,36595,8020],{"class":97},[91,36597,8023],{"class":101},[91,36599,8026],{"class":97},[91,36601,795],{"class":101},[91,36603,1578],{"class":108},[91,36605,64],{"class":101},[91,36607,5637],{"class":108},[91,36609,8037],{"class":101},[91,36611,36612],{"class":93,"line":8040},[91,36613,8043],{"class":101},[91,36615,36616,36618,36620,36622,36624,36626,36628,36630,36632,36634,36636,36638,36640,36642],{"class":93,"line":8046},[91,36617,8049],{"class":101},[91,36619,8006],{"class":97},[91,36621,8054],{"class":101},[91,36623,7829],{"class":566},[91,36625,8014],{"class":169},[91,36627,8017],{"class":101},[91,36629,8020],{"class":97},[91,36631,8023],{"class":101},[91,36633,8026],{"class":97},[91,36635,795],{"class":101},[91,36637,1578],{"class":108},[91,36639,64],{"class":101},[91,36641,8075],{"class":108},[91,36643,8037],{"class":101},[91,36645,36646],{"class":93,"line":8080},[91,36647,8083],{"class":101},[91,36649,36650],{"class":93,"line":8086},[91,36651,137],{"class":101},[16,36653,8091],{},[16,36655,36656,8097],{},[31,36657,8096],{},[16,36659,8100,36660,8104],{},[31,36661,8103],{},[82,36663,36664],{"className":7462,"code":8107,"language":7464,"meta":87,"style":87},[31,36665,36666,36678,36692,36704,36708,36714,36732,36750,36754,36764,36782,36786,36790,36798,36806,36812,36816,36822,36826,36834,36842,36846,36850,36854,36866,36896],{"__ignoreMap":87},[91,36667,36668,36670,36672,36674,36676],{"class":93,"line":94},[91,36669,7471],{"class":566},[91,36671,8116],{"class":97},[91,36673,795],{"class":101},[91,36675,8121],{"class":1172},[91,36677,3866],{"class":101},[91,36679,36680,36682,36684,36686,36688,36690],{"class":93,"line":105},[91,36681,2641],{"class":566},[91,36683,8130],{"class":108},[91,36685,1366],{"class":566},[91,36687,8135],{"class":101},[91,36689,8138],{"class":97},[91,36691,2030],{"class":101},[91,36693,36694,36696,36698,36700,36702],{"class":93,"line":121},[91,36695,8145],{"class":101},[91,36697,8148],{"class":97},[91,36699,795],{"class":101},[91,36701,8153],{"class":108},[91,36703,1594],{"class":101},[91,36705,36706],{"class":93,"line":134},[91,36707,1450],{"emptyLinePlaceholder":846},[91,36709,36710,36712],{"class":93,"line":228},[91,36711,2012],{"class":566},[91,36713,102],{"class":101},[91,36715,36716,36718,36720,36722,36724,36726,36728,36730],{"class":93,"line":250},[91,36717,1382],{"class":566},[91,36719,8172],{"class":108},[91,36721,1366],{"class":566},[91,36723,8177],{"class":101},[91,36725,8180],{"class":97},[91,36727,795],{"class":101},[91,36729,8185],{"class":108},[91,36731,1594],{"class":101},[91,36733,36734,36736,36738,36740,36742,36744,36746,36748],{"class":93,"line":260},[91,36735,1382],{"class":566},[91,36737,8194],{"class":108},[91,36739,1366],{"class":566},[91,36741,8199],{"class":101},[91,36743,8202],{"class":97},[91,36745,795],{"class":101},[91,36747,8207],{"class":108},[91,36749,1594],{"class":101},[91,36751,36752],{"class":93,"line":274},[91,36753,1450],{"emptyLinePlaceholder":846},[91,36755,36756,36758,36760,36762],{"class":93,"line":284},[91,36757,8218],{"class":566},[91,36759,2662],{"class":101},[91,36761,2665],{"class":566},[91,36763,8225],{"class":101},[91,36765,36766,36768,36770,36772,36774,36776,36778,36780],{"class":93,"line":299},[91,36767,8230],{"class":566},[91,36769,2676],{"class":566},[91,36771,2679],{"class":97},[91,36773,795],{"class":101},[91,36775,8239],{"class":169},[91,36777,8207],{"class":108},[91,36779,1241],{"class":169},[91,36781,1594],{"class":101},[91,36783,36784],{"class":93,"line":319},[91,36785,1693],{"class":101},[91,36787,36788],{"class":93,"line":334},[91,36789,1450],{"emptyLinePlaceholder":846},[91,36791,36792,36794,36796],{"class":93,"line":355},[91,36793,8258],{"class":101},[91,36795,8261],{"class":97},[91,36797,8264],{"class":101},[91,36799,36800,36802,36804],{"class":93,"line":364},[91,36801,8269],{"class":566},[91,36803,8272],{"class":97},[91,36805,8275],{"class":101},[91,36807,36808,36810],{"class":93,"line":378},[91,36809,8280],{"class":97},[91,36811,8283],{"class":101},[91,36813,36814],{"class":93,"line":387},[91,36815,8288],{"class":101},[91,36817,36818,36820],{"class":93,"line":402},[91,36819,8280],{"class":97},[91,36821,8295],{"class":101},[91,36823,36824],{"class":93,"line":422},[91,36825,8300],{"class":101},[91,36827,36828,36830,36832],{"class":93,"line":438},[91,36829,2053],{"class":101},[91,36831,8307],{"class":566},[91,36833,102],{"class":101},[91,36835,36836,36838,36840],{"class":93,"line":458},[91,36837,8314],{"class":101},[91,36839,8317],{"class":97},[91,36841,2030],{"class":101},[91,36843,36844],{"class":93,"line":467},[91,36845,1698],{"class":101},[91,36847,36848],{"class":93,"line":481},[91,36849,137],{"class":101},[91,36851,36852],{"class":93,"line":490},[91,36853,1450],{"emptyLinePlaceholder":846},[91,36855,36856,36858,36860,36862,36864],{"class":93,"line":3310},[91,36857,7471],{"class":566},[91,36859,8338],{"class":97},[91,36861,795],{"class":101},[91,36863,8343],{"class":1172},[91,36865,3866],{"class":101},[91,36867,36868,36870,36872,36874,36876,36878,36880,36882,36884,36886,36888,36890,36892,36894],{"class":93,"line":3315},[91,36869,2695],{"class":566},[91,36871,8352],{"class":169},[91,36873,8355],{"class":566},[91,36875,8358],{"class":108},[91,36877,8361],{"class":169},[91,36879,1235],{"class":101},[91,36881,8366],{"class":97},[91,36883,8369],{"class":101},[91,36885,8372],{"class":566},[91,36887,8375],{"class":169},[91,36889,8343],{"class":101},[91,36891,1241],{"class":169},[91,36893,2131],{"class":566},[91,36895,8384],{"class":101},[91,36897,36898],{"class":93,"line":3321},[91,36899,137],{"class":101},[16,36901,8391,36902,8395,36904,8398],{},[31,36903,8394],{},[31,36905,8307],{},[16,36907,8401,36908,64,36910,64,36912,64,36914,8413],{},[31,36909,166],{},[31,36911,8406],{},[31,36913,8409],{},[31,36915,8412],{},[49,36917,8417],{"id":8416},[16,36919,8420,36920,8424],{},[31,36921,8423],{},[82,36923,36924],{"className":8427,"code":8428,"language":8429,"meta":87,"style":87},[31,36925,36926,36934,36942,36950],{"__ignoreMap":87},[91,36927,36928,36930,36932],{"class":93,"line":94},[91,36929,8436],{"class":97},[91,36931,8439],{"class":108},[91,36933,8442],{"class":108},[91,36935,36936,36938,36940],{"class":93,"line":105},[91,36937,8447],{"class":108},[91,36939,8450],{"class":169},[91,36941,8442],{"class":108},[91,36943,36944,36946,36948],{"class":93,"line":121},[91,36945,8457],{"class":108},[91,36947,8460],{"class":169},[91,36949,8442],{"class":108},[91,36951,36952],{"class":93,"line":134},[91,36953,8467],{"class":169},[16,36955,8470,36956,8474],{},[31,36957,8473],{},[82,36959,36960],{"className":8477,"code":8478,"language":8479,"meta":87,"style":87},[31,36961,36962,36966,36976,36984],{"__ignoreMap":87},[91,36963,36964],{"class":93,"line":94},[91,36965,8486],{"class":101},[91,36967,36968,36970,36972,36974],{"class":93,"line":105},[91,36969,8491],{"class":108},[91,36971,112],{"class":101},[91,36973,7557],{"class":108},[91,36975,7560],{"class":101},[91,36977,36978,36980,36982],{"class":93,"line":121},[91,36979,8502],{"class":108},[91,36981,112],{"class":101},[91,36983,8507],{"class":169},[91,36985,36986],{"class":93,"line":134},[91,36987,137],{"class":101},[16,36989,36990,4115,36992,8519],{},[31,36991,8436],{},[31,36993,8518],{},[49,36995,8523],{"id":8522},[16,36997,36998],{},[19,36999],{"alt":8528,"src":8529},[16,37001,8532,37002,8536],{},[31,37003,8535],{},[16,37005,8539],{},[16,37007,8542],{},[24,37009,37010,37012,37014],{},[27,37011,8547],{},[27,37013,8550],{},[27,37015,8553],{},[1722,37017,37018],{},[16,37019,37020,8561],{},[91,37021,8560],{},[16,37023,8564,37024,8567,37026,8571],{},[31,37025,8423],{},[31,37027,8570],{},[49,37029,6005],{"id":6004},[1112,37031],{"description":8576,"host":8577,"title":8578,"url":8579},[1112,37033],{"description":8582,"host":8577,"title":8583,"url":8584},[1112,37035],{"description":8587,"host":8577,"title":8588,"url":8589},[1112,37037],{"description":8592,"host":8577,"title":8593,"url":8594},[829,37039,8597],{},{"title":87,"searchDepth":105,"depth":105,"links":37041},[37042,37043,37044,37045,37046,37047],{"id":7428,"depth":105,"text":7429},{"id":7589,"depth":105,"text":7590},{"id":7608,"depth":105,"text":7609},{"id":8416,"depth":105,"text":8417},{"id":8522,"depth":105,"text":8523},{"id":6004,"depth":105,"text":6005},{},{"title":7413,"description":8607},{"loc":8610},[8616,8617,8618,2865],{"id":8621,"title":8622,"body":37053,"created":9114,"description":9115,"extension":843,"filename":9116,"meta":37432,"navigation":846,"path":9118,"seo":37433,"sitemap":37434,"stem":9121,"subject":9122,"tags":37435,"updated":9114,"volume":853,"__hash__":9126},{"type":8,"value":37054,"toc":37420},[37055,37057,37059,37061,37063,37087,37089,37107,37109,37111,37149,37153,37155,37159,37164,37166,37366,37368,37380,37382,37386,37390,37392,37394,37396,37402,37404,37406,37408,37410,37412,37414,37416,37418],[1112,37056],{"description":8627,"favicon":1320,"host":1317,"image":8628,"title":8629,"url":8630},[16,37058,8633],{},[16,37060,8636],{},[49,37062,8640],{"id":8639},[82,37064,37065],{"className":6839,"code":8643,"language":6841,"meta":87,"style":87},[31,37066,37067,37077],{"__ignoreMap":87},[91,37068,37069,37071,37073,37075],{"class":93,"line":94},[91,37070,8650],{"class":97},[91,37072,8653],{"class":169},[91,37074,8656],{"class":169},[91,37076,8659],{"class":169},[91,37078,37079,37081,37083,37085],{"class":93,"line":105},[91,37080,8664],{"class":97},[91,37082,8667],{"class":169},[91,37084,8670],{"class":108},[91,37086,8673],{"class":108},[16,37088,8676],{},[82,37090,37091],{"className":6839,"code":8679,"language":6841,"meta":87,"style":87},[31,37092,37093,37103],{"__ignoreMap":87},[91,37094,37095,37097,37099,37101],{"class":93,"line":94},[91,37096,2574],{"class":566},[91,37098,8688],{"class":101},[91,37100,166],{"class":566},[91,37102,8693],{"class":101},[91,37104,37105],{"class":93,"line":105},[91,37106,8698],{"class":97},[16,37108,8701],{},[49,37110,8705],{"id":8704},[82,37112,37113],{"className":6839,"code":8708,"language":6841,"meta":87,"style":87},[31,37114,37115,37121,37125,37129,37139,37143],{"__ignoreMap":87},[91,37116,37117,37119],{"class":93,"line":94},[91,37118,8715],{"class":97},[91,37120,8718],{"class":169},[91,37122,37123],{"class":93,"line":105},[91,37124,8723],{"class":101},[91,37126,37127],{"class":93,"line":121},[91,37128,8728],{"class":1343},[91,37130,37131,37133,37135,37137],{"class":93,"line":134},[91,37132,2574],{"class":566},[91,37134,8688],{"class":101},[91,37136,166],{"class":566},[91,37138,8693],{"class":101},[91,37140,37141],{"class":93,"line":228},[91,37142,8723],{"class":101},[91,37144,37145,37147],{"class":93,"line":250},[91,37146,8747],{"class":108},[91,37148,8718],{"class":169},[16,37150,8752,37151,8756],{},[31,37152,8755],{},[49,37154,8760],{"id":8759},[16,37156,8763,37157,8767],{},[31,37158,8766],{},[82,37160,37162],{"className":37161,"code":8771,"language":1099},[1097],[31,37163,8771],{"__ignoreMap":87},[16,37165,8776],{},[82,37167,37168],{"className":8477,"code":8779,"language":8479,"meta":87,"style":87},[31,37169,37170,37176,37186,37196,37206,37212,37222,37232,37242,37252,37262,37272,37280,37284,37290,37300,37310,37320,37330,37336,37346,37354,37358,37362],{"__ignoreMap":87},[91,37171,37172,37174],{"class":93,"line":94},[91,37173,8786],{"class":169},[91,37175,8789],{"class":101},[91,37177,37178,37180,37182,37184],{"class":93,"line":105},[91,37179,8794],{"class":108},[91,37181,112],{"class":101},[91,37183,8799],{"class":169},[91,37185,7560],{"class":101},[91,37187,37188,37190,37192,37194],{"class":93,"line":121},[91,37189,8806],{"class":108},[91,37191,112],{"class":101},[91,37193,8811],{"class":108},[91,37195,7560],{"class":101},[91,37197,37198,37200,37202,37204],{"class":93,"line":134},[91,37199,8818],{"class":108},[91,37201,112],{"class":101},[91,37203,8823],{"class":169},[91,37205,7560],{"class":101},[91,37207,37208,37210],{"class":93,"line":228},[91,37209,8830],{"class":108},[91,37211,8789],{"class":101},[91,37213,37214,37216,37218,37220],{"class":93,"line":250},[91,37215,8837],{"class":108},[91,37217,112],{"class":101},[91,37219,8842],{"class":108},[91,37221,7560],{"class":101},[91,37223,37224,37226,37228,37230],{"class":93,"line":260},[91,37225,8849],{"class":108},[91,37227,112],{"class":101},[91,37229,8854],{"class":108},[91,37231,7560],{"class":101},[91,37233,37234,37236,37238,37240],{"class":93,"line":274},[91,37235,8861],{"class":108},[91,37237,112],{"class":101},[91,37239,8866],{"class":108},[91,37241,7560],{"class":101},[91,37243,37244,37246,37248,37250],{"class":93,"line":284},[91,37245,8873],{"class":108},[91,37247,112],{"class":101},[91,37249,8878],{"class":169},[91,37251,7560],{"class":101},[91,37253,37254,37256,37258,37260],{"class":93,"line":299},[91,37255,8885],{"class":108},[91,37257,112],{"class":101},[91,37259,8890],{"class":108},[91,37261,7560],{"class":101},[91,37263,37264,37266,37268,37270],{"class":93,"line":319},[91,37265,8897],{"class":108},[91,37267,112],{"class":101},[91,37269,8890],{"class":108},[91,37271,7560],{"class":101},[91,37273,37274,37276,37278],{"class":93,"line":334},[91,37275,8908],{"class":108},[91,37277,112],{"class":101},[91,37279,8913],{"class":108},[91,37281,37282],{"class":93,"line":355},[91,37283,3477],{"class":101},[91,37285,37286,37288],{"class":93,"line":364},[91,37287,8922],{"class":108},[91,37289,8789],{"class":101},[91,37291,37292,37294,37296,37298],{"class":93,"line":378},[91,37293,8929],{"class":108},[91,37295,112],{"class":101},[91,37297,8934],{"class":108},[91,37299,7560],{"class":101},[91,37301,37302,37304,37306,37308],{"class":93,"line":387},[91,37303,8941],{"class":108},[91,37305,112],{"class":101},[91,37307,8946],{"class":108},[91,37309,7560],{"class":101},[91,37311,37312,37314,37316,37318],{"class":93,"line":402},[91,37313,8953],{"class":108},[91,37315,112],{"class":101},[91,37317,8958],{"class":108},[91,37319,7560],{"class":101},[91,37321,37322,37324,37326,37328],{"class":93,"line":422},[91,37323,8965],{"class":108},[91,37325,112],{"class":101},[91,37327,8970],{"class":108},[91,37329,7560],{"class":101},[91,37331,37332,37334],{"class":93,"line":438},[91,37333,8977],{"class":108},[91,37335,8789],{"class":101},[91,37337,37338,37340,37342,37344],{"class":93,"line":458},[91,37339,8984],{"class":108},[91,37341,112],{"class":101},[91,37343,8989],{"class":108},[91,37345,7560],{"class":101},[91,37347,37348,37350,37352],{"class":93,"line":467},[91,37349,8996],{"class":108},[91,37351,112],{"class":101},[91,37353,9001],{"class":108},[91,37355,37356],{"class":93,"line":481},[91,37357,3307],{"class":101},[91,37359,37360],{"class":93,"line":490},[91,37361,1693],{"class":101},[91,37363,37364],{"class":93,"line":3310},[91,37365,137],{"class":101},[16,37367,9016],{},[24,37369,37370,37376,37378],{},[27,37371,37372,9024,37374,9028],{},[31,37373,9023],{},[31,37375,9027],{},[27,37377,9031],{},[27,37379,9034],{},[16,37381,9037],{},[16,37383,37384],{},[19,37385],{"alt":87,"src":9042},[16,37387,9045,37388,9049],{},[31,37389,9048],{},[49,37391,9053],{"id":9052},[16,37393,9056],{},[757,37395,9060],{"id":9059},[16,37397,9063,37398,64,37400,9070],{},[31,37399,9066],{},[31,37401,9069],{},[757,37403,9074],{"id":9073},[16,37405,9077],{},[757,37407,9081],{"id":9080},[16,37409,9084],{},[757,37411,9088],{"id":9087},[16,37413,9091],{},[757,37415,9095],{"id":9094},[16,37417,9098],{},[829,37419,9101],{},{"title":87,"searchDepth":105,"depth":105,"links":37421},[37422,37423,37424,37425],{"id":8639,"depth":105,"text":8640},{"id":8704,"depth":105,"text":8705},{"id":8759,"depth":105,"text":8760},{"id":9052,"depth":105,"text":9053,"children":37426},[37427,37428,37429,37430,37431],{"id":9059,"depth":121,"text":9060},{"id":9073,"depth":121,"text":9074},{"id":9080,"depth":121,"text":9081},{"id":9087,"depth":121,"text":9088},{"id":9094,"depth":121,"text":9095},{},{"title":8622,"description":9115},{"loc":9118},[9124,8755,9125,8664],{"id":9128,"title":9129,"body":37437,"created":6033,"description":10132,"extension":843,"filename":10133,"meta":38251,"navigation":846,"path":10135,"seo":38252,"sitemap":38253,"stem":10138,"subject":10139,"tags":38254,"updated":6033,"volume":853,"__hash__":10143},{"type":8,"value":37438,"toc":38245},[37439,37447,37521,37523,37525,37575,37577,37685,37699,37701,37703,37837,37839,37843,37849,37851,37903,37907,37985,37995,37997,38003,38009,38011,38013,38015,38101,38105,38235,38241,38243],[16,37440,9134,37441,9138,37443,9142,37445,9146],{},[31,37442,9137],{},[31,37444,9141],{},[31,37446,9145],{},[812,37448,37449,37463],{},[3001,37450,37451],{},[3004,37452,37453,37455,37457,37459,37461],{},[3007,37454,9155],{},[3007,37456,9158],{},[3007,37458,9161],{},[3007,37460,9164],{},[3007,37462,9167],{},[3017,37464,37465,37481,37495,37509],{},[3004,37466,37467,37471,37473,37475,37479],{},[3022,37468,37469,9176],{},[31,37470,9137],{},[3022,37472,9179],{},[3022,37474,9182],{},[3022,37476,37477,9188],{},[31,37478,9187],{},[3022,37480,9191],{},[3004,37482,37483,37487,37489,37491,37493],{},[3022,37484,37485],{},[31,37486,9141],{},[3022,37488,9200],{},[3022,37490,9182],{},[3022,37492,9205],{},[3022,37494,9191],{},[3004,37496,37497,37501,37503,37505,37507],{},[3022,37498,37499],{},[31,37500,9145],{},[3022,37502,9216],{},[3022,37504,9219],{},[3022,37506,9205],{},[3022,37508,9224],{},[3004,37510,37511,37513,37515,37517,37519],{},[3022,37512,9229],{},[3022,37514,9232],{},[3022,37516,9235],{},[3022,37518,9205],{},[3022,37520,9240],{},[49,37522,9244],{"id":9243},[1112,37524],{"description":9247,"favicon":9248,"host":5541,"title":9249,"url":9250},[82,37526,37527],{"className":1154,"code":9253,"language":1156,"meta":87,"style":87},[31,37528,37529,37537,37543,37561,37565,37569],{"__ignoreMap":87},[91,37530,37531,37533,37535],{"class":93,"line":94},[91,37532,9260],{"class":101},[91,37534,9263],{"class":97},[91,37536,9266],{"class":101},[91,37538,37539,37541],{"class":93,"line":105},[91,37540,9271],{"class":169},[91,37542,7560],{"class":101},[91,37544,37545,37547,37549,37551,37553,37555,37557,37559],{"class":93,"line":121},[91,37546,9278],{"class":108},[91,37548,1235],{"class":101},[91,37550,7506],{"class":97},[91,37552,9285],{"class":101},[91,37554,9288],{"class":169},[91,37556,9291],{"class":101},[91,37558,9294],{"class":97},[91,37560,9297],{"class":101},[91,37562,37563],{"class":93,"line":134},[91,37564,3487],{"class":101},[91,37566,37567],{"class":93,"line":228},[91,37568,1450],{"emptyLinePlaceholder":846},[91,37570,37571,37573],{"class":93,"line":250},[91,37572,9310],{"class":97},[91,37574,9313],{"class":101},[16,37576,9316],{},[82,37578,37579],{"className":1154,"code":9319,"language":1156,"meta":87,"style":87},[31,37580,37581,37601,37613,37635,37639,37655,37659,37671,37677,37681],{"__ignoreMap":87},[91,37582,37583,37585,37587,37589,37591,37593,37595,37597,37599],{"class":93,"line":94},[91,37584,9326],{"class":101},[91,37586,9329],{"class":97},[91,37588,795],{"class":101},[91,37590,9334],{"class":169},[91,37592,9337],{"class":101},[91,37594,9340],{"class":1172},[91,37596,1176],{"class":101},[91,37598,1179],{"class":566},[91,37600,102],{"class":101},[91,37602,37603,37605,37607,37609,37611],{"class":93,"line":105},[91,37604,2439],{"class":566},[91,37606,9353],{"class":101},[91,37608,9356],{"class":566},[91,37610,9359],{"class":101},[91,37612,9362],{"class":566},[91,37614,37615,37617,37619,37621,37623,37625,37627,37629,37631,37633],{"class":93,"line":121},[91,37616,2439],{"class":566},[91,37618,9369],{"class":101},[91,37620,9356],{"class":566},[91,37622,9374],{"class":169},[91,37624,7954],{"class":566},[91,37626,9379],{"class":101},[91,37628,9382],{"class":566},[91,37630,1363],{"class":108},[91,37632,1176],{"class":101},[91,37634,9362],{"class":566},[91,37636,37637],{"class":93,"line":134},[91,37638,1450],{"emptyLinePlaceholder":846},[91,37640,37641,37643,37645,37647,37649,37651,37653],{"class":93,"line":228},[91,37642,2641],{"class":566},[91,37644,9399],{"class":108},[91,37646,1366],{"class":566},[91,37648,7872],{"class":108},[91,37650,1235],{"class":101},[91,37652,1189],{"class":97},[91,37654,9410],{"class":101},[91,37656,37657],{"class":93,"line":250},[91,37658,1450],{"emptyLinePlaceholder":846},[91,37660,37661,37663,37665,37667,37669],{"class":93,"line":260},[91,37662,2439],{"class":566},[91,37664,9421],{"class":101},[91,37666,9382],{"class":566},[91,37668,9426],{"class":169},[91,37670,3866],{"class":101},[91,37672,37673,37675],{"class":93,"line":274},[91,37674,9433],{"class":97},[91,37676,9313],{"class":101},[91,37678,37679],{"class":93,"line":284},[91,37680,1698],{"class":101},[91,37682,37683],{"class":93,"line":299},[91,37684,9444],{"class":101},[16,37686,37687,9449,37689,64,37691,64,37693,64,37695,9462,37697,9465],{},[31,37688,9137],{},[31,37690,9452],{},[31,37692,9455],{},[31,37694,9458],{},[31,37696,9461],{},[31,37698,5177],{},[49,37700,9141],{"id":9468},[1112,37702],{"description":9471,"favicon":9248,"host":5541,"title":9472,"url":9473},[82,37704,37705],{"className":1154,"code":9476,"language":1156,"meta":87,"style":87},[31,37706,37707,37725,37729,37749,37761,37767,37771,37775,37779,37787,37793,37805,37809,37813],{"__ignoreMap":87},[91,37708,37709,37711,37713,37715,37717,37719,37721,37723],{"class":93,"line":94},[91,37710,1968],{"class":566},[91,37712,9485],{"class":108},[91,37714,1366],{"class":566},[91,37716,2676],{"class":566},[91,37718,9492],{"class":97},[91,37720,795],{"class":101},[91,37722,9497],{"class":169},[91,37724,3487],{"class":101},[91,37726,37727],{"class":93,"line":105},[91,37728,1450],{"emptyLinePlaceholder":846},[91,37730,37731,37733,37735,37737,37739,37741,37743,37745,37747],{"class":93,"line":121},[91,37732,9508],{"class":101},[91,37734,9329],{"class":97},[91,37736,795],{"class":101},[91,37738,9515],{"class":169},[91,37740,9337],{"class":101},[91,37742,9340],{"class":1172},[91,37744,1176],{"class":101},[91,37746,1179],{"class":566},[91,37748,102],{"class":101},[91,37750,37751,37753,37755,37757,37759],{"class":93,"line":134},[91,37752,2439],{"class":566},[91,37754,9532],{"class":101},[91,37756,9382],{"class":566},[91,37758,9537],{"class":169},[91,37760,3866],{"class":101},[91,37762,37763,37765],{"class":93,"line":228},[91,37764,9433],{"class":97},[91,37766,9313],{"class":101},[91,37768,37769],{"class":93,"line":250},[91,37770,1698],{"class":101},[91,37772,37773],{"class":93,"line":260},[91,37774,9444],{"class":101},[91,37776,37777],{"class":93,"line":274},[91,37778,1450],{"emptyLinePlaceholder":846},[91,37780,37781,37783,37785],{"class":93,"line":284},[91,37782,7471],{"class":566},[91,37784,9564],{"class":97},[91,37786,2007],{"class":101},[91,37788,37789,37791],{"class":93,"line":299},[91,37790,9571],{"class":97},[91,37792,9313],{"class":101},[91,37794,37795,37797,37799,37801,37803],{"class":93,"line":319},[91,37796,9578],{"class":101},[91,37798,9581],{"class":97},[91,37800,9584],{"class":101},[91,37802,9587],{"class":169},[91,37804,9590],{"class":101},[91,37806,37807],{"class":93,"line":334},[91,37808,137],{"class":101},[91,37810,37811],{"class":93,"line":355},[91,37812,1450],{"emptyLinePlaceholder":846},[91,37814,37815,37817,37819,37821,37823,37825,37827,37829,37831,37833,37835],{"class":93,"line":364},[91,37816,9326],{"class":101},[91,37818,9329],{"class":97},[91,37820,795],{"class":101},[91,37822,9609],{"class":169},[91,37824,9612],{"class":101},[91,37826,1179],{"class":566},[91,37828,9617],{"class":101},[91,37830,9620],{"class":97},[91,37832,9623],{"class":101},[91,37834,7557],{"class":108},[91,37836,9590],{"class":101},[16,37838,9630],{},[16,37840,37841],{},[19,37842],{"alt":9635,"src":9636},[16,37844,9639,37845,9642,37847,9646],{},[31,37846,9141],{},[31,37848,9645],{},[49,37850,9650],{"id":9649},[82,37852,37853],{"className":1154,"code":9653,"language":1156,"meta":87,"style":87},[31,37854,37855,37873,37877,37885,37893,37899],{"__ignoreMap":87},[91,37856,37857,37859,37861,37863,37865,37867,37869,37871],{"class":93,"line":94},[91,37858,1968],{"class":566},[91,37860,9662],{"class":108},[91,37862,1366],{"class":566},[91,37864,5049],{"class":101},[91,37866,9669],{"class":97},[91,37868,795],{"class":101},[91,37870,9674],{"class":169},[91,37872,3487],{"class":101},[91,37874,37875],{"class":93,"line":105},[91,37876,1450],{"emptyLinePlaceholder":846},[91,37878,37879,37881,37883],{"class":93,"line":121},[91,37880,9685],{"class":101},[91,37882,9581],{"class":97},[91,37884,9266],{"class":101},[91,37886,37887,37889,37891],{"class":93,"line":134},[91,37888,9694],{"class":101},[91,37890,9697],{"class":169},[91,37892,9700],{"class":101},[91,37894,37895,37897],{"class":93,"line":228},[91,37896,9705],{"class":169},[91,37898,7560],{"class":101},[91,37900,37901],{"class":93,"line":250},[91,37902,3487],{"class":101},[16,37904,37905,9717],{},[31,37906,9716],{},[82,37908,37909],{"className":1154,"code":9720,"language":1156,"meta":87,"style":87},[31,37910,37911,37931,37945,37957,37971,37975,37981],{"__ignoreMap":87},[91,37912,37913,37915,37917,37919,37921,37923,37925,37927,37929],{"class":93,"line":94},[91,37914,9326],{"class":101},[91,37916,9329],{"class":97},[91,37918,795],{"class":101},[91,37920,9515],{"class":169},[91,37922,9337],{"class":101},[91,37924,9340],{"class":1172},[91,37926,1176],{"class":101},[91,37928,1179],{"class":566},[91,37930,102],{"class":101},[91,37932,37933,37935,37937,37939,37941,37943],{"class":93,"line":105},[91,37934,2439],{"class":566},[91,37936,9749],{"class":101},[91,37938,9356],{"class":566},[91,37940,9754],{"class":169},[91,37942,1176],{"class":101},[91,37944,9362],{"class":566},[91,37946,37947,37949,37951,37953,37955],{"class":93,"line":121},[91,37948,2439],{"class":566},[91,37950,9765],{"class":101},[91,37952,9356],{"class":566},[91,37954,9770],{"class":101},[91,37956,9362],{"class":566},[91,37958,37959,37961,37963,37965,37967,37969],{"class":93,"line":134},[91,37960,2439],{"class":566},[91,37962,9532],{"class":101},[91,37964,9356],{"class":566},[91,37966,9783],{"class":169},[91,37968,1176],{"class":101},[91,37970,9362],{"class":566},[91,37972,37973],{"class":93,"line":228},[91,37974,1450],{"emptyLinePlaceholder":846},[91,37976,37977,37979],{"class":93,"line":250},[91,37978,9796],{"class":97},[91,37980,9799],{"class":101},[91,37982,37983],{"class":93,"line":260},[91,37984,9444],{"class":101},[16,37986,37987,9809,37989,9812,37991,9816,37993,9819],{},[31,37988,9808],{},[31,37990,9141],{},[31,37992,9815],{},[31,37994,8747],{},[1112,37996],{"description":9822,"favicon":9248,"host":5541,"title":9823,"url":9824},[16,37998,9827,37999,9831,38001,9834],{},[31,38000,9830],{},[31,38002,6591],{},[16,38004,9837,38005,5427,38007,9842],{},[31,38006,9141],{},[31,38008,9137],{},[49,38010,9846],{"id":9845},[1112,38012],{"description":9849,"favicon":9248,"host":5541,"title":9850,"url":9851},[16,38014,9854],{},[82,38016,38017],{"className":1154,"code":9857,"language":1156,"meta":87,"style":87},[31,38018,38019,38023,38031,38039,38047,38051,38055,38075,38087,38093,38097],{"__ignoreMap":87},[91,38020,38021],{"class":93,"line":94},[91,38022,9864],{"class":1343},[91,38024,38025,38027,38029],{"class":93,"line":105},[91,38026,9869],{"class":101},[91,38028,9581],{"class":97},[91,38030,7549],{"class":101},[91,38032,38033,38035,38037],{"class":93,"line":121},[91,38034,9878],{"class":101},[91,38036,9881],{"class":169},[91,38038,7560],{"class":101},[91,38040,38041,38043,38045],{"class":93,"line":134},[91,38042,9888],{"class":101},[91,38044,9891],{"class":169},[91,38046,9700],{"class":101},[91,38048,38049],{"class":93,"line":228},[91,38050,9444],{"class":101},[91,38052,38053],{"class":93,"line":250},[91,38054,1450],{"emptyLinePlaceholder":846},[91,38056,38057,38059,38061,38063,38065,38067,38069,38071,38073],{"class":93,"line":260},[91,38058,9906],{"class":101},[91,38060,9329],{"class":97},[91,38062,795],{"class":101},[91,38064,9515],{"class":169},[91,38066,9337],{"class":101},[91,38068,9340],{"class":1172},[91,38070,1176],{"class":101},[91,38072,1179],{"class":566},[91,38074,102],{"class":101},[91,38076,38077,38079,38081,38083,38085],{"class":93,"line":274},[91,38078,2439],{"class":566},[91,38080,9532],{"class":101},[91,38082,9382],{"class":566},[91,38084,9933],{"class":169},[91,38086,3866],{"class":101},[91,38088,38089,38091],{"class":93,"line":284},[91,38090,9940],{"class":97},[91,38092,9313],{"class":101},[91,38094,38095],{"class":93,"line":299},[91,38096,1698],{"class":101},[91,38098,38099],{"class":93,"line":319},[91,38100,9444],{"class":101},[16,38102,9953,38103,9956],{},[31,38104,9808],{},[82,38106,38107],{"className":7462,"code":9959,"language":7464,"meta":87,"style":87},[31,38108,38109,38113,38133,38147,38151,38159,38183,38197,38207,38215,38219,38223,38227,38231],{"__ignoreMap":87},[91,38110,38111],{"class":93,"line":94},[91,38112,9966],{"class":1343},[91,38114,38115,38117,38119,38121,38123,38125,38127,38129,38131],{"class":93,"line":105},[91,38116,9971],{"class":101},[91,38118,9329],{"class":97},[91,38120,795],{"class":101},[91,38122,9515],{"class":169},[91,38124,9337],{"class":101},[91,38126,9340],{"class":1172},[91,38128,1176],{"class":101},[91,38130,1179],{"class":566},[91,38132,102],{"class":101},[91,38134,38135,38137,38139,38141,38143,38145],{"class":93,"line":121},[91,38136,2439],{"class":566},[91,38138,9532],{"class":101},[91,38140,9356],{"class":566},[91,38142,9998],{"class":169},[91,38144,1176],{"class":101},[91,38146,9362],{"class":566},[91,38148,38149],{"class":93,"line":134},[91,38150,1450],{"emptyLinePlaceholder":846},[91,38152,38153,38155,38157],{"class":93,"line":228},[91,38154,10011],{"class":101},[91,38156,10014],{"class":97},[91,38158,9266],{"class":101},[91,38160,38161,38163,38165,38167,38169,38171,38173,38175,38177,38179,38181],{"class":93,"line":250},[91,38162,10021],{"class":101},[91,38164,10024],{"class":97},[91,38166,9584],{"class":101},[91,38168,10029],{"class":169},[91,38170,10032],{"class":101},[91,38172,1200],{"class":97},[91,38174,1169],{"class":101},[91,38176,10039],{"class":1172},[91,38178,1176],{"class":101},[91,38180,1179],{"class":566},[91,38182,102],{"class":101},[91,38184,38185,38187,38189,38191,38193,38195],{"class":93,"line":260},[91,38186,10050],{"class":566},[91,38188,2662],{"class":101},[91,38190,1968],{"class":566},[91,38192,10057],{"class":108},[91,38194,10060],{"class":566},[91,38196,10063],{"class":101},[91,38198,38199,38201,38203,38205],{"class":93,"line":274},[91,38200,10068],{"class":566},[91,38202,10071],{"class":101},[91,38204,9356],{"class":566},[91,38206,10076],{"class":101},[91,38208,38209,38211,38213],{"class":93,"line":284},[91,38210,10081],{"class":101},[91,38212,9581],{"class":97},[91,38214,10086],{"class":101},[91,38216,38217],{"class":93,"line":299},[91,38218,3307],{"class":101},[91,38220,38221],{"class":93,"line":319},[91,38222,10095],{"class":101},[91,38224,38225],{"class":93,"line":334},[91,38226,10100],{"class":101},[91,38228,38229],{"class":93,"line":355},[91,38230,10105],{"class":101},[91,38232,38233],{"class":93,"line":364},[91,38234,9444],{"class":101},[16,38236,38237,10115,38239,10119],{},[31,38238,10114],{},[31,38240,10118],{},[16,38242,10122],{},[829,38244,10125],{},{"title":87,"searchDepth":105,"depth":105,"links":38246},[38247,38248,38249,38250],{"id":9243,"depth":105,"text":9244},{"id":9468,"depth":105,"text":9141},{"id":9649,"depth":105,"text":9650},{"id":9845,"depth":105,"text":9846},{},{"title":9129,"description":10132},{"loc":10135},[2865,10141,8618,10142],{"id":10145,"title":10146,"body":38256,"created":10831,"description":10832,"extension":843,"filename":10833,"meta":38797,"navigation":846,"path":10835,"seo":38798,"sitemap":38799,"stem":10838,"subject":9122,"tags":38800,"updated":10831,"volume":853,"__hash__":10842},{"type":8,"value":38257,"toc":38789},[38258,38260,38262,38264,38266,38272,38274,38286,38288,38290,38416,38484,38486,38700,38702,38708,38710,38756,38760,38762,38764,38769,38775,38777,38779,38781,38783,38785,38787],[16,38259,10151],{},[49,38261,10155],{"id":10154},[16,38263,10158],{},[16,38265,10161],{},[24,38267,38268,38270],{},[27,38269,10166],{},[27,38271,10169],{},[49,38273,10173],{"id":10172},[82,38275,38276],{"className":6839,"code":10176,"language":6841,"meta":87,"style":87},[31,38277,38278],{"__ignoreMap":87},[91,38279,38280,38282,38284],{"class":93,"line":94},[91,38281,10183],{"class":97},[91,38283,8653],{"class":169},[91,38285,10188],{"class":169},[16,38287,10191],{},[16,38289,10194],{},[82,38291,38292],{"className":6839,"code":10197,"language":6841,"meta":87,"style":87},[31,38293,38294,38300,38308,38316,38324,38332,38340,38348,38356,38362,38370,38378,38386,38392,38398,38406,38412],{"__ignoreMap":87},[91,38295,38296,38298],{"class":93,"line":94},[91,38297,10204],{"class":97},[91,38299,8442],{"class":108},[91,38301,38302,38304,38306],{"class":93,"line":105},[91,38303,10211],{"class":108},[91,38305,10214],{"class":169},[91,38307,8442],{"class":108},[91,38309,38310,38312,38314],{"class":93,"line":121},[91,38311,10221],{"class":108},[91,38313,10224],{"class":108},[91,38315,8442],{"class":108},[91,38317,38318,38320,38322],{"class":93,"line":134},[91,38319,10231],{"class":108},[91,38321,10234],{"class":108},[91,38323,8442],{"class":108},[91,38325,38326,38328,38330],{"class":93,"line":228},[91,38327,10241],{"class":108},[91,38329,10244],{"class":108},[91,38331,8442],{"class":108},[91,38333,38334,38336,38338],{"class":93,"line":250},[91,38335,10251],{"class":108},[91,38337,10254],{"class":108},[91,38339,8442],{"class":108},[91,38341,38342,38344,38346],{"class":93,"line":260},[91,38343,10261],{"class":108},[91,38345,6594],{"class":108},[91,38347,8442],{"class":108},[91,38349,38350,38352,38354],{"class":93,"line":274},[91,38351,10270],{"class":108},[91,38353,10273],{"class":169},[91,38355,8442],{"class":108},[91,38357,38358,38360],{"class":93,"line":284},[91,38359,10280],{"class":108},[91,38361,8442],{"class":108},[91,38363,38364,38366,38368],{"class":93,"line":299},[91,38365,10287],{"class":108},[91,38367,10254],{"class":108},[91,38369,8442],{"class":108},[91,38371,38372,38374,38376],{"class":93,"line":319},[91,38373,10296],{"class":108},[91,38375,10299],{"class":169},[91,38377,8442],{"class":108},[91,38379,38380,38382,38384],{"class":93,"line":334},[91,38381,10306],{"class":108},[91,38383,10299],{"class":169},[91,38385,8442],{"class":108},[91,38387,38388,38390],{"class":93,"line":355},[91,38389,10315],{"class":108},[91,38391,8442],{"class":108},[91,38393,38394,38396],{"class":93,"line":364},[91,38395,10322],{"class":108},[91,38397,8442],{"class":108},[91,38399,38400,38402,38404],{"class":93,"line":378},[91,38401,10329],{"class":108},[91,38403,10332],{"class":169},[91,38405,8442],{"class":108},[91,38407,38408,38410],{"class":93,"line":387},[91,38409,10339],{"class":108},[91,38411,8442],{"class":108},[91,38413,38414],{"class":93,"line":402},[91,38415,10346],{"class":108},[812,38417,38418,38426],{},[3001,38419,38420],{},[3004,38421,38422,38424],{},[3007,38423,10356],{"align":10355},[3007,38425,10359],{"align":10355},[3017,38427,38428,38436,38444,38452,38460,38468,38476],{},[3004,38429,38430,38434],{},[3022,38431,38432],{"align":10355},[31,38433,10368],{},[3022,38435,10371],{"align":10355},[3004,38437,38438,38442],{},[3022,38439,38440],{"align":10355},[31,38441,10378],{},[3022,38443,10381],{"align":10355},[3004,38445,38446,38450],{},[3022,38447,38448],{"align":10355},[31,38449,10388],{},[3022,38451,10391],{"align":10355},[3004,38453,38454,38458],{},[3022,38455,38456],{"align":10355},[31,38457,10398],{},[3022,38459,10401],{"align":10355},[3004,38461,38462,38466],{},[3022,38463,38464],{"align":10355},[31,38465,10408],{},[3022,38467,10411],{"align":10355},[3004,38469,38470,38474],{},[3022,38471,38472],{"align":10355},[31,38473,10418],{},[3022,38475,10421],{"align":10355},[3004,38477,38478,38482],{},[3022,38479,38480],{"align":10355},[31,38481,10428],{},[3022,38483,10431],{"align":10355},[49,38485,10435],{"id":10434},[82,38487,38488],{"className":8477,"code":10438,"language":8479,"meta":87,"style":87},[31,38489,38490,38494,38500,38510,38520,38530,38540,38550,38560,38570,38580,38590,38600,38608,38612,38618,38624,38646,38668,38688,38692,38696],{"__ignoreMap":87},[91,38491,38492],{"class":93,"line":94},[91,38493,8486],{"class":101},[91,38495,38496,38498],{"class":93,"line":105},[91,38497,10449],{"class":108},[91,38499,8789],{"class":101},[91,38501,38502,38504,38506,38508],{"class":93,"line":121},[91,38503,10456],{"class":108},[91,38505,112],{"class":101},[91,38507,10461],{"class":169},[91,38509,7560],{"class":101},[91,38511,38512,38514,38516,38518],{"class":93,"line":134},[91,38513,10468],{"class":108},[91,38515,112],{"class":101},[91,38517,10473],{"class":169},[91,38519,7560],{"class":101},[91,38521,38522,38524,38526,38528],{"class":93,"line":228},[91,38523,10480],{"class":108},[91,38525,112],{"class":101},[91,38527,10485],{"class":169},[91,38529,7560],{"class":101},[91,38531,38532,38534,38536,38538],{"class":93,"line":250},[91,38533,10492],{"class":108},[91,38535,112],{"class":101},[91,38537,10485],{"class":169},[91,38539,7560],{"class":101},[91,38541,38542,38544,38546,38548],{"class":93,"line":260},[91,38543,10503],{"class":108},[91,38545,112],{"class":101},[91,38547,10485],{"class":169},[91,38549,7560],{"class":101},[91,38551,38552,38554,38556,38558],{"class":93,"line":274},[91,38553,10514],{"class":108},[91,38555,112],{"class":101},[91,38557,10485],{"class":169},[91,38559,7560],{"class":101},[91,38561,38562,38564,38566,38568],{"class":93,"line":284},[91,38563,10525],{"class":108},[91,38565,112],{"class":101},[91,38567,10485],{"class":169},[91,38569,7560],{"class":101},[91,38571,38572,38574,38576,38578],{"class":93,"line":299},[91,38573,10536],{"class":108},[91,38575,112],{"class":101},[91,38577,10541],{"class":169},[91,38579,7560],{"class":101},[91,38581,38582,38584,38586,38588],{"class":93,"line":319},[91,38583,10548],{"class":108},[91,38585,112],{"class":101},[91,38587,10553],{"class":169},[91,38589,7560],{"class":101},[91,38591,38592,38594,38596,38598],{"class":93,"line":334},[91,38593,10560],{"class":108},[91,38595,112],{"class":101},[91,38597,10553],{"class":169},[91,38599,7560],{"class":101},[91,38601,38602,38604,38606],{"class":93,"line":355},[91,38603,10571],{"class":108},[91,38605,112],{"class":101},[91,38607,10576],{"class":169},[91,38609,38610],{"class":93,"line":364},[91,38611,10581],{"class":101},[91,38613,38614,38616],{"class":93,"line":378},[91,38615,10586],{"class":108},[91,38617,8789],{"class":101},[91,38619,38620,38622],{"class":93,"line":387},[91,38621,10593],{"class":108},[91,38623,10596],{"class":101},[91,38625,38626,38628,38630,38632,38634,38636,38638,38640,38642,38644],{"class":93,"line":402},[91,38627,10601],{"class":169},[91,38629,64],{"class":101},[91,38631,10606],{"class":169},[91,38633,64],{"class":101},[91,38635,10611],{"class":169},[91,38637,64],{"class":101},[91,38639,10616],{"class":169},[91,38641,64],{"class":101},[91,38643,10621],{"class":169},[91,38645,10624],{"class":101},[91,38647,38648,38650,38652,38654,38656,38658,38660,38662,38664,38666],{"class":93,"line":422},[91,38649,10629],{"class":169},[91,38651,64],{"class":101},[91,38653,10634],{"class":169},[91,38655,64],{"class":101},[91,38657,10639],{"class":169},[91,38659,64],{"class":101},[91,38661,10644],{"class":169},[91,38663,64],{"class":101},[91,38665,10649],{"class":169},[91,38667,10624],{"class":101},[91,38669,38670,38672,38674,38676,38678,38680,38682,38684,38686],{"class":93,"line":438},[91,38671,10656],{"class":169},[91,38673,64],{"class":101},[91,38675,10661],{"class":169},[91,38677,64],{"class":101},[91,38679,10666],{"class":169},[91,38681,64],{"class":101},[91,38683,10671],{"class":169},[91,38685,64],{"class":101},[91,38687,10676],{"class":169},[91,38689,38690],{"class":93,"line":458},[91,38691,10681],{"class":101},[91,38693,38694],{"class":93,"line":467},[91,38695,1698],{"class":101},[91,38697,38698],{"class":93,"line":481},[91,38699,137],{"class":101},[16,38701,10692],{},[1722,38703,38704],{},[16,38705,38706,10700],{},[91,38707,10699],{},[49,38709,10704],{"id":10703},[82,38711,38712],{"className":6839,"code":10707,"language":6841,"meta":87,"style":87},[31,38713,38714,38726,38730,38734,38738,38742,38746,38750],{"__ignoreMap":87},[91,38715,38716,38718,38720,38722,38724],{"class":93,"line":94},[91,38717,10714],{"class":97},[91,38719,10717],{"class":566},[91,38721,10720],{"class":169},[91,38723,10723],{"class":566},[91,38725,8718],{"class":169},[91,38727,38728],{"class":93,"line":105},[91,38729,10730],{"class":169},[91,38731,38732],{"class":93,"line":121},[91,38733,10735],{"class":169},[91,38735,38736],{"class":93,"line":134},[91,38737,10740],{"class":169},[91,38739,38740],{"class":93,"line":228},[91,38741,10745],{"class":169},[91,38743,38744],{"class":93,"line":250},[91,38745,137],{"class":169},[91,38747,38748],{"class":93,"line":260},[91,38749,10754],{"class":169},[91,38751,38752,38754],{"class":93,"line":274},[91,38753,8747],{"class":108},[91,38755,8718],{"class":169},[16,38757,10763,38758,10767],{},[31,38759,10766],{},[49,38761,10771],{"id":10770},[16,38763,10774],{},[82,38765,38767],{"className":38766,"code":10778,"language":1099,"meta":87},[1097],[31,38768,10778],{"__ignoreMap":87},[24,38770,38771,38773],{},[27,38772,10785],{},[27,38774,10788],{},[16,38776,10791],{},[49,38778,6005],{"id":6004},[1112,38780],{"host":10796,"title":10797,"url":10798,"description":10799},[1112,38782],{"host":10802,"title":10803,"url":10804},[1112,38784],{"host":10807,"title":10808,"url":10809,"description":10810,"favicon":1320,"image":10811},[1112,38786],{"host":10814,"title":10815,"url":10816,"description":10817,"favicon":10818,"image":10819},[829,38788,10822],{},{"title":87,"searchDepth":105,"depth":105,"links":38790},[38791,38792,38793,38794,38795,38796],{"id":10154,"depth":105,"text":10155},{"id":10172,"depth":105,"text":10173},{"id":10434,"depth":105,"text":10435},{"id":10703,"depth":105,"text":10704},{"id":10770,"depth":105,"text":10771},{"id":6004,"depth":105,"text":6005},{},{"title":10146,"description":10832},{"loc":10835},[9124,10840,10841,9125],{"id":10844,"title":10845,"body":38802,"created":15033,"description":15034,"extension":843,"filename":15035,"meta":42275,"navigation":846,"path":15037,"seo":42276,"sitemap":42277,"stem":15040,"subject":2862,"tags":42278,"updated":15049,"volume":4441,"__hash__":15050},{"type":8,"value":38803,"toc":42256},[38804,38806,38808,38813,38815,38817,38821,38825,38829,38831,38833,38837,38839,38841,38849,38851,38853,38861,38863,38869,38873,38905,38911,38913,38915,39141,39148,39152,39160,39164,39168,39172,39174,39178,39180,39188,39192,39194,39196,39198,39370,39374,39846,39848,39858,39902,39906,40034,40036,40040,40042,40044,40046,40062,40066,40070,40192,40200,40284,40286,40288,40290,40342,40344,40350,40352,40354,40360,40362,40574,40582,40588,40904,40906,40910,40912,40914,40936,40940,41074,41076,41184,41188,41190,41195,41197,41201,41203,41207,41279,41281,41285,41287,41291,41293,41297,41301,41305,41307,41309,41311,41751,41763,41765,41767,41769,41774,41778,41780,41784,41786,41788,41794,41948,41954,41958,41960,42020,42026,42028,42044,42052,42198,42202,42250,42254],[16,38805,10850],{},[16,38807,10853],{},[16,38809,38810],{},[4306,38811,10860],{"href":10858,"rel":38812},[4310],[16,38814,10863],{},[49,38816,10867],{"id":10866},[16,38818,38819],{},[19,38820],{"alt":21,"src":10872},[16,38822,10875,38823,10879],{},[31,38824,10878],{},[16,38826,38827],{},[19,38828],{"alt":21,"src":10884},[16,38830,10887],{},[49,38832,10891],{"id":10890},[16,38834,38835],{},[19,38836],{"alt":21,"src":10896},[16,38838,10899],{},[16,38840,10902],{},[4530,38842,38843,38845,38847],{},[27,38844,10907],{},[27,38846,10910],{},[27,38848,10913],{},[16,38850,10916],{},[757,38852,10919],{"id":10919},[16,38854,38855,10924,38857,10928,38859,10932],{},[792,38856,10919],{},[31,38858,10927],{},[31,38860,10931],{},[757,38862,10910],{"id":10935},[16,38864,38865,10940,38867,10944],{},[792,38866,10910],{},[31,38868,10943],{},[16,38870,38871],{},[19,38872],{"alt":21,"src":10949},[82,38874,38875],{"className":10952,"code":10953,"language":10954,"meta":87,"style":87},[31,38876,38877,38881,38893,38901],{"__ignoreMap":87},[91,38878,38879],{"class":93,"line":94},[91,38880,10961],{"class":1343},[91,38882,38883,38885,38887,38889,38891],{"class":93,"line":105},[91,38884,10966],{"class":108},[91,38886,1235],{"class":101},[91,38888,10971],{"class":108},[91,38890,1366],{"class":566},[91,38892,102],{"class":101},[91,38894,38895,38897,38899],{"class":93,"line":121},[91,38896,10980],{"class":101},[91,38898,10983],{"class":169},[91,38900,7560],{"class":101},[91,38902,38903],{"class":93,"line":134},[91,38904,137],{"class":101},[16,38906,10992,38907,10996,38909,11000],{},[31,38908,10995],{},[31,38910,10999],{},[757,38912,11004],{"id":11003},[16,38914,11007],{},[82,38916,38917],{"className":11010,"code":11011,"language":11012,"meta":87,"style":87},[31,38918,38919,38927,38933,38939,38945,38951,38955,38961,38967,38975,38981,38991,39001,39009,39015,39023,39027,39037,39045,39049,39059,39067,39073,39081,39085,39095,39103,39109,39117,39125,39133],{"__ignoreMap":87},[91,38920,38921,38923,38925],{"class":93,"line":94},[91,38922,1238],{"class":159},[91,38924,112],{"class":101},[91,38926,11023],{"class":169},[91,38928,38929,38931],{"class":93,"line":105},[91,38930,11028],{"class":108},[91,38932,7265],{"class":101},[91,38934,38935,38937],{"class":93,"line":121},[91,38936,11035],{"class":159},[91,38938,7265],{"class":101},[91,38940,38941,38943],{"class":93,"line":134},[91,38942,11042],{"class":159},[91,38944,7265],{"class":101},[91,38946,38947,38949],{"class":93,"line":228},[91,38948,11049],{"class":101},[91,38950,11052],{"class":169},[91,38952,38953],{"class":93,"line":250},[91,38954,1450],{"emptyLinePlaceholder":846},[91,38956,38957,38959],{"class":93,"line":260},[91,38958,7347],{"class":159},[91,38960,7265],{"class":101},[91,38962,38963,38965],{"class":93,"line":274},[91,38964,11067],{"class":159},[91,38966,7265],{"class":101},[91,38968,38969,38971,38973],{"class":93,"line":284},[91,38970,7374],{"class":159},[91,38972,112],{"class":101},[91,38974,7379],{"class":169},[91,38976,38977,38979],{"class":93,"line":299},[91,38978,11082],{"class":159},[91,38980,7265],{"class":101},[91,38982,38983,38985,38987,38989],{"class":93,"line":319},[91,38984,11049],{"class":101},[91,38986,11091],{"class":159},[91,38988,112],{"class":101},[91,38990,11096],{"class":169},[91,38992,38993,38995,38997,38999],{"class":93,"line":334},[91,38994,11049],{"class":101},[91,38996,1238],{"class":159},[91,38998,112],{"class":101},[91,39000,11107],{"class":169},[91,39002,39003,39005,39007],{"class":93,"line":355},[91,39004,11112],{"class":159},[91,39006,112],{"class":101},[91,39008,11117],{"class":169},[91,39010,39011,39013],{"class":93,"line":364},[91,39012,11122],{"class":159},[91,39014,7265],{"class":101},[91,39016,39017,39019,39021],{"class":93,"line":378},[91,39018,11129],{"class":159},[91,39020,112],{"class":101},[91,39022,11134],{"class":169},[91,39024,39025],{"class":93,"line":387},[91,39026,11139],{"class":101},[91,39028,39029,39031,39033,39035],{"class":93,"line":402},[91,39030,11049],{"class":101},[91,39032,1238],{"class":159},[91,39034,112],{"class":101},[91,39036,11150],{"class":169},[91,39038,39039,39041,39043],{"class":93,"line":422},[91,39040,7320],{"class":159},[91,39042,112],{"class":101},[91,39044,11159],{"class":169},[91,39046,39047],{"class":93,"line":438},[91,39048,1450],{"emptyLinePlaceholder":846},[91,39050,39051,39053,39055,39057],{"class":93,"line":458},[91,39052,11049],{"class":101},[91,39054,1238],{"class":159},[91,39056,112],{"class":101},[91,39058,11174],{"class":169},[91,39060,39061,39063,39065],{"class":93,"line":467},[91,39062,7320],{"class":159},[91,39064,112],{"class":101},[91,39066,11183],{"class":169},[91,39068,39069,39071],{"class":93,"line":481},[91,39070,7262],{"class":159},[91,39072,7265],{"class":101},[91,39074,39075,39077,39079],{"class":93,"line":490},[91,39076,11194],{"class":159},[91,39078,112],{"class":101},[91,39080,11199],{"class":169},[91,39082,39083],{"class":93,"line":3310},[91,39084,11139],{"class":101},[91,39086,39087,39089,39091,39093],{"class":93,"line":3315},[91,39088,11049],{"class":101},[91,39090,1238],{"class":159},[91,39092,112],{"class":101},[91,39094,11214],{"class":169},[91,39096,39097,39099,39101],{"class":93,"line":3321},[91,39098,11112],{"class":159},[91,39100,112],{"class":101},[91,39102,11223],{"class":169},[91,39104,39105,39107],{"class":93,"line":3327},[91,39106,7262],{"class":159},[91,39108,7265],{"class":101},[91,39110,39111,39113,39115],{"class":93,"line":3333},[91,39112,11234],{"class":159},[91,39114,112],{"class":101},[91,39116,11239],{"class":169},[91,39118,39119,39121,39123],{"class":93,"line":3338},[91,39120,11244],{"class":159},[91,39122,112],{"class":101},[91,39124,11249],{"class":169},[91,39126,39127,39129,39131],{"class":93,"line":3343},[91,39128,11254],{"class":159},[91,39130,112],{"class":101},[91,39132,11259],{"class":169},[91,39134,39135,39137,39139],{"class":93,"line":7882},[91,39136,11264],{"class":159},[91,39138,112],{"class":101},[91,39140,11269],{"class":108},[16,39142,39143,11274,39145,11280],{},[31,39144,11028],{},[4306,39146,11279],{"href":11277,"rel":39147},[4310],[16,39149,39150,11285],{},[31,39151,7347],{},[16,39153,11288,39154,11292,39156,11296,39158,11299],{},[31,39155,11291],{},[31,39157,11295],{},[31,39159,10919],{},[16,39161,39162],{},[19,39163],{"alt":21,"src":11304},[16,39165,11307,39166,11311],{},[31,39167,11310],{},[16,39169,39170],{},[19,39171],{"alt":21,"src":11316},[16,39173,11319],{},[16,39175,39176],{},[19,39177],{"alt":21,"src":11324},[16,39179,11327],{},[4530,39181,39182,39186],{},[27,39183,11332,39184,11336],{},[31,39185,11335],{},[27,39187,11339],{},[16,39189,39190],{},[19,39191],{"alt":21,"src":11344},[16,39193,11347],{},[49,39195,11351],{"id":11350},[16,39197,11354],{},[82,39199,39200],{"className":10952,"code":11357,"language":10954,"meta":87,"style":87},[31,39201,39202,39206,39210,39214,39224,39234,39244,39254,39264,39274,39284,39288,39292,39302,39312,39322,39332,39342,39352,39362,39366],{"__ignoreMap":87},[91,39203,39204],{"class":93,"line":94},[91,39205,11364],{"class":1343},[91,39207,39208],{"class":93,"line":105},[91,39209,11369],{"class":101},[91,39211,39212],{"class":93,"line":121},[91,39213,11374],{"class":101},[91,39215,39216,39218,39220,39222],{"class":93,"line":134},[91,39217,11379],{"class":169},[91,39219,112],{"class":101},[91,39221,11384],{"class":169},[91,39223,7560],{"class":101},[91,39225,39226,39228,39230,39232],{"class":93,"line":228},[91,39227,11391],{"class":169},[91,39229,112],{"class":101},[91,39231,11396],{"class":169},[91,39233,7560],{"class":101},[91,39235,39236,39238,39240,39242],{"class":93,"line":250},[91,39237,11403],{"class":169},[91,39239,112],{"class":101},[91,39241,11408],{"class":169},[91,39243,7560],{"class":101},[91,39245,39246,39248,39250,39252],{"class":93,"line":260},[91,39247,11415],{"class":169},[91,39249,112],{"class":101},[91,39251,11420],{"class":169},[91,39253,7560],{"class":101},[91,39255,39256,39258,39260,39262],{"class":93,"line":274},[91,39257,11427],{"class":169},[91,39259,112],{"class":101},[91,39261,11432],{"class":169},[91,39263,7560],{"class":101},[91,39265,39266,39268,39270,39272],{"class":93,"line":284},[91,39267,11439],{"class":169},[91,39269,112],{"class":101},[91,39271,11444],{"class":169},[91,39273,7560],{"class":101},[91,39275,39276,39278,39280,39282],{"class":93,"line":299},[91,39277,11451],{"class":169},[91,39279,11454],{"class":101},[91,39281,11457],{"class":169},[91,39283,11460],{"class":101},[91,39285,39286],{"class":93,"line":319},[91,39287,10581],{"class":101},[91,39289,39290],{"class":93,"line":334},[91,39291,11374],{"class":101},[91,39293,39294,39296,39298,39300],{"class":93,"line":355},[91,39295,11379],{"class":169},[91,39297,112],{"class":101},[91,39299,11477],{"class":169},[91,39301,7560],{"class":101},[91,39303,39304,39306,39308,39310],{"class":93,"line":364},[91,39305,11391],{"class":169},[91,39307,112],{"class":101},[91,39309,11488],{"class":169},[91,39311,7560],{"class":101},[91,39313,39314,39316,39318,39320],{"class":93,"line":378},[91,39315,11403],{"class":169},[91,39317,112],{"class":101},[91,39319,11499],{"class":169},[91,39321,7560],{"class":101},[91,39323,39324,39326,39328,39330],{"class":93,"line":387},[91,39325,11415],{"class":169},[91,39327,112],{"class":101},[91,39329,11420],{"class":169},[91,39331,7560],{"class":101},[91,39333,39334,39336,39338,39340],{"class":93,"line":402},[91,39335,11427],{"class":169},[91,39337,112],{"class":101},[91,39339,11432],{"class":169},[91,39341,7560],{"class":101},[91,39343,39344,39346,39348,39350],{"class":93,"line":422},[91,39345,11439],{"class":169},[91,39347,112],{"class":101},[91,39349,11444],{"class":169},[91,39351,7560],{"class":101},[91,39353,39354,39356,39358,39360],{"class":93,"line":438},[91,39355,11451],{"class":169},[91,39357,11454],{"class":101},[91,39359,11457],{"class":169},[91,39361,11460],{"class":101},[91,39363,39364],{"class":93,"line":458},[91,39365,1698],{"class":101},[91,39367,39368],{"class":93,"line":467},[91,39369,11460],{"class":101},[16,39371,11552,39372,11556],{},[31,39373,11555],{},[82,39375,39376],{"className":11559,"code":11560,"language":11561,"meta":87,"style":87},[31,39377,39378,39390,39402,39406,39416,39426,39436,39446,39456,39466,39476,39480,39484,39496,39508,39524,39536,39540,39558,39596,39604,39608,39614,39632,39644,39648,39652,39656,39660,39664,39680,39690,39694,39698,39714,39724,39728,39732,39736,39744,39766,39780,39784,39788,39792,39796,39812,39826,39830,39834,39838],{"__ignoreMap":87},[91,39379,39380,39382,39384,39386,39388],{"class":93,"line":94},[91,39381,2499],{"class":566},[91,39383,11570],{"class":101},[91,39385,2505],{"class":566},[91,39387,11575],{"class":169},[91,39389,118],{"class":101},[91,39391,39392,39394,39396,39398,39400],{"class":93,"line":105},[91,39393,2499],{"class":566},[91,39395,11584],{"class":101},[91,39397,2505],{"class":566},[91,39399,11589],{"class":169},[91,39401,118],{"class":101},[91,39403,39404],{"class":93,"line":121},[91,39405,1450],{"emptyLinePlaceholder":846},[91,39407,39408,39410,39412,39414],{"class":93,"line":134},[91,39409,2574],{"class":566},[91,39411,11602],{"class":566},[91,39413,11605],{"class":97},[91,39415,102],{"class":101},[91,39417,39418,39420,39422,39424],{"class":93,"line":228},[91,39419,11612],{"class":1172},[91,39421,1208],{"class":566},[91,39423,1357],{"class":108},[91,39425,118],{"class":101},[91,39427,39428,39430,39432,39434],{"class":93,"line":250},[91,39429,11623],{"class":1172},[91,39431,1208],{"class":566},[91,39433,1357],{"class":108},[91,39435,118],{"class":101},[91,39437,39438,39440,39442,39444],{"class":93,"line":260},[91,39439,11634],{"class":1172},[91,39441,1208],{"class":566},[91,39443,1357],{"class":108},[91,39445,118],{"class":101},[91,39447,39448,39450,39452,39454],{"class":93,"line":274},[91,39449,11645],{"class":1172},[91,39451,1208],{"class":566},[91,39453,1357],{"class":108},[91,39455,118],{"class":101},[91,39457,39458,39460,39462,39464],{"class":93,"line":284},[91,39459,11656],{"class":1172},[91,39461,1208],{"class":566},[91,39463,1357],{"class":108},[91,39465,11663],{"class":101},[91,39467,39468,39470,39472,39474],{"class":93,"line":299},[91,39469,11668],{"class":1172},[91,39471,1208],{"class":566},[91,39473,1357],{"class":108},[91,39475,118],{"class":101},[91,39477,39478],{"class":93,"line":319},[91,39479,137],{"class":101},[91,39481,39482],{"class":93,"line":334},[91,39483,1450],{"emptyLinePlaceholder":846},[91,39485,39486,39488,39490,39492,39494],{"class":93,"line":355},[91,39487,8412],{"class":101},[91,39489,11689],{"class":97},[91,39491,11692],{"class":101},[91,39493,7557],{"class":108},[91,39495,11697],{"class":101},[91,39497,39498,39500,39502,39504,39506],{"class":93,"line":364},[91,39499,11702],{"class":566},[91,39501,11705],{"class":97},[91,39503,11708],{"class":566},[91,39505,11711],{"class":97},[91,39507,102],{"class":101},[91,39509,39510,39512,39514,39516,39518,39520,39522],{"class":93,"line":378},[91,39511,11718],{"class":566},[91,39513,11721],{"class":1172},[91,39515,1208],{"class":566},[91,39517,11726],{"class":97},[91,39519,11729],{"class":101},[91,39521,166],{"class":566},[91,39523,11734],{"class":101},[91,39525,39526,39528,39530,39532,39534],{"class":93,"line":387},[91,39527,11718],{"class":566},[91,39529,11741],{"class":1172},[91,39531,1366],{"class":566},[91,39533,8014],{"class":169},[91,39535,118],{"class":101},[91,39537,39538],{"class":93,"line":402},[91,39539,1450],{"emptyLinePlaceholder":846},[91,39541,39542,39544,39546,39548,39550,39552,39554,39556],{"class":93,"line":422},[91,39543,11756],{"class":566},[91,39545,11759],{"class":97},[91,39547,11762],{"class":101},[91,39549,1208],{"class":566},[91,39551,11605],{"class":97},[91,39553,1360],{"class":566},[91,39555,11771],{"class":108},[91,39557,102],{"class":101},[91,39559,39560,39562,39564,39566,39568,39570,39572,39574,39576,39578,39580,39582,39584,39586,39588,39590,39592,39594],{"class":93,"line":438},[91,39561,8218],{"class":566},[91,39563,795],{"class":101},[91,39565,11782],{"class":108},[91,39567,11785],{"class":101},[91,39569,11788],{"class":566},[91,39571,1363],{"class":108},[91,39573,7954],{"class":566},[91,39575,11795],{"class":108},[91,39577,11785],{"class":101},[91,39579,11788],{"class":566},[91,39581,8014],{"class":169},[91,39583,7954],{"class":566},[91,39585,11795],{"class":108},[91,39587,11808],{"class":101},[91,39589,11811],{"class":108},[91,39591,11814],{"class":566},[91,39593,11817],{"class":108},[91,39595,11820],{"class":101},[91,39597,39598,39600,39602],{"class":93,"line":458},[91,39599,11825],{"class":566},[91,39601,11771],{"class":108},[91,39603,118],{"class":101},[91,39605,39606],{"class":93,"line":467},[91,39607,1693],{"class":101},[91,39609,39610,39612],{"class":93,"line":481},[91,39611,11838],{"class":566},[91,39613,102],{"class":101},[91,39615,39616,39618,39620,39622,39624,39626,39628,39630],{"class":93,"line":490},[91,39617,11825],{"class":566},[91,39619,11795],{"class":108},[91,39621,11808],{"class":101},[91,39623,11851],{"class":97},[91,39625,795],{"class":101},[91,39627,11856],{"class":1172},[91,39629,11859],{"class":566},[91,39631,102],{"class":101},[91,39633,39634,39636,39638,39640,39642],{"class":93,"line":3310},[91,39635,11866],{"class":566},[91,39637,11869],{"class":101},[91,39639,9382],{"class":566},[91,39641,11795],{"class":108},[91,39643,11876],{"class":101},[91,39645,39646],{"class":93,"line":3315},[91,39647,11881],{"class":101},[91,39649,39650],{"class":93,"line":3321},[91,39651,1693],{"class":101},[91,39653,39654],{"class":93,"line":3327},[91,39655,1698],{"class":101},[91,39657,39658],{"class":93,"line":3333},[91,39659,1629],{"class":101},[91,39661,39662],{"class":93,"line":3338},[91,39663,11898],{"class":101},[91,39665,39666,39668,39670,39672,39674,39676,39678],{"class":93,"line":3343},[91,39667,11718],{"class":566},[91,39669,11905],{"class":97},[91,39671,795],{"class":101},[91,39673,11910],{"class":1172},[91,39675,1208],{"class":566},[91,39677,11605],{"class":97},[91,39679,11917],{"class":101},[91,39681,39682,39684,39686,39688],{"class":93,"line":7882},[91,39683,11922],{"class":108},[91,39685,11925],{"class":101},[91,39687,166],{"class":566},[91,39689,11930],{"class":101},[91,39691,39692],{"class":93,"line":7887},[91,39693,1698],{"class":101},[91,39695,39696],{"class":93,"line":7892},[91,39697,11898],{"class":101},[91,39699,39700,39702,39704,39706,39708,39710,39712],{"class":93,"line":7906},[91,39701,11718],{"class":566},[91,39703,11945],{"class":97},[91,39705,795],{"class":101},[91,39707,11950],{"class":1172},[91,39709,1208],{"class":566},[91,39711,1357],{"class":108},[91,39713,3866],{"class":101},[91,39715,39716,39718,39720,39722],{"class":93,"line":7922},[91,39717,11922],{"class":108},[91,39719,11785],{"class":101},[91,39721,166],{"class":566},[91,39723,11967],{"class":101},[91,39725,39726],{"class":93,"line":7927},[91,39727,1698],{"class":101},[91,39729,39730],{"class":93,"line":7967},[91,39731,1450],{"emptyLinePlaceholder":846},[91,39733,39734],{"class":93,"line":7983},[91,39735,11980],{"class":101},[91,39737,39738,39740,39742],{"class":93,"line":7988},[91,39739,11718],{"class":566},[91,39741,11987],{"class":97},[91,39743,2007],{"class":101},[91,39745,39746,39748,39750,39752,39754,39756,39758,39760,39762,39764],{"class":93,"line":7993},[91,39747,11994],{"class":101},[91,39749,5938],{"class":97},[91,39751,795],{"class":101},[91,39753,12001],{"class":169},[91,39755,8017],{"class":101},[91,39757,1200],{"class":97},[91,39759,795],{"class":101},[91,39761,12010],{"class":1172},[91,39763,11859],{"class":566},[91,39765,102],{"class":101},[91,39767,39768,39770,39772,39774,39776,39778],{"class":93,"line":8000},[91,39769,12019],{"class":108},[91,39771,12022],{"class":101},[91,39773,12025],{"class":97},[91,39775,795],{"class":101},[91,39777,12030],{"class":169},[91,39779,12033],{"class":101},[91,39781,39782],{"class":93,"line":8040},[91,39783,7745],{"class":101},[91,39785,39786],{"class":93,"line":8046},[91,39787,1698],{"class":101},[91,39789,39790],{"class":93,"line":8080},[91,39791,1450],{"emptyLinePlaceholder":846},[91,39793,39794],{"class":93,"line":8086},[91,39795,11980],{"class":101},[91,39797,39798,39800,39802,39804,39806,39808,39810],{"class":93,"line":12052},[91,39799,11718],{"class":566},[91,39801,12057],{"class":97},[91,39803,795],{"class":101},[91,39805,5177],{"class":1172},[91,39807,1208],{"class":566},[91,39809,1357],{"class":108},[91,39811,3866],{"class":101},[91,39813,39814,39816,39818,39820,39822,39824],{"class":93,"line":12070},[91,39815,11922],{"class":108},[91,39817,12022],{"class":101},[91,39819,12025],{"class":97},[91,39821,795],{"class":101},[91,39823,12081],{"class":169},[91,39825,12084],{"class":101},[91,39827,39828],{"class":93,"line":12087},[91,39829,1698],{"class":101},[91,39831,39832],{"class":93,"line":12092},[91,39833,137],{"class":101},[91,39835,39836],{"class":93,"line":12097},[91,39837,1450],{"emptyLinePlaceholder":846},[91,39839,39840,39842,39844],{"class":93,"line":12102},[91,39841,2574],{"class":566},[91,39843,12107],{"class":566},[91,39845,12110],{"class":101},[16,39847,12113],{},[4530,39849,39850,39854],{},[27,39851,39852,12121],{},[792,39853,12120],{},[27,39855,39856,12127],{},[792,39857,12126],{},[82,39859,39860],{"className":11559,"code":12130,"language":11561,"meta":87,"style":87},[31,39861,39862,39866,39878,39890],{"__ignoreMap":87},[91,39863,39864],{"class":93,"line":94},[91,39865,12137],{"class":1343},[91,39867,39868,39870,39872,39874,39876],{"class":93,"line":105},[91,39869,2499],{"class":566},[91,39871,12144],{"class":101},[91,39873,2505],{"class":566},[91,39875,12149],{"class":169},[91,39877,118],{"class":101},[91,39879,39880,39882,39884,39886,39888],{"class":93,"line":121},[91,39881,1968],{"class":566},[91,39883,12158],{"class":108},[91,39885,1366],{"class":566},[91,39887,12163],{"class":97},[91,39889,2030],{"class":101},[91,39891,39892,39894,39896,39898,39900],{"class":93,"line":134},[91,39893,12170],{"class":101},[91,39895,12173],{"class":97},[91,39897,795],{"class":101},[91,39899,12178],{"class":169},[91,39901,1594],{"class":101},[16,39903,12183,39904,12187],{},[31,39905,12186],{},[82,39907,39908],{"className":11559,"code":12190,"language":11561,"meta":87,"style":87},[31,39909,39910,39914,39926,39938,39950,39954,39966,39978,39988,39992,40004,40020,40030],{"__ignoreMap":87},[91,39911,39912],{"class":93,"line":94},[91,39913,12197],{"class":1343},[91,39915,39916,39918,39920,39922,39924],{"class":93,"line":105},[91,39917,2499],{"class":566},[91,39919,12204],{"class":101},[91,39921,2505],{"class":566},[91,39923,2508],{"class":169},[91,39925,118],{"class":101},[91,39927,39928,39930,39932,39934,39936],{"class":93,"line":121},[91,39929,2499],{"class":566},[91,39931,12217],{"class":101},[91,39933,2505],{"class":566},[91,39935,12222],{"class":169},[91,39937,118],{"class":101},[91,39939,39940,39942,39944,39946,39948],{"class":93,"line":134},[91,39941,2499],{"class":566},[91,39943,12144],{"class":101},[91,39945,2505],{"class":566},[91,39947,12149],{"class":169},[91,39949,118],{"class":101},[91,39951,39952],{"class":93,"line":228},[91,39953,1450],{"emptyLinePlaceholder":846},[91,39955,39956,39958,39960,39962,39964],{"class":93,"line":250},[91,39957,1968],{"class":566},[91,39959,12158],{"class":108},[91,39961,1366],{"class":566},[91,39963,12163],{"class":97},[91,39965,2030],{"class":101},[91,39967,39968,39970,39972,39974,39976],{"class":93,"line":260},[91,39969,1968],{"class":566},[91,39971,12259],{"class":108},[91,39973,1366],{"class":566},[91,39975,12264],{"class":97},[91,39977,2030],{"class":101},[91,39979,39980,39982,39984,39986],{"class":93,"line":274},[91,39981,1968],{"class":566},[91,39983,12273],{"class":108},[91,39985,1366],{"class":566},[91,39987,12278],{"class":101},[91,39989,39990],{"class":93,"line":284},[91,39991,1450],{"emptyLinePlaceholder":846},[91,39993,39994,39996,39998,40000,40002],{"class":93,"line":299},[91,39995,12170],{"class":101},[91,39997,12173],{"class":97},[91,39999,795],{"class":101},[91,40001,12293],{"class":169},[91,40003,12296],{"class":101},[91,40005,40006,40008,40010,40012,40014,40016,40018],{"class":93,"line":319},[91,40007,1968],{"class":566},[91,40009,12303],{"class":108},[91,40011,1366],{"class":566},[91,40013,12308],{"class":97},[91,40015,2088],{"class":101},[91,40017,1179],{"class":566},[91,40019,102],{"class":101},[91,40021,40022,40024,40026,40028],{"class":93,"line":334},[91,40023,2695],{"class":566},[91,40025,12321],{"class":101},[91,40027,12324],{"class":169},[91,40029,12327],{"class":101},[91,40031,40032],{"class":93,"line":355},[91,40033,1303],{"class":101},[16,40035,12334],{},[16,40037,40038],{},[19,40039],{"alt":21,"src":12339},[16,40041,12342],{},[49,40043,12346],{"id":12345},[16,40045,12349],{},[82,40047,40048],{"className":11559,"code":12352,"language":11561,"meta":87,"style":87},[31,40049,40050,40054],{"__ignoreMap":87},[91,40051,40052],{"class":93,"line":94},[91,40053,12359],{"class":101},[91,40055,40056,40058,40060],{"class":93,"line":105},[91,40057,12364],{"class":101},[91,40059,8409],{"class":566},[91,40061,12369],{"class":101},[16,40063,40064,12375],{},[792,40065,12374],{},[16,40067,40068,12381],{},[792,40069,12380],{},[82,40071,40072],{"className":11559,"code":12384,"language":11561,"meta":87,"style":87},[31,40073,40074,40078,40082,40090,40118,40128,40146,40162,40176,40184,40188],{"__ignoreMap":87},[91,40075,40076],{"class":93,"line":94},[91,40077,12391],{"class":1343},[91,40079,40080],{"class":93,"line":105},[91,40081,12396],{"class":101},[91,40083,40084,40086,40088],{"class":93,"line":121},[91,40085,12401],{"class":101},[91,40087,12404],{"class":97},[91,40089,12407],{"class":101},[91,40091,40092,40094,40096,40098,40100,40102,40104,40106,40108,40110,40112,40114,40116],{"class":93,"line":134},[91,40093,2695],{"class":566},[91,40095,12414],{"class":101},[91,40097,5938],{"class":97},[91,40099,795],{"class":101},[91,40101,12421],{"class":169},[91,40103,12424],{"class":101},[91,40105,12427],{"class":169},[91,40107,8017],{"class":101},[91,40109,1200],{"class":97},[91,40111,795],{"class":101},[91,40113,12010],{"class":1172},[91,40115,11859],{"class":566},[91,40117,102],{"class":101},[91,40119,40120,40122,40124,40126],{"class":93,"line":228},[91,40121,1382],{"class":566},[91,40123,12446],{"class":108},[91,40125,1366],{"class":566},[91,40127,12451],{"class":101},[91,40129,40130,40132,40134,40136,40138,40140,40142,40144],{"class":93,"line":250},[91,40131,12456],{"class":566},[91,40133,12459],{"class":108},[91,40135,1366],{"class":566},[91,40137,2676],{"class":566},[91,40139,12466],{"class":101},[91,40141,12469],{"class":97},[91,40143,11762],{"class":101},[91,40145,12474],{"class":566},[91,40147,40148,40150,40152,40154,40156,40158,40160],{"class":93,"line":260},[91,40149,12479],{"class":101},[91,40151,12482],{"class":97},[91,40153,795],{"class":101},[91,40155,12487],{"class":169},[91,40157,64],{"class":101},[91,40159,7557],{"class":108},[91,40161,1594],{"class":101},[91,40163,40164,40166,40168,40170,40172,40174],{"class":93,"line":274},[91,40165,12456],{"class":566},[91,40167,12500],{"class":108},[91,40169,1366],{"class":566},[91,40171,12505],{"class":101},[91,40173,12508],{"class":97},[91,40175,12511],{"class":101},[91,40177,40178,40180,40182],{"class":93,"line":284},[91,40179,7717],{"class":566},[91,40181,12518],{"class":101},[91,40183,12474],{"class":566},[91,40185,40186],{"class":93,"line":299},[91,40187,7575],{"class":101},[91,40189,40190],{"class":93,"line":319},[91,40191,137],{"class":101},[16,40193,12531,40194,12534,40196,12540],{},[31,40195,12508],{},[792,40197,40198],{},[31,40199,12539],{},[82,40201,40202],{"className":11559,"code":12543,"language":11561,"meta":87,"style":87},[31,40203,40204,40208,40226,40230,40234,40244,40268,40276,40280],{"__ignoreMap":87},[91,40205,40206],{"class":93,"line":94},[91,40207,12197],{"class":1343},[91,40209,40210,40212,40214,40216,40218,40220,40222,40224],{"class":93,"line":105},[91,40211,156],{"class":101},[91,40213,160],{"class":159},[91,40215,12558],{"class":97},[91,40217,166],{"class":566},[91,40219,12563],{"class":169},[91,40221,12566],{"class":101},[91,40223,160],{"class":159},[91,40225,173],{"class":101},[91,40227,40228],{"class":93,"line":121},[91,40229,1450],{"emptyLinePlaceholder":846},[91,40231,40232],{"class":93,"line":134},[91,40233,12579],{"class":1343},[91,40235,40236,40238,40240,40242],{"class":93,"line":228},[91,40237,2085],{"class":97},[91,40239,2088],{"class":101},[91,40241,1179],{"class":566},[91,40243,102],{"class":101},[91,40245,40246,40248,40250,40252,40254,40256,40258,40260,40262,40264,40266],{"class":93,"line":250},[91,40247,12594],{"class":101},[91,40249,12173],{"class":97},[91,40251,795],{"class":101},[91,40253,12601],{"class":169},[91,40255,12604],{"class":101},[91,40257,1200],{"class":97},[91,40259,1169],{"class":101},[91,40261,12010],{"class":1172},[91,40263,1176],{"class":101},[91,40265,1179],{"class":566},[91,40267,102],{"class":101},[91,40269,40270,40272,40274],{"class":93,"line":260},[91,40271,12621],{"class":101},[91,40273,166],{"class":566},[91,40275,12626],{"class":101},[91,40277,40278],{"class":93,"line":274},[91,40279,12631],{"class":101},[91,40281,40282],{"class":93,"line":284},[91,40283,9444],{"class":101},[16,40285,12638],{},[49,40287,12642],{"id":12641},[16,40289,12645],{},[82,40291,40292],{"className":11559,"code":12648,"language":11561,"meta":87,"style":87},[31,40293,40294,40316],{"__ignoreMap":87},[91,40295,40296,40298,40300,40302,40304,40306,40308,40310,40312,40314],{"class":93,"line":94},[91,40297,12655],{"class":101},[91,40299,8409],{"class":566},[91,40301,12660],{"class":108},[91,40303,12663],{"class":101},[91,40305,8409],{"class":566},[91,40307,12668],{"class":101},[91,40309,8409],{"class":566},[91,40311,12673],{"class":101},[91,40313,12676],{"class":566},[91,40315,12679],{"class":101},[91,40317,40318,40320,40322,40324,40326,40328,40330,40332,40334,40336,40338,40340],{"class":93,"line":105},[91,40319,12655],{"class":101},[91,40321,8409],{"class":566},[91,40323,12660],{"class":108},[91,40325,12663],{"class":101},[91,40327,8409],{"class":566},[91,40329,12668],{"class":101},[91,40331,8409],{"class":566},[91,40333,12698],{"class":101},[91,40335,8409],{"class":566},[91,40337,12673],{"class":101},[91,40339,12676],{"class":566},[91,40341,12707],{"class":101},[16,40343,12710],{},[1722,40345,40346],{},[16,40347,40348,12718],{},[91,40349,12717],{},[16,40351,12721],{},[16,40353,12724],{},[16,40355,12727,40356,12731,40358,12735],{},[31,40357,12730],{},[31,40359,12734],{},[16,40361,12738],{},[82,40363,40364],{"className":11559,"code":12741,"language":11561,"meta":87,"style":87},[31,40365,40366,40370,40374,40378,40382,40402,40424,40448,40454,40490,40498,40534,40538,40542,40546,40550,40554,40558],{"__ignoreMap":87},[91,40367,40368],{"class":93,"line":94},[91,40369,12748],{"class":1343},[91,40371,40372],{"class":93,"line":105},[91,40373,1450],{"emptyLinePlaceholder":846},[91,40375,40376],{"class":93,"line":121},[91,40377,12757],{"class":1343},[91,40379,40380],{"class":93,"line":134},[91,40381,12762],{"class":1343},[91,40383,40384,40386,40388,40390,40392,40394,40396,40398,40400],{"class":93,"line":228},[91,40385,1968],{"class":566},[91,40387,12769],{"class":97},[91,40389,1366],{"class":566},[91,40391,2001],{"class":566},[91,40393,2662],{"class":101},[91,40395,12778],{"class":1172},[91,40397,64],{"class":101},[91,40399,12783],{"class":1172},[91,40401,3866],{"class":101},[91,40403,40404,40406,40408,40410,40412,40414,40416,40418,40420,40422],{"class":93,"line":250},[91,40405,2695],{"class":566},[91,40407,2676],{"class":566},[91,40409,1976],{"class":108},[91,40411,1169],{"class":101},[91,40413,1930],{"class":1172},[91,40415,64],{"class":101},[91,40417,2065],{"class":1172},[91,40419,1176],{"class":101},[91,40421,1179],{"class":566},[91,40423,102],{"class":101},[91,40425,40426,40428,40430,40432,40434,40436,40438,40440,40442,40444,40446],{"class":93,"line":260},[91,40427,2454],{"class":101},[91,40429,1225],{"class":97},[91,40431,795],{"class":101},[91,40433,12818],{"class":169},[91,40435,12821],{"class":108},[91,40437,12824],{"class":169},[91,40439,12827],{"class":101},[91,40441,12818],{"class":169},[91,40443,12821],{"class":108},[91,40445,12818],{"class":169},[91,40447,1594],{"class":101},[91,40449,40450,40452],{"class":93,"line":274},[91,40451,12840],{"class":566},[91,40453,102],{"class":101},[91,40455,40456,40458,40460,40462,40464,40466,40468,40470,40472,40474,40476,40478,40480,40482,40484,40486,40488],{"class":93,"line":284},[91,40457,12847],{"class":101},[91,40459,12734],{"class":97},[91,40461,12852],{"class":101},[91,40463,12855],{"class":1172},[91,40465,64],{"class":101},[91,40467,12860],{"class":1172},[91,40469,1176],{"class":101},[91,40471,1179],{"class":566},[91,40473,12867],{"class":101},[91,40475,9382],{"class":566},[91,40477,1363],{"class":108},[91,40479,12874],{"class":566},[91,40481,12877],{"class":97},[91,40483,12880],{"class":101},[91,40485,1208],{"class":566},[91,40487,12885],{"class":97},[91,40489,12888],{"class":101},[91,40491,40492,40494,40496],{"class":93,"line":299},[91,40493,12893],{"class":101},[91,40495,1256],{"class":566},[91,40497,12898],{"class":101},[91,40499,40500,40502,40504,40506,40508,40510,40512,40514,40516,40518,40520,40522,40524,40526,40528,40530,40532],{"class":93,"line":319},[91,40501,12847],{"class":101},[91,40503,12905],{"class":97},[91,40505,12852],{"class":101},[91,40507,12855],{"class":1172},[91,40509,64],{"class":101},[91,40511,12860],{"class":1172},[91,40513,1176],{"class":101},[91,40515,1179],{"class":566},[91,40517,12867],{"class":101},[91,40519,9382],{"class":566},[91,40521,1363],{"class":108},[91,40523,12874],{"class":566},[91,40525,12877],{"class":97},[91,40527,12880],{"class":101},[91,40529,1208],{"class":566},[91,40531,12885],{"class":97},[91,40533,12888],{"class":101},[91,40535,40536],{"class":93,"line":334},[91,40537,1693],{"class":101},[91,40539,40540],{"class":93,"line":355},[91,40541,12631],{"class":101},[91,40543,40544],{"class":93,"line":364},[91,40545,137],{"class":101},[91,40547,40548],{"class":93,"line":378},[91,40549,1450],{"emptyLinePlaceholder":846},[91,40551,40552],{"class":93,"line":387},[91,40553,12956],{"class":1343},[91,40555,40556],{"class":93,"line":402},[91,40557,12961],{"class":1343},[91,40559,40560,40562,40564,40566,40568,40570,40572],{"class":93,"line":422},[91,40561,12966],{"class":566},[91,40563,12769],{"class":97},[91,40565,12971],{"class":101},[91,40567,12974],{"class":97},[91,40569,12977],{"class":101},[91,40571,7557],{"class":108},[91,40573,9444],{"class":101},[16,40575,12984,40576,12987,40578,12990,40580,12994],{},[31,40577,12905],{},[31,40579,12905],{},[31,40581,12993],{},[16,40583,12997,40584,13000,40586,13004],{},[31,40585,11291],{},[31,40587,13003],{},[82,40589,40590],{"className":11559,"code":13007,"language":11561,"meta":87,"style":87},[31,40591,40592,40608,40624,40628,40644,40674,40694,40700,40716,40724,40730,40734,40738,40742,40754,40762,40774,40786,40798,40806,40810,40814,40818,40822,40838,40850,40864,40878,40892,40896,40900],{"__ignoreMap":87},[91,40593,40594,40596,40598,40600,40602,40604,40606],{"class":93,"line":94},[91,40595,1968],{"class":566},[91,40597,13016],{"class":108},[91,40599,1366],{"class":566},[91,40601,13021],{"class":97},[91,40603,795],{"class":101},[91,40605,13026],{"class":169},[91,40607,3487],{"class":101},[91,40609,40610,40612,40614,40616,40618,40620,40622],{"class":93,"line":105},[91,40611,1968],{"class":566},[91,40613,13035],{"class":108},[91,40615,1366],{"class":566},[91,40617,13021],{"class":97},[91,40619,795],{"class":101},[91,40621,13044],{"class":169},[91,40623,3487],{"class":101},[91,40625,40626],{"class":93,"line":121},[91,40627,1450],{"emptyLinePlaceholder":846},[91,40629,40630,40632,40634,40636,40638,40640,40642],{"class":93,"line":134},[91,40631,1968],{"class":566},[91,40633,13057],{"class":108},[91,40635,1366],{"class":566},[91,40637,13021],{"class":97},[91,40639,795],{"class":101},[91,40641,13066],{"class":169},[91,40643,3487],{"class":101},[91,40645,40646,40648,40650,40652,40654,40656,40658,40660,40662,40664,40666,40668,40670,40672],{"class":93,"line":228},[91,40647,1968],{"class":566},[91,40649,13075],{"class":108},[91,40651,1366],{"class":566},[91,40653,13080],{"class":101},[91,40655,13083],{"class":97},[91,40657,795],{"class":101},[91,40659,11856],{"class":1172},[91,40661,11859],{"class":566},[91,40663,13092],{"class":169},[91,40665,11856],{"class":101},[91,40667,1235],{"class":169},[91,40669,5177],{"class":101},[91,40671,1241],{"class":169},[91,40673,3487],{"class":101},[91,40675,40676,40678,40680,40682,40684,40686,40688,40690,40692],{"class":93,"line":250},[91,40677,1968],{"class":566},[91,40679,13109],{"class":108},[91,40681,1366],{"class":566},[91,40683,13080],{"class":101},[91,40685,13083],{"class":97},[91,40687,795],{"class":101},[91,40689,11856],{"class":1172},[91,40691,11859],{"class":566},[91,40693,102],{"class":101},[91,40695,40696,40698],{"class":93,"line":260},[91,40697,2695],{"class":566},[91,40699,13130],{"class":101},[91,40701,40702,40704,40706,40708,40710,40712,40714],{"class":93,"line":274},[91,40703,13135],{"class":101},[91,40705,13138],{"class":169},[91,40707,11856],{"class":101},[91,40709,1235],{"class":169},[91,40711,1238],{"class":101},[91,40713,13147],{"class":169},[91,40715,7560],{"class":101},[91,40717,40718,40720,40722],{"class":93,"line":284},[91,40719,13154],{"class":101},[91,40721,7829],{"class":566},[91,40723,13159],{"class":101},[91,40725,40726,40728],{"class":93,"line":299},[91,40727,13164],{"class":101},[91,40729,13167],{"class":169},[91,40731,40732],{"class":93,"line":319},[91,40733,1698],{"class":101},[91,40735,40736],{"class":93,"line":334},[91,40737,9444],{"class":101},[91,40739,40740],{"class":93,"line":355},[91,40741,1450],{"emptyLinePlaceholder":846},[91,40743,40744,40746,40748,40750,40752],{"class":93,"line":364},[91,40745,10966],{"class":108},[91,40747,1235],{"class":101},[91,40749,10971],{"class":108},[91,40751,1366],{"class":566},[91,40753,13192],{"class":101},[91,40755,40756,40758,40760],{"class":93,"line":378},[91,40757,13197],{"class":566},[91,40759,13035],{"class":97},[91,40761,7549],{"class":101},[91,40763,40764,40766,40768,40770,40772],{"class":93,"line":387},[91,40765,13206],{"class":101},[91,40767,13209],{"class":97},[91,40769,13212],{"class":101},[91,40771,13215],{"class":169},[91,40773,8037],{"class":101},[91,40775,40776,40778,40780,40782,40784],{"class":93,"line":402},[91,40777,13222],{"class":101},[91,40779,13225],{"class":169},[91,40781,64],{"class":101},[91,40783,1442],{"class":566},[91,40785,13232],{"class":101},[91,40787,40788,40790,40792,40794,40796],{"class":93,"line":422},[91,40789,13237],{"class":101},[91,40791,13240],{"class":566},[91,40793,13243],{"class":101},[91,40795,13246],{"class":97},[91,40797,7549],{"class":101},[91,40799,40800,40802,40804],{"class":93,"line":438},[91,40801,13253],{"class":101},[91,40803,13256],{"class":169},[91,40805,7560],{"class":101},[91,40807,40808],{"class":93,"line":458},[91,40809,10100],{"class":101},[91,40811,40812],{"class":93,"line":467},[91,40813,13267],{"class":101},[91,40815,40816],{"class":93,"line":481},[91,40817,12327],{"class":101},[91,40819,40820],{"class":93,"line":490},[91,40821,10961],{"class":1343},[91,40823,40824,40826,40828,40830,40832,40834,40836],{"class":93,"line":3310},[91,40825,1968],{"class":566},[91,40827,13282],{"class":108},[91,40829,1366],{"class":566},[91,40831,13021],{"class":97},[91,40833,795],{"class":101},[91,40835,13291],{"class":169},[91,40837,1594],{"class":101},[91,40839,40840,40842,40844,40846,40848],{"class":93,"line":3315},[91,40841,10966],{"class":108},[91,40843,1235],{"class":101},[91,40845,10971],{"class":108},[91,40847,1366],{"class":566},[91,40849,102],{"class":101},[91,40851,40852,40854,40856,40858,40860,40862],{"class":93,"line":3321},[91,40853,13310],{"class":97},[91,40855,6549],{"class":101},[91,40857,13315],{"class":1172},[91,40859,1176],{"class":101},[91,40861,1179],{"class":566},[91,40863,102],{"class":101},[91,40865,40866,40868,40870,40872,40874,40876],{"class":93,"line":3327},[91,40867,13326],{"class":566},[91,40869,13329],{"class":101},[91,40871,13332],{"class":108},[91,40873,13335],{"class":566},[91,40875,13338],{"class":169},[91,40877,3866],{"class":101},[91,40879,40880,40882,40884,40886,40888,40890],{"class":93,"line":3333},[91,40881,13345],{"class":101},[91,40883,13348],{"class":97},[91,40885,795],{"class":101},[91,40887,1442],{"class":566},[91,40889,13355],{"class":101},[91,40891,13358],{"class":1343},[91,40893,40894],{"class":93,"line":3338},[91,40895,10095],{"class":101},[91,40897,40898],{"class":93,"line":3343},[91,40899,3477],{"class":101},[91,40901,40902],{"class":93,"line":7882},[91,40903,137],{"class":101},[16,40905,13373],{},[16,40907,40908],{},[19,40909],{"alt":21,"src":13378},[16,40911,13381],{},[49,40913,13385],{"id":13384},[82,40915,40916],{"className":11559,"code":13388,"language":11561,"meta":87,"style":87},[31,40917,40918],{"__ignoreMap":87},[91,40919,40920,40922,40924,40926,40928,40930,40932,40934],{"class":93,"line":94},[91,40921,12655],{"class":101},[91,40923,8409],{"class":566},[91,40925,12660],{"class":108},[91,40927,13401],{"class":101},[91,40929,8409],{"class":566},[91,40931,13406],{"class":101},[91,40933,8409],{"class":566},[91,40935,13411],{"class":101},[16,40937,13414,40938,13418],{},[31,40939,13417],{},[82,40941,40942],{"className":11559,"code":13421,"language":11561,"meta":87,"style":87},[31,40943,40944,40960,40980,40986,41002,41010,41016,41020,41024,41028,41040,41046,41054,41062,41066,41070],{"__ignoreMap":87},[91,40945,40946,40948,40950,40952,40954,40956,40958],{"class":93,"line":94},[91,40947,1968],{"class":566},[91,40949,13430],{"class":108},[91,40951,1366],{"class":566},[91,40953,13021],{"class":97},[91,40955,795],{"class":101},[91,40957,13439],{"class":169},[91,40959,13442],{"class":101},[91,40961,40962,40964,40966,40968,40970,40972,40974,40976,40978],{"class":93,"line":105},[91,40963,1968],{"class":566},[91,40965,13109],{"class":108},[91,40967,1366],{"class":566},[91,40969,13080],{"class":101},[91,40971,13083],{"class":97},[91,40973,795],{"class":101},[91,40975,11856],{"class":1172},[91,40977,11859],{"class":566},[91,40979,102],{"class":101},[91,40981,40982,40984],{"class":93,"line":121},[91,40983,2695],{"class":566},[91,40985,13130],{"class":101},[91,40987,40988,40990,40992,40994,40996,40998,41000],{"class":93,"line":134},[91,40989,13473],{"class":101},[91,40991,13138],{"class":169},[91,40993,11856],{"class":101},[91,40995,1235],{"class":169},[91,40997,5177],{"class":101},[91,40999,13147],{"class":169},[91,41001,7560],{"class":101},[91,41003,41004,41006,41008],{"class":93,"line":228},[91,41005,13490],{"class":101},[91,41007,7829],{"class":566},[91,41009,13495],{"class":101},[91,41011,41012,41014],{"class":93,"line":250},[91,41013,13164],{"class":101},[91,41015,13167],{"class":169},[91,41017,41018],{"class":93,"line":260},[91,41019,1698],{"class":101},[91,41021,41022],{"class":93,"line":274},[91,41023,9444],{"class":101},[91,41025,41026],{"class":93,"line":284},[91,41027,1450],{"emptyLinePlaceholder":846},[91,41029,41030,41032,41034,41036,41038],{"class":93,"line":299},[91,41031,10966],{"class":108},[91,41033,1235],{"class":101},[91,41035,10971],{"class":108},[91,41037,1366],{"class":566},[91,41039,13192],{"class":101},[91,41041,41042,41044],{"class":93,"line":319},[91,41043,13530],{"class":566},[91,41045,7560],{"class":101},[91,41047,41048,41050,41052],{"class":93,"line":334},[91,41049,13197],{"class":566},[91,41051,13430],{"class":97},[91,41053,7549],{"class":101},[91,41055,41056,41058,41060],{"class":93,"line":355},[91,41057,13545],{"class":101},[91,41059,13548],{"class":108},[91,41061,7560],{"class":101},[91,41063,41064],{"class":93,"line":364},[91,41065,13555],{"class":101},[91,41067,41068],{"class":93,"line":378},[91,41069,12631],{"class":101},[91,41071,41072],{"class":93,"line":387},[91,41073,12327],{"class":101},[16,41075,13566],{},[82,41077,41078],{"className":11559,"code":13569,"language":11561,"meta":87,"style":87},[31,41079,41080,41088,41100,41112,41124,41132,41140,41152,41164,41176],{"__ignoreMap":87},[91,41081,41082,41084,41086],{"class":93,"line":94},[91,41083,156],{"class":101},[91,41085,5177],{"class":159},[91,41087,173],{"class":101},[91,41089,41090,41092,41094,41096,41098],{"class":93,"line":105},[91,41091,178],{"class":101},[91,41093,13586],{"class":159},[91,41095,13589],{"class":101},[91,41097,13586],{"class":159},[91,41099,173],{"class":101},[91,41101,41102,41104,41106,41108,41110],{"class":93,"line":121},[91,41103,178],{"class":101},[91,41105,13600],{"class":159},[91,41107,13603],{"class":101},[91,41109,13600],{"class":159},[91,41111,173],{"class":101},[91,41113,41114,41116,41118,41120,41122],{"class":93,"line":134},[91,41115,178],{"class":101},[91,41117,13614],{"class":159},[91,41119,13617],{"class":101},[91,41121,13614],{"class":159},[91,41123,173],{"class":101},[91,41125,41126,41128,41130],{"class":93,"line":228},[91,41127,493],{"class":101},[91,41129,5177],{"class":159},[91,41131,173],{"class":101},[91,41133,41134,41136,41138],{"class":93,"line":250},[91,41135,156],{"class":101},[91,41137,5177],{"class":159},[91,41139,173],{"class":101},[91,41141,41142,41144,41146,41148,41150],{"class":93,"line":260},[91,41143,178],{"class":101},[91,41145,13586],{"class":159},[91,41147,13646],{"class":101},[91,41149,13586],{"class":159},[91,41151,173],{"class":101},[91,41153,41154,41156,41158,41160,41162],{"class":93,"line":274},[91,41155,178],{"class":101},[91,41157,13600],{"class":159},[91,41159,13603],{"class":101},[91,41161,13600],{"class":159},[91,41163,173],{"class":101},[91,41165,41166,41168,41170,41172,41174],{"class":93,"line":284},[91,41167,178],{"class":101},[91,41169,13614],{"class":159},[91,41171,13617],{"class":101},[91,41173,13614],{"class":159},[91,41175,173],{"class":101},[91,41177,41178,41180,41182],{"class":93,"line":299},[91,41179,493],{"class":101},[91,41181,5177],{"class":159},[91,41183,173],{"class":101},[16,41185,13685,41186,13689],{},[31,41187,13688],{},[757,41189,13693],{"id":13692},[16,41191,41192],{},[4306,41193,13700],{"href":13698,"rel":41194},[4310],[16,41196,13703],{},[16,41198,41199],{},[19,41200],{"alt":21,"src":13708},[16,41202,13711],{},[16,41204,41205],{},[19,41206],{"alt":21,"src":13716},[82,41208,41209],{"className":11559,"code":13719,"language":11561,"meta":87,"style":87},[31,41210,41211,41221,41235,41243,41263,41271],{"__ignoreMap":87},[91,41212,41213,41215,41217,41219],{"class":93,"line":94},[91,41214,13726],{"class":566},[91,41216,13729],{"class":108},[91,41218,13732],{"class":101},[91,41220,173],{"class":566},[91,41222,41223,41225,41227,41229,41231,41233],{"class":93,"line":105},[91,41224,156],{"class":101},[91,41226,149],{"class":159},[91,41228,1951],{"class":97},[91,41230,166],{"class":566},[91,41232,13747],{"class":169},[91,41234,173],{"class":101},[91,41236,41237,41239,41241],{"class":93,"line":121},[91,41238,2125],{"class":101},[91,41240,13756],{"class":159},[91,41242,173],{"class":101},[91,41244,41245,41247,41249,41251,41253,41255,41257,41259,41261],{"class":93,"line":134},[91,41246,178],{"class":101},[91,41248,13765],{"class":159},[91,41250,13768],{"class":97},[91,41252,166],{"class":566},[91,41254,13773],{"class":169},[91,41256,13776],{"class":97},[91,41258,166],{"class":566},[91,41260,13781],{"class":169},[91,41262,2147],{"class":101},[91,41264,41265,41267,41269],{"class":93,"line":228},[91,41266,277],{"class":101},[91,41268,13756],{"class":159},[91,41270,173],{"class":101},[91,41272,41273,41275,41277],{"class":93,"line":250},[91,41274,493],{"class":101},[91,41276,149],{"class":159},[91,41278,173],{"class":101},[16,41280,13802],{},[16,41282,41283],{},[19,41284],{"alt":21,"src":13807},[16,41286,13810],{},[16,41288,41289],{},[19,41290],{"alt":21,"src":13815},[16,41292,13818],{},[16,41294,41295],{},[19,41296],{"alt":21,"src":13823},[16,41298,13826,41299,13830],{},[31,41300,13829],{},[16,41302,41303],{},[19,41304],{"alt":21,"src":13835},[16,41306,13838],{},[49,41308,13842],{"id":13841},[16,41310,13845],{},[82,41312,41313],{"className":11559,"code":13848,"language":11561,"meta":87,"style":87},[31,41314,41315,41327,41335,41345,41355,41367,41391,41403,41409,41413,41435,41473,41487,41501,41527,41549,41553,41563,41571,41579,41587,41595,41603,41607,41615,41623,41631,41639,41647,41655,41663,41671,41677,41705,41733,41741,41747],{"__ignoreMap":87},[91,41316,41317,41319,41321,41323,41325],{"class":93,"line":94},[91,41318,10966],{"class":108},[91,41320,1235],{"class":101},[91,41322,10971],{"class":108},[91,41324,1366],{"class":566},[91,41326,13192],{"class":101},[91,41328,41329,41331,41333],{"class":93,"line":105},[91,41330,13197],{"class":566},[91,41332,13035],{"class":97},[91,41334,7549],{"class":101},[91,41336,41337,41339,41341,41343],{"class":93,"line":121},[91,41338,13875],{"class":97},[91,41340,795],{"class":101},[91,41342,13880],{"class":1172},[91,41344,3866],{"class":101},[91,41346,41347,41349,41351,41353],{"class":93,"line":134},[91,41348,13887],{"class":566},[91,41350,13890],{"class":101},[91,41352,166],{"class":566},[91,41354,13895],{"class":101},[91,41356,41357,41359,41361,41363,41365],{"class":93,"line":228},[91,41358,13900],{"class":101},[91,41360,1225],{"class":97},[91,41362,795],{"class":101},[91,41364,13907],{"class":169},[91,41366,13910],{"class":101},[91,41368,41369,41371,41373,41375,41377,41379,41381,41383,41385,41387,41389],{"class":93,"line":250},[91,41370,13915],{"class":566},[91,41372,13918],{"class":108},[91,41374,1366],{"class":566},[91,41376,13080],{"class":101},[91,41378,11851],{"class":97},[91,41380,795],{"class":101},[91,41382,11856],{"class":1172},[91,41384,11859],{"class":566},[91,41386,13933],{"class":101},[91,41388,13936],{"class":97},[91,41390,13939],{"class":101},[91,41392,41393,41395,41397,41399,41401],{"class":93,"line":260},[91,41394,13326],{"class":566},[91,41396,13946],{"class":101},[91,41398,11788],{"class":566},[91,41400,1363],{"class":108},[91,41402,3866],{"class":101},[91,41404,41405,41407],{"class":93,"line":274},[91,41406,11866],{"class":566},[91,41408,13895],{"class":101},[91,41410,41411],{"class":93,"line":284},[91,41412,10095],{"class":101},[91,41414,41415,41417,41419,41421,41423,41425,41427,41429,41431,41433],{"class":93,"line":299},[91,41416,13915],{"class":566},[91,41418,13969],{"class":101},[91,41420,13972],{"class":108},[91,41422,64],{"class":101},[91,41424,13977],{"class":108},[91,41426,64],{"class":101},[91,41428,13982],{"class":108},[91,41430,13985],{"class":101},[91,41432,166],{"class":566},[91,41434,13990],{"class":101},[91,41436,41437,41439,41441,41443,41445,41447,41449,41451,41453,41455,41457,41459,41461,41463,41465,41467,41469,41471],{"class":93,"line":319},[91,41438,13915],{"class":566},[91,41440,13997],{"class":108},[91,41442,1366],{"class":566},[91,41444,14002],{"class":101},[91,41446,8372],{"class":566},[91,41448,14007],{"class":101},[91,41450,14010],{"class":97},[91,41452,795],{"class":101},[91,41454,8361],{"class":169},[91,41456,14018],{"class":14017},[91,41458,8361],{"class":169},[91,41460,14023],{"class":566},[91,41462,64],{"class":101},[91,41464,14028],{"class":169},[91,41466,1176],{"class":101},[91,41468,1208],{"class":566},[91,41470,14035],{"class":101},[91,41472,14038],{"class":108},[91,41474,41475,41477,41479,41481,41483,41485],{"class":93,"line":334},[91,41476,13915],{"class":566},[91,41478,14045],{"class":108},[91,41480,1366],{"class":566},[91,41482,14050],{"class":101},[91,41484,7829],{"class":566},[91,41486,14055],{"class":169},[91,41488,41489,41491,41493,41495,41497,41499],{"class":93,"line":355},[91,41490,13915],{"class":566},[91,41492,14062],{"class":108},[91,41494,1366],{"class":566},[91,41496,14067],{"class":101},[91,41498,7829],{"class":566},[91,41500,14072],{"class":169},[91,41502,41503,41505,41507,41509,41511,41513,41515,41517,41519,41521,41523,41525],{"class":93,"line":364},[91,41504,13915],{"class":566},[91,41506,14079],{"class":108},[91,41508,1366],{"class":566},[91,41510,14084],{"class":169},[91,41512,14087],{"class":101},[91,41514,1235],{"class":169},[91,41516,14092],{"class":101},[91,41518,1235],{"class":169},[91,41520,13548],{"class":108},[91,41522,14099],{"class":169},[91,41524,14102],{"class":101},[91,41526,14105],{"class":169},[91,41528,41529,41531,41533,41535,41537,41539,41541,41543,41545,41547],{"class":93,"line":378},[91,41530,13915],{"class":566},[91,41532,14112],{"class":108},[91,41534,1366],{"class":566},[91,41536,14084],{"class":169},[91,41538,14087],{"class":101},[91,41540,1235],{"class":169},[91,41542,14092],{"class":101},[91,41544,1235],{"class":169},[91,41546,13548],{"class":108},[91,41548,14129],{"class":169},[91,41550,41551],{"class":93,"line":387},[91,41552,1450],{"emptyLinePlaceholder":846},[91,41554,41555,41557,41559,41561],{"class":93,"line":402},[91,41556,13915],{"class":566},[91,41558,14140],{"class":108},[91,41560,1366],{"class":566},[91,41562,14145],{"class":169},[91,41564,41565,41567,41569],{"class":93,"line":422},[91,41566,14150],{"class":169},[91,41568,14153],{"class":101},[91,41570,14156],{"class":169},[91,41572,41573,41575,41577],{"class":93,"line":438},[91,41574,14161],{"class":169},[91,41576,14153],{"class":101},[91,41578,14166],{"class":169},[91,41580,41581,41583,41585],{"class":93,"line":458},[91,41582,14171],{"class":169},[91,41584,14174],{"class":101},[91,41586,14166],{"class":169},[91,41588,41589,41591,41593],{"class":93,"line":467},[91,41590,14181],{"class":169},[91,41592,14184],{"class":101},[91,41594,14166],{"class":169},[91,41596,41597,41599,41601],{"class":93,"line":481},[91,41598,14191],{"class":169},[91,41600,5177],{"class":101},[91,41602,14166],{"class":169},[91,41604,41605],{"class":93,"line":490},[91,41606,14200],{"class":169},[91,41608,41609,41611,41613],{"class":93,"line":3310},[91,41610,14205],{"class":169},[91,41612,14153],{"class":101},[91,41614,14166],{"class":169},[91,41616,41617,41619,41621],{"class":93,"line":3315},[91,41618,14214],{"class":169},[91,41620,14174],{"class":101},[91,41622,14166],{"class":169},[91,41624,41625,41627,41629],{"class":93,"line":3321},[91,41626,14223],{"class":169},[91,41628,14226],{"class":101},[91,41630,14166],{"class":169},[91,41632,41633,41635,41637],{"class":93,"line":3327},[91,41634,14233],{"class":169},[91,41636,14226],{"class":101},[91,41638,14166],{"class":169},[91,41640,41641,41643,41645],{"class":93,"line":3333},[91,41642,14242],{"class":169},[91,41644,5177],{"class":101},[91,41646,14166],{"class":169},[91,41648,41649,41651,41653],{"class":93,"line":3338},[91,41650,14251],{"class":169},[91,41652,14153],{"class":101},[91,41654,14166],{"class":169},[91,41656,41657,41659,41661],{"class":93,"line":3343},[91,41658,14260],{"class":169},[91,41660,14174],{"class":101},[91,41662,14166],{"class":169},[91,41664,41665,41667,41669],{"class":93,"line":7882},[91,41666,14269],{"class":169},[91,41668,14226],{"class":101},[91,41670,14166],{"class":169},[91,41672,41673,41675],{"class":93,"line":7887},[91,41674,14278],{"class":169},[91,41676,118],{"class":101},[91,41678,41679,41681,41683,41685,41687,41689,41691,41693,41695,41697,41699,41701,41703],{"class":93,"line":7892},[91,41680,13915],{"class":566},[91,41682,14287],{"class":108},[91,41684,1366],{"class":566},[91,41686,14292],{"class":101},[91,41688,14295],{"class":97},[91,41690,795],{"class":101},[91,41692,14300],{"class":169},[91,41694,1176],{"class":101},[91,41696,8406],{"class":566},[91,41698,14307],{"class":169},[91,41700,1235],{"class":101},[91,41702,11811],{"class":108},[91,41704,118],{"class":101},[91,41706,41707,41709,41711,41713,41715,41717,41719,41721,41723,41725,41727,41729,41731],{"class":93,"line":7906},[91,41708,14318],{"class":101},[91,41710,166],{"class":566},[91,41712,14292],{"class":101},[91,41714,8026],{"class":97},[91,41716,795],{"class":101},[91,41718,1578],{"class":108},[91,41720,14331],{"class":101},[91,41722,8406],{"class":566},[91,41724,14336],{"class":101},[91,41726,8406],{"class":566},[91,41728,14292],{"class":101},[91,41730,8026],{"class":97},[91,41732,14345],{"class":101},[91,41734,41735,41737,41739],{"class":93,"line":7922},[91,41736,14350],{"class":101},[91,41738,166],{"class":566},[91,41740,14355],{"class":101},[91,41742,41743,41745],{"class":93,"line":7927},[91,41744,11825],{"class":566},[91,41746,14362],{"class":101},[91,41748,41749],{"class":93,"line":7967},[91,41750,3477],{"class":101},[16,41752,14369,41753,14373,41755,14377,41757,64,41759,14382,41761,14386],{},[31,41754,14372],{},[31,41756,14376],{},[31,41758,13972],{},[31,41760,13977],{},[31,41762,14385],{},[49,41764,14390],{"id":14389},[16,41766,14393],{},[757,41768,14397],{"id":14396},[16,41770,41771],{},[4306,41772,14404],{"href":14402,"rel":41773},[4310],[16,41775,41776],{},[19,41777],{"alt":21,"src":14409},[16,41779,14412],{},[16,41781,41782],{},[19,41783],{"alt":21,"src":14417},[16,41785,14420],{},[771,41787,14424],{"id":14423},[16,41789,14427,41790,14431,41792,14435],{},[31,41791,14430],{},[31,41793,14434],{},[82,41795,41796],{"className":11559,"code":14438,"language":11561,"meta":87,"style":87},[31,41797,41798,41802,41806,41810,41816,41844,41848,41854,41860,41866,41878,41912,41926,41938],{"__ignoreMap":87},[91,41799,41800],{"class":93,"line":94},[91,41801,14445],{"class":101},[91,41803,41804],{"class":93,"line":105},[91,41805,14450],{"class":101},[91,41807,41808],{"class":93,"line":121},[91,41809,14455],{"class":101},[91,41811,41812,41814],{"class":93,"line":134},[91,41813,14460],{"class":101},[91,41815,14463],{"class":566},[91,41817,41818,41820,41822,41824,41826,41828,41830,41832,41834,41836,41838,41840,41842],{"class":93,"line":228},[91,41819,14468],{"class":101},[91,41821,14471],{"class":97},[91,41823,14474],{"class":97},[91,41825,14477],{"class":97},[91,41827,14480],{"class":97},[91,41829,14483],{"class":97},[91,41831,14486],{"class":101},[91,41833,14489],{"class":97},[91,41835,14492],{"class":97},[91,41837,14495],{"class":97},[91,41839,11795],{"class":97},[91,41841,14500],{"class":97},[91,41843,14503],{"class":101},[91,41845,41846],{"class":93,"line":250},[91,41847,14445],{"class":101},[91,41849,41850,41852],{"class":93,"line":260},[91,41851,14512],{"class":101},[91,41853,14515],{"class":97},[91,41855,41856,41858],{"class":93,"line":274},[91,41857,14520],{"class":101},[91,41859,14523],{"class":97},[91,41861,41862,41864],{"class":93,"line":284},[91,41863,14528],{"class":101},[91,41865,14515],{"class":97},[91,41867,41868,41870,41872,41874,41876],{"class":93,"line":299},[91,41869,14468],{"class":101},[91,41871,14537],{"class":97},[91,41873,14540],{"class":97},[91,41875,14543],{"class":97},[91,41877,14546],{"class":97},[91,41879,41880,41882,41884,41886,41888,41890,41892,41894,41896,41898,41900,41902,41904,41906,41908,41910],{"class":93,"line":319},[91,41881,14468],{"class":101},[91,41883,14553],{"class":97},[91,41885,14556],{"class":97},[91,41887,14474],{"class":97},[91,41889,14561],{"class":97},[91,41891,14564],{"class":97},[91,41893,14567],{"class":97},[91,41895,14570],{"class":97},[91,41897,14573],{"class":97},[91,41899,10273],{"class":97},[91,41901,14474],{"class":97},[91,41903,14580],{"class":97},[91,41905,14583],{"class":97},[91,41907,14474],{"class":97},[91,41909,14588],{"class":97},[91,41911,7265],{"class":101},[91,41913,41914,41916,41918,41920,41922,41924],{"class":93,"line":334},[91,41915,14595],{"class":101},[91,41917,14598],{"class":97},[91,41919,1235],{"class":101},[91,41921,14603],{"class":97},[91,41923,1235],{"class":101},[91,41925,14608],{"class":97},[91,41927,41928,41930,41932,41934,41936],{"class":93,"line":355},[91,41929,14613],{"class":101},[91,41931,14616],{"class":97},[91,41933,1235],{"class":101},[91,41935,14621],{"class":97},[91,41937,12474],{"class":101},[91,41939,41940,41942,41944,41946],{"class":93,"line":364},[91,41941,14468],{"class":101},[91,41943,14630],{"class":97},[91,41945,10060],{"class":97},[91,41947,14635],{"class":97},[16,41949,41950,14641,41952,14645],{},[31,41951,14640],{},[31,41953,14644],{},[16,41955,41956],{},[19,41957],{"alt":21,"src":14650},[16,41959,14653],{},[82,41961,41962],{"className":11559,"code":14656,"language":11561,"meta":87,"style":87},[31,41963,41964,41968,41980,41984,41988,41996,42000,42004,42012,42016],{"__ignoreMap":87},[91,41965,41966],{"class":93,"line":94},[91,41967,10961],{"class":1343},[91,41969,41970,41972,41974,41976,41978],{"class":93,"line":105},[91,41971,10966],{"class":108},[91,41973,1235],{"class":101},[91,41975,10971],{"class":108},[91,41977,1366],{"class":566},[91,41979,102],{"class":101},[91,41981,41982],{"class":93,"line":121},[91,41983,14679],{"class":101},[91,41985,41986],{"class":93,"line":134},[91,41987,14684],{"class":1343},[91,41989,41990,41992,41994],{"class":93,"line":228},[91,41991,14689],{"class":101},[91,41993,7557],{"class":108},[91,41995,7560],{"class":101},[91,41997,41998],{"class":93,"line":250},[91,41999,14698],{"class":1343},[91,42001,42002],{"class":93,"line":260},[91,42003,14703],{"class":1343},[91,42005,42006,42008,42010],{"class":93,"line":274},[91,42007,14708],{"class":101},[91,42009,14711],{"class":169},[91,42011,7560],{"class":101},[91,42013,42014],{"class":93,"line":284},[91,42015,1698],{"class":101},[91,42017,42018],{"class":93,"line":299},[91,42019,137],{"class":101},[16,42021,14724,42022,14728,42024,14732],{},[31,42023,14727],{},[31,42025,14731],{},[757,42027,14736],{"id":14735},[82,42029,42030],{"className":11559,"code":14739,"language":11561,"meta":87,"style":87},[31,42031,42032],{"__ignoreMap":87},[91,42033,42034,42036,42038,42040,42042],{"class":93,"line":94},[91,42035,14746],{"class":101},[91,42037,8409],{"class":566},[91,42039,14751],{"class":101},[91,42041,8409],{"class":566},[91,42043,14756],{"class":101},[16,42045,14759,42046,14763,42048,14766,42050,14770],{},[31,42047,14762],{},[31,42049,14762],{},[31,42051,14769],{},[82,42053,42054],{"className":11559,"code":14773,"language":11561,"meta":87,"style":87},[31,42055,42056,42060,42072,42076,42090,42104,42116,42120,42124,42136,42144,42152,42162,42166,42176,42180,42186],{"__ignoreMap":87},[91,42057,42058],{"class":93,"line":94},[91,42059,14780],{"class":1343},[91,42061,42062,42064,42066,42068,42070],{"class":93,"line":105},[91,42063,2499],{"class":566},[91,42065,14787],{"class":101},[91,42067,2505],{"class":566},[91,42069,14792],{"class":169},[91,42071,118],{"class":101},[91,42073,42074],{"class":93,"line":121},[91,42075,1450],{"emptyLinePlaceholder":846},[91,42077,42078,42080,42082,42084,42086,42088],{"class":93,"line":134},[91,42079,1349],{"class":566},[91,42081,14805],{"class":108},[91,42083,1366],{"class":566},[91,42085,14810],{"class":169},[91,42087,14813],{"class":101},[91,42089,14816],{"class":1343},[91,42091,42092,42094,42096,42098,42100,42102],{"class":93,"line":228},[91,42093,5226],{"class":566},[91,42095,14823],{"class":101},[91,42097,13332],{"class":108},[91,42099,13335],{"class":566},[91,42101,14830],{"class":169},[91,42103,3866],{"class":101},[91,42105,42106,42108,42110,42112,42114],{"class":93,"line":250},[91,42107,14837],{"class":108},[91,42109,1366],{"class":566},[91,42111,14842],{"class":169},[91,42113,14813],{"class":101},[91,42115,14847],{"class":1343},[91,42117,42118],{"class":93,"line":260},[91,42119,137],{"class":101},[91,42121,42122],{"class":93,"line":274},[91,42123,1450],{"emptyLinePlaceholder":846},[91,42125,42126,42128,42130,42132,42134],{"class":93,"line":284},[91,42127,1968],{"class":566},[91,42129,14862],{"class":108},[91,42131,1366],{"class":566},[91,42133,14867],{"class":97},[91,42135,14870],{"class":101},[91,42137,42138,42140,42142],{"class":93,"line":299},[91,42139,1235],{"class":101},[91,42141,14877],{"class":97},[91,42143,14880],{"class":101},[91,42145,42146,42148,42150],{"class":93,"line":319},[91,42147,1235],{"class":101},[91,42149,14877],{"class":97},[91,42151,14889],{"class":101},[91,42153,42154,42156,42158,42160],{"class":93,"line":334},[91,42155,14894],{"class":566},[91,42157,1235],{"class":101},[91,42159,14877],{"class":97},[91,42161,14901],{"class":101},[91,42163,42164],{"class":93,"line":355},[91,42165,14906],{"class":101},[91,42167,42168,42170,42172,42174],{"class":93,"line":364},[91,42169,14911],{"class":101},[91,42171,14914],{"class":108},[91,42173,64],{"class":101},[91,42175,14847],{"class":1343},[91,42177,42178],{"class":93,"line":378},[91,42179,1693],{"class":101},[91,42181,42182,42184],{"class":93,"line":387},[91,42183,14927],{"class":101},[91,42185,12474],{"class":566},[91,42187,42188,42190,42192,42194,42196],{"class":93,"line":402},[91,42189,1235],{"class":101},[91,42191,14936],{"class":97},[91,42193,795],{"class":101},[91,42195,13256],{"class":169},[91,42197,3487],{"class":101},[16,42199,14945,42200,14948],{},[31,42201,14877],{},[82,42203,42204],{"className":11559,"code":14951,"language":11561,"meta":87,"style":87},[31,42205,42206,42210,42220,42232,42236,42240,42244],{"__ignoreMap":87},[91,42207,42208],{"class":93,"line":94},[91,42209,14958],{"class":1343},[91,42211,42212,42214,42216,42218],{"class":93,"line":105},[91,42213,2499],{"class":566},[91,42215,14965],{"class":101},[91,42217,2505],{"class":566},[91,42219,14970],{"class":169},[91,42221,42222,42224,42226,42228,42230],{"class":93,"line":121},[91,42223,1968],{"class":566},[91,42225,14977],{"class":108},[91,42227,1366],{"class":566},[91,42229,14982],{"class":97},[91,42231,7549],{"class":101},[91,42233,42234],{"class":93,"line":134},[91,42235,14989],{"class":566},[91,42237,42238],{"class":93,"line":228},[91,42239,9444],{"class":101},[91,42241,42242],{"class":93,"line":250},[91,42243,1450],{"emptyLinePlaceholder":846},[91,42245,42246,42248],{"class":93,"line":260},[91,42247,15002],{"class":97},[91,42249,15005],{"class":101},[16,42251,42252,15010],{},[31,42253,15002],{},[829,42255,15013],{},{"title":87,"searchDepth":105,"depth":105,"links":42257},[42258,42259,42264,42265,42266,42267,42270,42271],{"id":10866,"depth":105,"text":10867},{"id":10890,"depth":105,"text":10891,"children":42260},[42261,42262,42263],{"id":10919,"depth":121,"text":10919},{"id":10935,"depth":121,"text":10910},{"id":11003,"depth":121,"text":11004},{"id":11350,"depth":105,"text":11351},{"id":12345,"depth":105,"text":12346},{"id":12641,"depth":105,"text":12642},{"id":13384,"depth":105,"text":13385,"children":42268},[42269],{"id":13692,"depth":121,"text":13693},{"id":13841,"depth":105,"text":13842},{"id":14389,"depth":105,"text":14390,"children":42272},[42273,42274],{"id":14396,"depth":121,"text":14397},{"id":14735,"depth":121,"text":14736},{},{"title":10845,"description":15034},{"loc":15037},[15042,15043,15044,15045,15046,15047,15048],{"id":15052,"title":15053,"body":42280,"created":1501,"description":15275,"extension":843,"filename":15276,"meta":42453,"navigation":846,"path":15278,"seo":42454,"sitemap":42455,"stem":15281,"subject":15282,"tags":42456,"updated":1501,"volume":1863,"__hash__":15284},{"type":8,"value":42281,"toc":42447},[42282,42284,42288,42290,42292,42296,42302,42304,42306,42308,42310,42312,42368,42373,42375,42441],[16,42283,15058],{},[1722,42285,42286],{},[16,42287,15063],{},[16,42289,15066],{},[49,42291,15070],{"id":15069},[16,42293,15073,42294,15077],{},[31,42295,15076],{},[24,42297,42298,42300],{},[27,42299,15082],{},[27,42301,15085],{},[16,42303,15088],{},[757,42305,15092],{"id":15091},[1112,42307],{"description":15095,"favicon":15096,"host":15097,"title":15092,"url":15098},[16,42309,15101],{},[757,42311,15105],{"id":15104},[812,42313,42314,42326],{},[3001,42315,42316],{},[3004,42317,42318,42320,42322,42324],{},[3007,42319,15114],{},[3007,42321,15117],{},[3007,42323,15120],{},[3007,42325,15123],{},[3017,42327,42328,42338,42348,42358],{},[3004,42329,42330,42332,42334,42336],{},[3022,42331,15130],{},[3022,42333,15133],{},[3022,42335,15136],{},[3022,42337,15139],{},[3004,42339,42340,42342,42344,42346],{},[3022,42341,15144],{},[3022,42343,15147],{},[3022,42345,15150],{},[3022,42347,15139],{},[3004,42349,42350,42352,42354,42356],{},[3022,42351,15157],{},[3022,42353,15160],{},[3022,42355,15163],{},[3022,42357,15166],{},[3004,42359,42360,42362,42364,42366],{},[3022,42361,15171],{},[3022,42363],{},[3022,42365],{},[3022,42367],{},[82,42369,42371],{"className":42370,"code":15181,"language":1099},[1097],[31,42372,15181],{"__ignoreMap":87},[16,42374,15186],{},[812,42376,42377,42389],{},[3001,42378,42379],{},[3004,42380,42381,42383,42385,42387],{},[3007,42382,15195],{},[3007,42384,15114],{},[3007,42386,15200],{},[3007,42388,15203],{},[3017,42390,42391,42401,42411,42421,42431],{},[3004,42392,42393,42395,42397,42399],{},[3022,42394,15210],{},[3022,42396,15130],{},[3022,42398,15136],{},[3022,42400,15217],{},[3004,42402,42403,42405,42407,42409],{},[3022,42404,15210],{},[3022,42406,15157],{},[3022,42408,15163],{},[3022,42410,15217],{},[3004,42412,42413,42415,42417,42419],{},[3022,42414,15232],{},[3022,42416,15130],{},[3022,42418,15130],{},[3022,42420,15239],{},[3004,42422,42423,42425,42427,42429],{},[3022,42424,15232],{},[3022,42426,15157],{},[3022,42428,15157],{},[3022,42430,15239],{},[3004,42432,42433,42435,42437,42439],{},[3022,42434,15254],{},[3022,42436],{},[3022,42438],{},[3022,42440],{},[1722,42442,42443],{},[16,42444,42445,15268],{},[91,42446,15267],{},{"title":87,"searchDepth":105,"depth":105,"links":42448},[42449],{"id":15069,"depth":105,"text":15070,"children":42450},[42451,42452],{"id":15091,"depth":121,"text":15092},{"id":15104,"depth":121,"text":15105},{},{"title":15053,"description":15275},{"loc":15278},[5447,7203,7409],{"id":15286,"title":15287,"body":42458,"created":15406,"description":15407,"extension":843,"filename":15408,"meta":42544,"navigation":846,"path":15410,"seo":42545,"sitemap":42546,"stem":15413,"subject":15282,"tags":42547,"updated":15406,"volume":1863,"__hash__":15418},{"type":8,"value":42459,"toc":42542},[42460,42462,42476,42500,42504,42526,42536,42540],[1112,42461],{"description":15292,"favicon":1320,"host":1317,"image":15293,"title":15294,"url":15295},[1722,42463,42464,42466,42468,42470,42472,42474],{},[16,42465,15300],{},[16,42467,15303],{},[16,42469,15306],{},[16,42471,15309],{},[16,42473,15312],{},[16,42475,15315],{},[82,42477,42478],{"className":8477,"code":15318,"language":8479,"meta":87,"style":87},[31,42479,42480,42486,42496],{"__ignoreMap":87},[91,42481,42482,42484],{"class":93,"line":94},[91,42483,15325],{"class":169},[91,42485,8789],{"class":101},[91,42487,42488,42490,42492,42494],{"class":93,"line":105},[91,42489,15332],{"class":108},[91,42491,112],{"class":101},[91,42493,15337],{"class":169},[91,42495,7560],{"class":101},[91,42497,42498],{"class":93,"line":121},[91,42499,137],{"class":101},[16,42501,15346,42502,15350],{},[31,42503,15349],{},[82,42505,42506],{"className":8477,"code":15353,"language":8479,"meta":87,"style":87},[31,42507,42508,42514,42522],{"__ignoreMap":87},[91,42509,42510,42512],{"class":93,"line":94},[91,42511,15360],{"class":169},[91,42513,8789],{"class":101},[91,42515,42516,42518,42520],{"class":93,"line":105},[91,42517,15332],{"class":108},[91,42519,112],{"class":101},[91,42521,15371],{"class":169},[91,42523,42524],{"class":93,"line":121},[91,42525,15376],{"class":101},[16,42527,42528,15382,42530,15386,42532,15390,42534,15394],{},[31,42529,15381],{},[792,42531,15385],{},[792,42533,15389],{},[792,42535,15393],{},[16,42537,15397,42538,15400],{},[31,42539,15349],{},[829,42541,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":42543},[],{},{"title":15287,"description":15407},{"loc":15410},[15415,1261,15416,5447,15417],{"id":15420,"title":15421,"body":42549,"created":16313,"description":16314,"extension":843,"filename":16315,"meta":43285,"navigation":846,"path":16317,"seo":43286,"sitemap":43287,"stem":16320,"subject":2862,"tags":43288,"updated":16313,"volume":853,"__hash__":16327},{"type":8,"value":42550,"toc":43277},[42551,42553,42555,42557,42563,42579,42591,42595,42601,42603,42609,42813,42819,42821,42823,42851,42917,42923,42925,42941,42943,42955,42957,43001,43003,43251,43255,43257,43261,43267,43269,43271,43273,43275],[16,42552,15426],{},[16,42554,15429],{},[49,42556,15433],{"id":15432},[16,42558,15436,42559,15440,42561,15444],{},[31,42560,15439],{},[31,42562,15443],{},[82,42564,42565],{"className":15447,"code":15448,"language":843,"meta":87,"style":87},[31,42566,42567,42571,42575],{"__ignoreMap":87},[91,42568,42569],{"class":93,"line":94},[91,42570,15455],{"class":101},[91,42572,42573],{"class":93,"line":105},[91,42574,15460],{"class":101},[91,42576,42577],{"class":93,"line":121},[91,42578,15465],{"class":101},[16,42580,15468,42581,15472,42583,15476,42585,64,42587,64,42589,15483],{},[31,42582,15471],{},[31,42584,15475],{},[31,42586,82],{},[31,42588,16],{},[31,42590,4530],{},[16,42592,42593],{},[19,42594],{"alt":15488,"src":15489},[16,42596,15492,42597,15495,42599,15499],{},[31,42598,1112],{},[31,42600,15498],{},[49,42602,15503],{"id":15502},[16,42604,15506,42605,15509,42607,15513],{},[31,42606,15498],{},[31,42608,15512],{},[82,42610,42611],{"className":1934,"code":15516,"language":1936,"meta":87,"style":87},[31,42612,42613,42629,42639,42643,42655,42677,42691,42705,42709,42713,42723,42727,42731,42739,42743,42751,42771,42777,42785,42793,42797,42805],{"__ignoreMap":87},[91,42614,42615,42617,42619,42621,42623,42625,42627],{"class":93,"line":94},[91,42616,156],{"class":101},[91,42618,1945],{"class":159},[91,42620,1948],{"class":97},[91,42622,1951],{"class":97},[91,42624,166],{"class":101},[91,42626,1956],{"class":169},[91,42628,173],{"class":101},[91,42630,42631,42633,42635,42637],{"class":93,"line":105},[91,42632,2499],{"class":566},[91,42634,15541],{"class":101},[91,42636,2505],{"class":566},[91,42638,15546],{"class":169},[91,42640,42641],{"class":93,"line":121},[91,42642,1450],{"emptyLinePlaceholder":846},[91,42644,42645,42647,42649,42651,42653],{"class":93,"line":134},[91,42646,1968],{"class":566},[91,42648,12259],{"class":108},[91,42650,1366],{"class":566},[91,42652,12264],{"class":97},[91,42654,9313],{"class":101},[91,42656,42657,42659,42661,42663,42665,42667,42669,42671,42673,42675],{"class":93,"line":228},[91,42658,1968],{"class":566},[91,42660,13969],{"class":101},[91,42662,7901],{"class":1172},[91,42664,112],{"class":101},[91,42666,15575],{"class":108},[91,42668,13985],{"class":101},[91,42670,166],{"class":566},[91,42672,1390],{"class":566},[91,42674,15584],{"class":97},[91,42676,9266],{"class":101},[91,42678,42679,42681,42683,42685,42687,42689],{"class":93,"line":250},[91,42680,15591],{"class":169},[91,42682,14102],{"class":101},[91,42684,1235],{"class":169},[91,42686,15598],{"class":101},[91,42688,1241],{"class":169},[91,42690,7560],{"class":101},[91,42692,42693,42695,42697,42699,42701,42703],{"class":93,"line":260},[91,42694,15607],{"class":101},[91,42696,1179],{"class":566},[91,42698,15612],{"class":97},[91,42700,15615],{"class":101},[91,42702,15618],{"class":97},[91,42704,8275],{"class":101},[91,42706,42707],{"class":93,"line":274},[91,42708,3487],{"class":101},[91,42710,42711],{"class":93,"line":284},[91,42712,1450],{"emptyLinePlaceholder":846},[91,42714,42715,42717,42719,42721],{"class":93,"line":299},[91,42716,1968],{"class":566},[91,42718,15635],{"class":108},[91,42720,1366],{"class":566},[91,42722,102],{"class":101},[91,42724,42725],{"class":93,"line":319},[91,42726,15644],{"class":101},[91,42728,42729],{"class":93,"line":334},[91,42730,137],{"class":101},[91,42732,42733,42735,42737],{"class":93,"line":355},[91,42734,493],{"class":101},[91,42736,1945],{"class":159},[91,42738,173],{"class":101},[91,42740,42741],{"class":93,"line":364},[91,42742,1450],{"emptyLinePlaceholder":846},[91,42744,42745,42747,42749],{"class":93,"line":378},[91,42746,156],{"class":101},[91,42748,2118],{"class":159},[91,42750,173],{"class":101},[91,42752,42753,42755,42757,42759,42761,42763,42765,42767,42769],{"class":93,"line":387},[91,42754,2125],{"class":101},[91,42756,15675],{"class":159},[91,42758,15678],{"class":97},[91,42760,166],{"class":101},[91,42762,15683],{"class":169},[91,42764,15686],{"class":97},[91,42766,166],{"class":101},[91,42768,15683],{"class":169},[91,42770,173],{"class":101},[91,42772,42773,42775],{"class":93,"line":402},[91,42774,178],{"class":101},[91,42776,15699],{"class":159},[91,42778,42779,42781,42783],{"class":93,"line":422},[91,42780,15704],{"class":97},[91,42782,166],{"class":101},[91,42784,15709],{"class":169},[91,42786,42787,42789,42791],{"class":93,"line":438},[91,42788,15714],{"class":97},[91,42790,166],{"class":101},[91,42792,15719],{"class":169},[91,42794,42795],{"class":93,"line":458},[91,42796,15724],{"class":101},[91,42798,42799,42801,42803],{"class":93,"line":467},[91,42800,15729],{"class":101},[91,42802,15675],{"class":159},[91,42804,173],{"class":101},[91,42806,42807,42809,42811],{"class":93,"line":481},[91,42808,493],{"class":101},[91,42810,2118],{"class":159},[91,42812,173],{"class":101},[16,42814,42815,15747,42817,15750],{},[31,42816,15746],{},[31,42818,1112],{},[49,42820,15754],{"id":15753},[16,42822,15757],{},[82,42824,42825],{"className":15447,"code":15760,"language":843,"meta":87,"style":87},[31,42826,42827,42831,42847],{"__ignoreMap":87},[91,42828,42829],{"class":93,"line":94},[91,42830,15767],{"class":101},[91,42832,42833,42835,42837,42839,42841,42843,42845],{"class":93,"line":105},[91,42834,15772],{"class":101},[91,42836,15776],{"class":15775},[91,42838,15779],{"class":101},[91,42840,15783],{"class":15782},[91,42842,15786],{"class":101},[91,42844,15790],{"class":15789},[91,42846,15793],{"class":101},[91,42848,42849],{"class":93,"line":121},[91,42850,15465],{"class":101},[82,42852,42853],{"className":1934,"code":15800,"language":1936,"meta":87,"style":87},[31,42854,42855,42859,42867,42881,42901,42909],{"__ignoreMap":87},[91,42856,42857],{"class":93,"line":94},[91,42858,15807],{"class":1343},[91,42860,42861,42863,42865],{"class":93,"line":105},[91,42862,156],{"class":101},[91,42864,2118],{"class":159},[91,42866,173],{"class":101},[91,42868,42869,42871,42873,42875,42877,42879],{"class":93,"line":121},[91,42870,2125],{"class":101},[91,42872,15822],{"class":159},[91,42874,163],{"class":97},[91,42876,166],{"class":101},[91,42878,15829],{"class":169},[91,42880,173],{"class":101},[91,42882,42883,42885,42887,42889,42891,42893,42895,42897,42899],{"class":93,"line":134},[91,42884,178],{"class":101},[91,42886,15838],{"class":159},[91,42888,15841],{"class":97},[91,42890,166],{"class":101},[91,42892,15846],{"class":169},[91,42894,15849],{"class":97},[91,42896,166],{"class":101},[91,42898,15854],{"class":169},[91,42900,2147],{"class":101},[91,42902,42903,42905,42907],{"class":93,"line":228},[91,42904,15729],{"class":101},[91,42906,15822],{"class":159},[91,42908,173],{"class":101},[91,42910,42911,42913,42915],{"class":93,"line":250},[91,42912,493],{"class":101},[91,42914,2118],{"class":159},[91,42916,173],{"class":101},[16,42918,15875,42919,15878,42921,15882],{},[31,42920,15838],{},[31,42922,15881],{},[49,42924,15886],{"id":15885},[16,42926,15889,42927,64,42929,64,42931,64,42933,64,42935,64,42937,15905,42939,15908],{},[31,42928,5177],{},[31,42930,13972],{},[31,42932,13977],{},[31,42934,15898],{},[31,42936,15901],{},[31,42938,15904],{},[31,42940,4974],{},[16,42942,15911],{},[82,42944,42945],{"className":15447,"code":15914,"language":843,"meta":87,"style":87},[31,42946,42947,42951],{"__ignoreMap":87},[91,42948,42949],{"class":93,"line":94},[91,42950,15921],{"class":101},[91,42952,42953],{"class":93,"line":105},[91,42954,15465],{"class":101},[16,42956,15928],{},[82,42958,42959],{"className":15447,"code":15931,"language":843,"meta":87,"style":87},[31,42960,42961,42965,42969,42973,42977,42981,42985,42989,42993,42997],{"__ignoreMap":87},[91,42962,42963],{"class":93,"line":94},[91,42964,15455],{"class":101},[91,42966,42967],{"class":93,"line":105},[91,42968,15943],{"class":15942},[91,42970,42971],{"class":93,"line":121},[91,42972,15948],{"class":101},[91,42974,42975],{"class":93,"line":134},[91,42976,15953],{"class":101},[91,42978,42979],{"class":93,"line":228},[91,42980,15958],{"class":101},[91,42982,42983],{"class":93,"line":250},[91,42984,15963],{"class":101},[91,42986,42987],{"class":93,"line":260},[91,42988,15968],{"class":101},[91,42990,42991],{"class":93,"line":274},[91,42992,15973],{"class":101},[91,42994,42995],{"class":93,"line":284},[91,42996,15943],{"class":15942},[91,42998,42999],{"class":93,"line":299},[91,43000,15465],{"class":101},[16,43002,15984],{},[82,43004,43005],{"className":1934,"code":15987,"language":1936,"meta":87,"style":87},[31,43006,43007,43023,43029,43037,43045,43053,43061,43069,43077,43081,43089,43093,43101,43133,43165,43179,43191,43209,43227,43235,43243],{"__ignoreMap":87},[91,43008,43009,43011,43013,43015,43017,43019,43021],{"class":93,"line":94},[91,43010,156],{"class":101},[91,43012,1945],{"class":159},[91,43014,1948],{"class":97},[91,43016,1951],{"class":97},[91,43018,166],{"class":101},[91,43020,1956],{"class":169},[91,43022,173],{"class":101},[91,43024,43025,43027],{"class":93,"line":105},[91,43026,16010],{"class":97},[91,43028,2205],{"class":101},[91,43030,43031,43033,43035],{"class":93,"line":121},[91,43032,11612],{"class":1172},[91,43034,1208],{"class":566},[91,43036,16021],{"class":108},[91,43038,43039,43041,43043],{"class":93,"line":134},[91,43040,11645],{"class":1172},[91,43042,1208],{"class":566},[91,43044,16021],{"class":108},[91,43046,43047,43049,43051],{"class":93,"line":228},[91,43048,16034],{"class":1172},[91,43050,16037],{"class":566},[91,43052,16021],{"class":108},[91,43054,43055,43057,43059],{"class":93,"line":250},[91,43056,16044],{"class":1172},[91,43058,16037],{"class":566},[91,43060,16021],{"class":108},[91,43062,43063,43065,43067],{"class":93,"line":260},[91,43064,16053],{"class":1172},[91,43066,16037],{"class":566},[91,43068,16021],{"class":108},[91,43070,43071,43073,43075],{"class":93,"line":274},[91,43072,16062],{"class":1172},[91,43074,16037],{"class":566},[91,43076,16021],{"class":108},[91,43078,43079],{"class":93,"line":284},[91,43080,16071],{"class":101},[91,43082,43083,43085,43087],{"class":93,"line":299},[91,43084,493],{"class":101},[91,43086,1945],{"class":159},[91,43088,173],{"class":101},[91,43090,43091],{"class":93,"line":319},[91,43092,1450],{"emptyLinePlaceholder":846},[91,43094,43095,43097,43099],{"class":93,"line":334},[91,43096,156],{"class":101},[91,43098,2118],{"class":159},[91,43100,173],{"class":101},[91,43102,43103,43105,43107,43109,43111,43113,43115,43117,43119,43121,43123,43125,43127,43129,43131],{"class":93,"line":355},[91,43104,2125],{"class":101},[91,43106,4306],{"class":159},[91,43108,16100],{"class":97},[91,43110,166],{"class":101},[91,43112,16105],{"class":169},[91,43114,163],{"class":97},[91,43116,166],{"class":101},[91,43118,16112],{"class":169},[91,43120,16115],{"class":97},[91,43122,166],{"class":101},[91,43124,16120],{"class":169},[91,43126,16123],{"class":97},[91,43128,166],{"class":101},[91,43130,16128],{"class":169},[91,43132,173],{"class":101},[91,43134,43135,43137,43139,43141,43143,43145,43147,43149,43151,43153,43155,43157,43159,43161,43163],{"class":93,"line":364},[91,43136,178],{"class":101},[91,43138,19],{"class":159},[91,43140,15678],{"class":97},[91,43142,166],{"class":101},[91,43144,16143],{"class":169},[91,43146,16146],{"class":97},[91,43148,166],{"class":101},[91,43150,16143],{"class":169},[91,43152,16153],{"class":97},[91,43154,166],{"class":101},[91,43156,13747],{"class":169},[91,43158,163],{"class":97},[91,43160,166],{"class":101},[91,43162,16164],{"class":169},[91,43164,2147],{"class":101},[91,43166,43167,43169,43171,43173,43175,43177],{"class":93,"line":378},[91,43168,178],{"class":101},[91,43170,91],{"class":159},[91,43172,163],{"class":97},[91,43174,166],{"class":101},[91,43176,16179],{"class":169},[91,43178,173],{"class":101},[91,43180,43181,43183,43185,43187,43189],{"class":93,"line":387},[91,43182,16186],{"class":101},[91,43184,792],{"class":159},[91,43186,16191],{"class":101},[91,43188,792],{"class":159},[91,43190,173],{"class":101},[91,43192,43193,43195,43197,43199,43201,43203,43205,43207],{"class":93,"line":402},[91,43194,16186],{"class":101},[91,43196,91],{"class":159},[91,43198,15678],{"class":97},[91,43200,166],{"class":101},[91,43202,16208],{"class":169},[91,43204,16211],{"class":101},[91,43206,91],{"class":159},[91,43208,173],{"class":101},[91,43210,43211,43213,43215,43217,43219,43221,43223,43225],{"class":93,"line":422},[91,43212,16186],{"class":101},[91,43214,16222],{"class":159},[91,43216,15678],{"class":97},[91,43218,166],{"class":101},[91,43220,16229],{"class":169},[91,43222,16232],{"class":101},[91,43224,16222],{"class":159},[91,43226,173],{"class":101},[91,43228,43229,43231,43233],{"class":93,"line":438},[91,43230,277],{"class":101},[91,43232,91],{"class":159},[91,43234,173],{"class":101},[91,43236,43237,43239,43241],{"class":93,"line":458},[91,43238,15729],{"class":101},[91,43240,4306],{"class":159},[91,43242,173],{"class":101},[91,43244,43245,43247,43249],{"class":93,"line":467},[91,43246,493],{"class":101},[91,43248,2118],{"class":159},[91,43250,173],{"class":101},[16,43252,16263,43253,16266],{},[31,43254,1208],{},[49,43256,16270],{"id":16269},[16,43258,16273,43259,16276],{},[31,43260,1112],{},[24,43262,43263,43265],{},[27,43264,16281],{},[27,43266,16284],{},[16,43268,16287],{},[49,43270,6005],{"id":6004},[1112,43272],{"description":16292,"host":16293,"title":16294,"url":16295},[1112,43274],{"description":16298,"host":16299,"title":16300,"url":16301},[829,43276,16304],{},{"title":87,"searchDepth":105,"depth":105,"links":43278},[43279,43280,43281,43282,43283,43284],{"id":15432,"depth":105,"text":15433},{"id":15502,"depth":105,"text":15503},{"id":15753,"depth":105,"text":15754},{"id":15885,"depth":105,"text":15886},{"id":16269,"depth":105,"text":16270},{"id":6004,"depth":105,"text":6005},{},{"title":15421,"description":16314},{"loc":16317},[16322,16323,16324,16325,16326],{"id":16329,"title":16330,"body":43290,"created":15406,"description":17124,"extension":843,"filename":17125,"meta":43951,"navigation":846,"path":17127,"seo":43952,"sitemap":43953,"stem":17130,"subject":2862,"tags":43954,"updated":15406,"volume":853,"__hash__":17133},{"type":8,"value":43291,"toc":43941},[43292,43294,43296,43316,43318,43344,43348,43350,43356,43360,43484,43486,43490,43596,43598,43602,43648,43650,43652,43665,43667,43677,43679,43723,43725,43737,43739,43801,43813,43815,43817,43891,43893,43937,43939],[16,43293,16335],{},[49,43295,16339],{"id":16338},[82,43297,43298],{"className":8427,"code":16342,"language":8429,"meta":87,"style":87},[31,43299,43300,43308],{"__ignoreMap":87},[91,43301,43302,43304,43306],{"class":93,"line":94},[91,43303,15417],{"class":97},[91,43305,8653],{"class":169},[91,43307,16353],{"class":169},[91,43309,43310,43312,43314],{"class":93,"line":105},[91,43311,16358],{"class":97},[91,43313,16361],{"class":169},[91,43315,16353],{"class":169},[49,43317,16367],{"id":16366},[82,43319,43320],{"className":1154,"code":16370,"language":1156,"meta":87,"style":87},[31,43321,43322,43332,43340],{"__ignoreMap":87},[91,43323,43324,43326,43328,43330],{"class":93,"line":94},[91,43325,2574],{"class":566},[91,43327,12107],{"class":566},[91,43329,16381],{"class":97},[91,43331,7549],{"class":101},[91,43333,43334,43336,43338],{"class":93,"line":105},[91,43335,16388],{"class":101},[91,43337,16391],{"class":169},[91,43339,16394],{"class":101},[91,43341,43342],{"class":93,"line":121},[91,43343,9444],{"class":101},[16,43345,43346,16404],{},[31,43347,16403],{},[49,43349,16408],{"id":16407},[16,43351,43352,16414,43354,16417],{},[31,43353,16413],{},[31,43355,16413],{},[16,43357,16420,43358],{},[31,43359,16423],{},[82,43361,43362],{"className":1154,"code":16426,"language":1156,"meta":87,"style":87},[31,43363,43364,43374,43384,43388,43410,43426,43448,43452,43460,43466,43470,43474,43480],{"__ignoreMap":87},[91,43365,43366,43368,43370,43372],{"class":93,"line":94},[91,43367,2499],{"class":566},[91,43369,16435],{"class":101},[91,43371,2505],{"class":566},[91,43373,16440],{"class":169},[91,43375,43376,43378,43380,43382],{"class":93,"line":105},[91,43377,2499],{"class":566},[91,43379,16447],{"class":101},[91,43381,2505],{"class":566},[91,43383,16452],{"class":169},[91,43385,43386],{"class":93,"line":121},[91,43387,1450],{"emptyLinePlaceholder":846},[91,43389,43390,43392,43394,43396,43398,43400,43402,43404,43406,43408],{"class":93,"line":134},[91,43391,2574],{"class":566},[91,43393,16463],{"class":566},[91,43395,16466],{"class":108},[91,43397,1366],{"class":566},[91,43399,16471],{"class":97},[91,43401,795],{"class":101},[91,43403,16476],{"class":169},[91,43405,9612],{"class":101},[91,43407,1179],{"class":566},[91,43409,102],{"class":101},[91,43411,43412,43414,43416,43418,43420,43422,43424],{"class":93,"line":228},[91,43413,2641],{"class":566},[91,43415,16489],{"class":108},[91,43417,1366],{"class":566},[91,43419,16494],{"class":97},[91,43421,795],{"class":101},[91,43423,1578],{"class":108},[91,43425,3487],{"class":101},[91,43427,43428,43430,43432,43434,43436,43438,43440,43442,43444,43446],{"class":93,"line":250},[91,43429,2641],{"class":566},[91,43431,16507],{"class":108},[91,43433,1366],{"class":566},[91,43435,12308],{"class":97},[91,43437,2088],{"class":101},[91,43439,1179],{"class":566},[91,43441,16518],{"class":101},[91,43443,6591],{"class":566},[91,43445,16523],{"class":108},[91,43447,3487],{"class":101},[91,43449,43450],{"class":93,"line":260},[91,43451,1450],{"emptyLinePlaceholder":846},[91,43453,43454,43456,43458],{"class":93,"line":274},[91,43455,16534],{"class":566},[91,43457,16537],{"class":97},[91,43459,2007],{"class":101},[91,43461,43462,43464],{"class":93,"line":284},[91,43463,16544],{"class":101},[91,43465,16547],{"class":566},[91,43467,43468],{"class":93,"line":299},[91,43469,1698],{"class":101},[91,43471,43472],{"class":93,"line":319},[91,43473,1450],{"emptyLinePlaceholder":846},[91,43475,43476,43478],{"class":93,"line":334},[91,43477,2695],{"class":566},[91,43479,16562],{"class":101},[91,43481,43482],{"class":93,"line":355},[91,43483,9444],{"class":101},[49,43485,16570],{"id":16569},[16,43487,16573,43488,16577],{},[31,43489,16576],{},[82,43491,43492],{"className":1934,"code":16580,"language":1936,"meta":87,"style":87},[31,43493,43494,43502,43510,43522,43540,43548,43556,43560,43576,43588],{"__ignoreMap":87},[91,43495,43496,43498,43500],{"class":93,"line":94},[91,43497,156],{"class":101},[91,43499,2118],{"class":159},[91,43501,173],{"class":101},[91,43503,43504,43506,43508],{"class":93,"line":105},[91,43505,2125],{"class":101},[91,43507,160],{"class":159},[91,43509,173],{"class":101},[91,43511,43512,43514,43516,43518,43520],{"class":93,"line":121},[91,43513,178],{"class":101},[91,43515,16],{"class":159},[91,43517,16607],{"class":101},[91,43519,16],{"class":159},[91,43521,173],{"class":101},[91,43523,43524,43526,43528,43530,43532,43534,43536,43538],{"class":93,"line":134},[91,43525,178],{"class":101},[91,43527,16618],{"class":159},[91,43529,16621],{"class":97},[91,43531,166],{"class":101},[91,43533,16626],{"class":169},[91,43535,16629],{"class":101},[91,43537,16618],{"class":159},[91,43539,173],{"class":101},[91,43541,43542,43544,43546],{"class":93,"line":228},[91,43543,15729],{"class":101},[91,43545,160],{"class":159},[91,43547,173],{"class":101},[91,43549,43550,43552,43554],{"class":93,"line":250},[91,43551,493],{"class":101},[91,43553,2118],{"class":159},[91,43555,173],{"class":101},[91,43557,43558],{"class":93,"line":260},[91,43559,1450],{"emptyLinePlaceholder":846},[91,43561,43562,43564,43566,43568,43570,43572,43574],{"class":93,"line":274},[91,43563,156],{"class":101},[91,43565,1945],{"class":159},[91,43567,1948],{"class":97},[91,43569,1951],{"class":97},[91,43571,166],{"class":101},[91,43573,1956],{"class":169},[91,43575,173],{"class":101},[91,43577,43578,43580,43582,43584,43586],{"class":93,"line":284},[91,43579,1968],{"class":566},[91,43581,16676],{"class":108},[91,43583,1366],{"class":566},[91,43585,16466],{"class":97},[91,43587,9313],{"class":101},[91,43589,43590,43592,43594],{"class":93,"line":299},[91,43591,493],{"class":101},[91,43593,1945],{"class":159},[91,43595,173],{"class":101},[49,43597,16694],{"id":16693},[16,43599,16697,43600,16700],{},[31,43601,16403],{},[82,43603,43604],{"className":1154,"code":16703,"language":1156,"meta":87,"style":87},[31,43605,43606,43616,43624,43628,43640,43644],{"__ignoreMap":87},[91,43607,43608,43610,43612,43614],{"class":93,"line":94},[91,43609,2574],{"class":566},[91,43611,12107],{"class":566},[91,43613,16381],{"class":97},[91,43615,7549],{"class":101},[91,43617,43618,43620,43622],{"class":93,"line":105},[91,43619,16388],{"class":101},[91,43621,16391],{"class":169},[91,43623,16394],{"class":101},[91,43625,43626],{"class":93,"line":121},[91,43627,16728],{"class":101},[91,43629,43630,43632,43634,43636,43638],{"class":93,"line":134},[91,43631,16733],{"class":101},[91,43633,16736],{"class":169},[91,43635,64],{"class":101},[91,43637,16741],{"class":169},[91,43639,16394],{"class":101},[91,43641,43642],{"class":93,"line":228},[91,43643,10581],{"class":101},[91,43645,43646],{"class":93,"line":250},[91,43647,9444],{"class":101},[16,43649,16754],{},[11,43651,16758],{"id":16757},[1722,43653,43654,43658,43663],{},[16,43655,16763,43656,16767],{},[91,43657,16766],{},[16,43659,16770,43660,16775],{},[4306,43661,16773],{"href":16773,"rel":43662},[4310],[16,43664,16778],{},[16,43666,16781],{},[4530,43668,43669,43671,43675],{},[27,43670,16786],{},[27,43672,43673,16792],{},[31,43674,16791],{},[27,43676,16795],{},[757,43678,16799],{"id":16798},[82,43680,43681],{"className":6839,"code":16802,"language":6841,"meta":87,"style":87},[31,43682,43683,43691,43699,43707,43715],{"__ignoreMap":87},[91,43684,43685,43687,43689],{"class":93,"line":94},[91,43686,16809],{"class":97},[91,43688,16812],{"class":108},[91,43690,16815],{"class":169},[91,43692,43693,43695,43697],{"class":93,"line":105},[91,43694,16809],{"class":97},[91,43696,16812],{"class":108},[91,43698,16824],{"class":169},[91,43700,43701,43703,43705],{"class":93,"line":121},[91,43702,16809],{"class":97},[91,43704,16812],{"class":108},[91,43706,16833],{"class":169},[91,43708,43709,43711,43713],{"class":93,"line":134},[91,43710,15417],{"class":97},[91,43712,8653],{"class":169},[91,43714,16842],{"class":1343},[91,43716,43717,43719,43721],{"class":93,"line":228},[91,43718,15417],{"class":97},[91,43720,16849],{"class":169},[91,43722,16852],{"class":169},[16,43724,16855],{},[1722,43726,43727,43731],{},[16,43728,43729,16862],{},[91,43730,1728],{},[24,43732,43733],{},[27,43734,43735,16869],{},[91,43736,16322],{},[16,43738,16872],{},[812,43740,43741,43757],{},[3001,43742,43743],{},[3004,43744,43745,43749,43753],{},[3007,43746,43747],{},[792,43748,16883],{},[3007,43750,43751],{},[792,43752,16888],{},[3007,43754,43755],{},[792,43756,16893],{},[3017,43758,43759,43773,43787],{},[3004,43760,43761,43765,43769],{},[3022,43762,43763],{},[792,43764,16902],{},[3022,43766,43767],{},[31,43768,16907],{},[3022,43770,43771,16913],{},[31,43772,16912],{},[3004,43774,43775,43779,43783],{},[3022,43776,43777],{},[792,43778,16920],{},[3022,43780,43781],{},[31,43782,16925],{},[3022,43784,43785,16931],{},[31,43786,16930],{},[3004,43788,43789,43793,43797],{},[3022,43790,43791],{},[792,43792,16791],{},[3022,43794,43795],{},[31,43796,16942],{},[3022,43798,43799,16931],{},[31,43800,16947],{},[82,43802,43803],{"className":6839,"code":16950,"language":6841,"meta":87,"style":87},[31,43804,43805],{"__ignoreMap":87},[91,43806,43807,43809,43811],{"class":93,"line":94},[91,43808,15417],{"class":97},[91,43810,8653],{"class":169},[91,43812,16961],{"class":169},[16,43814,16964],{},[757,43816,16968],{"id":16967},[82,43818,43819],{"className":1154,"code":16971,"language":1156,"meta":87,"style":87},[31,43820,43821,43825,43835,43845,43849,43867,43879,43887],{"__ignoreMap":87},[91,43822,43823],{"class":93,"line":94},[91,43824,16978],{"class":1343},[91,43826,43827,43829,43831,43833],{"class":93,"line":105},[91,43828,2499],{"class":566},[91,43830,16985],{"class":101},[91,43832,2505],{"class":566},[91,43834,16990],{"class":169},[91,43836,43837,43839,43841,43843],{"class":93,"line":121},[91,43838,2499],{"class":566},[91,43840,16997],{"class":101},[91,43842,2505],{"class":566},[91,43844,16440],{"class":169},[91,43846,43847],{"class":93,"line":134},[91,43848,1450],{"emptyLinePlaceholder":846},[91,43850,43851,43853,43855,43857,43859,43861,43863,43865],{"class":93,"line":228},[91,43852,2574],{"class":566},[91,43854,12107],{"class":566},[91,43856,17014],{"class":97},[91,43858,1169],{"class":101},[91,43860,17019],{"class":1172},[91,43862,1176],{"class":101},[91,43864,1179],{"class":566},[91,43866,102],{"class":101},[91,43868,43869,43871,43873,43875,43877],{"class":93,"line":250},[91,43870,2641],{"class":566},[91,43872,17032],{"class":108},[91,43874,1366],{"class":566},[91,43876,17037],{"class":97},[91,43878,9313],{"class":101},[91,43880,43881,43883,43885],{"class":93,"line":260},[91,43882,17044],{"class":101},[91,43884,14877],{"class":97},[91,43886,17049],{"class":101},[91,43888,43889],{"class":93,"line":274},[91,43890,9444],{"class":101},[16,43892,17056],{},[82,43894,43895],{"className":8477,"code":17059,"language":8479,"meta":87,"style":87},[31,43896,43897,43903,43913,43923,43933],{"__ignoreMap":87},[91,43898,43899,43901],{"class":93,"line":94},[91,43900,15325],{"class":169},[91,43902,8789],{"class":101},[91,43904,43905,43907,43909,43911],{"class":93,"line":105},[91,43906,17072],{"class":108},[91,43908,112],{"class":101},[91,43910,17077],{"class":169},[91,43912,7560],{"class":101},[91,43914,43915,43917,43919,43921],{"class":93,"line":121},[91,43916,17084],{"class":108},[91,43918,112],{"class":101},[91,43920,17089],{"class":169},[91,43922,7560],{"class":101},[91,43924,43925,43927,43929,43931],{"class":93,"line":134},[91,43926,17096],{"class":108},[91,43928,112],{"class":101},[91,43930,17101],{"class":169},[91,43932,7560],{"class":101},[91,43934,43935],{"class":93,"line":228},[91,43936,15376],{"class":101},[16,43938,17110],{},[829,43940,17113],{},{"title":87,"searchDepth":105,"depth":105,"links":43942},[43943,43944,43945,43946,43947],{"id":16338,"depth":105,"text":16339},{"id":16366,"depth":105,"text":16367},{"id":16407,"depth":105,"text":16408},{"id":16569,"depth":105,"text":16570},{"id":16693,"depth":105,"text":16694,"children":43948},[43949,43950],{"id":16798,"depth":121,"text":16799},{"id":16967,"depth":121,"text":16968},{},{"title":16330,"description":17124},{"loc":17127},[16322,16324,17132],{"id":17135,"title":17136,"body":43956,"created":17541,"description":17542,"extension":843,"filename":17543,"meta":44282,"navigation":846,"path":17545,"seo":44283,"sitemap":44284,"stem":17548,"subject":17549,"tags":44285,"updated":17541,"volume":1863,"__hash__":17554},{"type":8,"value":43957,"toc":44277},[43958,43960,43962,43964,43966,43971,43977,43983,44113,44119,44121,44127,44201,44207,44211,44213,44215,44275],[16,43959,17141],{},[16,43961,17144],{},[49,43963,17148],{"id":17147},[16,43965,17151],{},[82,43967,43969],{"className":43968,"code":17155,"language":1099,"meta":87},[1097],[31,43970,17155],{"__ignoreMap":87},[16,43972,17160,43973,15747,43975,17167],{},[792,43974,17163],{},[31,43976,17166],{},[16,43978,43979,17172,43981,17175],{},[31,43980,17163],{},[31,43982,17166],{},[82,43984,43985],{"className":1154,"code":17178,"language":1156,"meta":87,"style":87},[31,43986,43987,44003,44013,44041,44051,44063,44079,44087,44091,44099,44103,44109],{"__ignoreMap":87},[91,43988,43989,43991,43993,43995,43997,43999,44001],{"class":93,"line":94},[91,43990,7471],{"class":566},[91,43992,17187],{"class":97},[91,43994,795],{"class":101},[91,43996,17192],{"class":1172},[91,43998,64],{"class":101},[91,44000,17197],{"class":1172},[91,44002,3866],{"class":101},[91,44004,44005,44007,44009,44011],{"class":93,"line":105},[91,44006,2641],{"class":566},[91,44008,17206],{"class":108},[91,44010,1366],{"class":566},[91,44012,17211],{"class":101},[91,44014,44015,44017,44019,44021,44023,44025,44027,44029,44031,44033,44035,44037,44039],{"class":93,"line":121},[91,44016,17216],{"class":566},[91,44018,2662],{"class":101},[91,44020,1349],{"class":566},[91,44022,17223],{"class":101},[91,44024,166],{"class":566},[91,44026,11817],{"class":108},[91,44028,17230],{"class":101},[91,44030,156],{"class":566},[91,44032,17235],{"class":101},[91,44034,11811],{"class":108},[91,44036,17240],{"class":101},[91,44038,17243],{"class":566},[91,44040,3866],{"class":101},[91,44042,44043,44045,44047,44049],{"class":93,"line":134},[91,44044,1382],{"class":566},[91,44046,17252],{"class":108},[91,44048,1366],{"class":566},[91,44050,17257],{"class":101},[91,44052,44053,44055,44057,44059,44061],{"class":93,"line":228},[91,44054,1382],{"class":566},[91,44056,17264],{"class":108},[91,44058,1366],{"class":566},[91,44060,17269],{"class":97},[91,44062,17272],{"class":101},[91,44064,44065,44067,44069,44071,44073,44075,44077],{"class":93,"line":250},[91,44066,8218],{"class":566},[91,44068,2662],{"class":101},[91,44070,2665],{"class":566},[91,44072,17283],{"class":101},[91,44074,17286],{"class":97},[91,44076,17289],{"class":101},[91,44078,17292],{"class":1343},[91,44080,44081,44083,44085],{"class":93,"line":260},[91,44082,17297],{"class":101},[91,44084,166],{"class":566},[91,44086,11734],{"class":101},[91,44088,44089],{"class":93,"line":274},[91,44090,1693],{"class":101},[91,44092,44093,44095,44097],{"class":93,"line":284},[91,44094,17310],{"class":101},[91,44096,13348],{"class":97},[91,44098,17315],{"class":101},[91,44100,44101],{"class":93,"line":299},[91,44102,1698],{"class":101},[91,44104,44105,44107],{"class":93,"line":319},[91,44106,2695],{"class":566},[91,44108,17326],{"class":101},[91,44110,44111],{"class":93,"line":334},[91,44112,137],{"class":101},[16,44114,44115,17336,44117,17340],{},[31,44116,17335],{},[31,44118,17339],{},[49,44120,17344],{"id":17343},[16,44122,17347,44123,15747,44125,17353],{},[792,44124,17350],{},[31,44126,17166],{},[82,44128,44129],{"className":1154,"code":17356,"language":1156,"meta":87,"style":87},[31,44130,44131,44159,44171,44179,44187,44193,44197],{"__ignoreMap":87},[91,44132,44133,44135,44137,44139,44141,44143,44145,44147,44149,44151,44153,44155,44157],{"class":93,"line":94},[91,44134,5626],{"class":566},[91,44136,17365],{"class":101},[91,44138,166],{"class":566},[91,44140,17370],{"class":97},[91,44142,795],{"class":101},[91,44144,7471],{"class":566},[91,44146,795],{"class":101},[91,44148,17379],{"class":1172},[91,44150,64],{"class":101},[91,44152,8343],{"class":1172},[91,44154,64],{"class":101},[91,44156,9452],{"class":1172},[91,44158,3866],{"class":101},[91,44160,44161,44163,44165,44167,44169],{"class":93,"line":105},[91,44162,2439],{"class":566},[91,44164,17396],{"class":101},[91,44166,17399],{"class":97},[91,44168,17289],{"class":101},[91,44170,17404],{"class":1343},[91,44172,44173,44175,44177],{"class":93,"line":121},[91,44174,17310],{"class":101},[91,44176,13348],{"class":97},[91,44178,17413],{"class":101},[91,44180,44181,44183,44185],{"class":93,"line":134},[91,44182,2053],{"class":101},[91,44184,5258],{"class":566},[91,44186,102],{"class":101},[91,44188,44189,44191],{"class":93,"line":228},[91,44190,17426],{"class":97},[91,44192,17429],{"class":101},[91,44194,44195],{"class":93,"line":250},[91,44196,1698],{"class":101},[91,44198,44199],{"class":93,"line":260},[91,44200,1303],{"class":101},[16,44202,44203,17442,44205,17446],{},[31,44204,17350],{},[31,44206,17445],{},[16,44208,17449,44209,17452],{},[31,44210,17163],{},[49,44212,17456],{"id":17455},[16,44214,17459],{},[24,44216,44217,44221,44267],{},[27,44218,44219],{},[792,44220,17466],{},[27,44222,44223,44225,44231],{},[792,44224,17471],{},[24,44226,44227],{},[27,44228,17476,44229,17479],{},[31,44230,17335],{},[82,44232,44233],{"className":1154,"code":17482,"language":1156,"meta":87,"style":87},[31,44234,44235],{"__ignoreMap":87},[91,44236,44237,44239,44241,44243,44245,44247,44249,44251,44253,44255,44257,44259,44261,44263,44265],{"class":93,"line":94},[91,44238,1968],{"class":566},[91,44240,17491],{"class":97},[91,44242,1366],{"class":566},[91,44244,2662],{"class":101},[91,44246,17498],{"class":1172},[91,44248,64],{"class":101},[91,44250,9452],{"class":1172},[91,44252,1176],{"class":101},[91,44254,1179],{"class":566},[91,44256,17509],{"class":108},[91,44258,1235],{"class":101},[91,44260,17514],{"class":108},[91,44262,17517],{"class":101},[91,44264,17399],{"class":97},[91,44266,17522],{"class":101},[27,44268,44269,44271],{},[792,44270,17527],{},[24,44272,44273],{},[27,44274,17532],{},[829,44276,17535],{},{"title":87,"searchDepth":105,"depth":105,"links":44278},[44279,44280,44281],{"id":17147,"depth":105,"text":17148},{"id":17343,"depth":105,"text":17344},{"id":17455,"depth":105,"text":17456},{},{"title":17136,"description":17542},{"loc":17545},[2865,17551,17552,17553],{"id":17556,"title":17557,"body":44287,"created":17676,"description":17677,"extension":843,"filename":17678,"meta":44382,"navigation":846,"path":17680,"seo":44383,"sitemap":44384,"stem":17683,"subject":4438,"tags":44385,"updated":17676,"volume":1863,"__hash__":17687},{"type":8,"value":44288,"toc":44380},[44289,44294,44296,44300,44302,44308,44314,44376,44378],[82,44290,44292],{"className":44291,"code":17563,"language":1099},[1097],[31,44293,17563],{"__ignoreMap":87},[16,44295,17568],{},[16,44297,44298],{},[19,44299],{"alt":21,"src":17573},[16,44301,17576],{},[24,44303,44304,44306],{},[27,44305,17581],{},[27,44307,17584],{},[16,44309,44310,17590,44312,17594],{},[31,44311,17589],{},[31,44313,17593],{},[82,44315,44316],{"className":8477,"code":17597,"language":8479,"meta":87,"style":87},[31,44317,44318,44322,44332,44338,44348,44358,44368,44372],{"__ignoreMap":87},[91,44319,44320],{"class":93,"line":94},[91,44321,8486],{"class":101},[91,44323,44324,44326,44328,44330],{"class":93,"line":105},[91,44325,17608],{"class":108},[91,44327,1208],{"class":101},[91,44329,17613],{"class":169},[91,44331,7560],{"class":101},[91,44333,44334,44336],{"class":93,"line":121},[91,44335,17620],{"class":108},[91,44337,17623],{"class":101},[91,44339,44340,44342,44344,44346],{"class":93,"line":134},[91,44341,17628],{"class":108},[91,44343,1208],{"class":101},[91,44345,17633],{"class":169},[91,44347,7560],{"class":101},[91,44349,44350,44352,44354,44356],{"class":93,"line":228},[91,44351,17640],{"class":108},[91,44353,1208],{"class":101},[91,44355,17645],{"class":169},[91,44357,7560],{"class":101},[91,44359,44360,44362,44364,44366],{"class":93,"line":250},[91,44361,17652],{"class":108},[91,44363,1208],{"class":101},[91,44365,17657],{"class":169},[91,44367,7560],{"class":101},[91,44369,44370],{"class":93,"line":260},[91,44371,1693],{"class":101},[91,44373,44374],{"class":93,"line":274},[91,44375,137],{"class":101},[16,44377,17670],{},[829,44379,17673],{},{"title":87,"searchDepth":105,"depth":105,"links":44381},[],{},{"title":17557,"description":17677},{"loc":17680},[4438,17685,17686],{"id":17689,"title":17690,"body":44387,"created":18076,"description":18077,"extension":843,"filename":18078,"meta":44671,"navigation":846,"path":18080,"seo":44672,"sitemap":44673,"stem":18083,"subject":18084,"tags":44674,"updated":6033,"volume":853,"__hash__":18089},{"type":8,"value":44388,"toc":44665},[44389,44393,44405,44407,44415,44419,44421,44423,44427,44429,44431,44483,44487,44495,44497,44499,44501,44509,44517,44519,44521,44637,44641,44643,44645,44647,44659,44661,44663],[16,44390,17695,44391,17699],{},[31,44392,17698],{},[4530,44394,44395,44399,44401,44403],{},[27,44396,17704,44397,17707],{},[31,44398,17698],{},[27,44400,17710],{},[27,44402,17713],{},[27,44404,17716],{},[16,44406,17719],{},[4530,44408,44409,44411,44413],{},[27,44410,17724],{},[27,44412,17727],{},[27,44414,17730],{},[16,44416,17733,44417,17737],{},[31,44418,17736],{},[1112,44420],{"description":17740,"favicon":17741,"host":17742,"title":17743,"url":17744},[1112,44422],{"description":17747,"favicon":17741,"host":17742,"title":17748,"url":17749},[16,44424,17752,44425,17755],{},[31,44426,17698],{},[49,44428,17759],{"id":17758},[16,44430,17762],{},[812,44432,44433,44443],{},[3001,44434,44435],{},[3004,44436,44437,44439,44441],{},[3007,44438,17771],{},[3007,44440,17774],{},[3007,44442,17777],{},[3017,44444,44445,44459,44471],{},[3004,44446,44447,44453,44455],{},[3022,44448,44449,64,44451],{},[31,44450,17786],{},[31,44452,17789],{},[3022,44454,17792],{},[3022,44456,44457],{},[31,44458,17797],{},[3004,44460,44461,44465,44467],{},[3022,44462,44463],{},[31,44464,17698],{},[3022,44466,17806],{},[3022,44468,44469],{},[31,44470,17811],{},[3004,44472,44473,44477,44479],{},[3022,44474,44475,17819],{},[31,44476,17818],{},[3022,44478,17822],{},[3022,44480,44481],{},[31,44482,17811],{},[16,44484,17829,44485,17832],{},[31,44486,17698],{},[16,44488,44489,17837,44491,5733,44493,17843],{},[31,44490,17811],{},[31,44492,17811],{},[31,44494,17842],{},[1112,44496],{"description":17846,"favicon":17741,"host":17742,"title":17847,"url":17848},[16,44498,17851],{},[49,44500,17855],{"id":17854},[16,44502,17858,44503,17861,44505,17864,44507,15394],{},[31,44504,17698],{},[31,44506,17818],{},[792,44508,17867],{},[16,44510,17870,44511,34,44513,17876,44515,17879],{},[31,44512,8361],{},[31,44514,17875],{},[31,44516,8361],{},[49,44518,17883],{"id":17882},[16,44520,17886],{},[82,44522,44523],{"className":6839,"code":17889,"language":6841,"meta":87,"style":87},[31,44524,44525,44529,44547,44555,44563,44571,44577,44581,44585,44603,44609,44613,44631],{"__ignoreMap":87},[91,44526,44527],{"class":93,"line":94},[91,44528,17896],{"class":1343},[91,44530,44531,44533,44535,44537,44539,44541,44543,44545],{"class":93,"line":105},[91,44532,17901],{"class":97},[91,44534,17904],{"class":169},[91,44536,17907],{"class":169},[91,44538,17910],{"class":169},[91,44540,17913],{"class":169},[91,44542,17916],{"class":101},[91,44544,2139],{"class":169},[91,44546,8442],{"class":108},[91,44548,44549,44551,44553],{"class":93,"line":121},[91,44550,17925],{"class":108},[91,44552,17928],{"class":169},[91,44554,8442],{"class":108},[91,44556,44557,44559,44561],{"class":93,"line":134},[91,44558,17925],{"class":108},[91,44560,17937],{"class":169},[91,44562,8442],{"class":108},[91,44564,44565,44567,44569],{"class":93,"line":228},[91,44566,17925],{"class":108},[91,44568,17946],{"class":169},[91,44570,8442],{"class":108},[91,44572,44573,44575],{"class":93,"line":250},[91,44574,17953],{"class":108},[91,44576,17956],{"class":169},[91,44578,44579],{"class":93,"line":260},[91,44580,1450],{"emptyLinePlaceholder":846},[91,44582,44583],{"class":93,"line":274},[91,44584,17965],{"class":1343},[91,44586,44587,44589,44591,44593,44595,44597,44599,44601],{"class":93,"line":284},[91,44588,17901],{"class":97},[91,44590,17904],{"class":169},[91,44592,17974],{"class":169},[91,44594,17977],{"class":169},[91,44596,17913],{"class":169},[91,44598,17916],{"class":101},[91,44600,17984],{"class":169},[91,44602,8442],{"class":108},[91,44604,44605,44607],{"class":93,"line":299},[91,44606,17953],{"class":108},[91,44608,17993],{"class":169},[91,44610,44611],{"class":93,"line":319},[91,44612,1450],{"emptyLinePlaceholder":846},[91,44614,44615,44617,44619,44621,44623,44625,44627,44629],{"class":93,"line":334},[91,44616,17901],{"class":97},[91,44618,17904],{"class":169},[91,44620,17974],{"class":169},[91,44622,18008],{"class":169},[91,44624,17913],{"class":169},[91,44626,17916],{"class":101},[91,44628,18015],{"class":169},[91,44630,8442],{"class":108},[91,44632,44633,44635],{"class":93,"line":355},[91,44634,17953],{"class":108},[91,44636,17993],{"class":169},[16,44638,18026,44639,18029],{},[31,44640,17736],{},[16,44642,18032],{},[49,44644,18036],{"id":18035},[16,44646,18039],{},[24,44648,44649,44651,44653,44655],{},[27,44650,18044],{},[27,44652,18047],{},[27,44654,18050],{},[27,44656,18053,44657,18056],{},[31,44658,17736],{},[1112,44660],{"description":18059,"favicon":17741,"host":17742,"title":18060,"url":18061},[1112,44662],{"description":18064,"favicon":17741,"host":17742,"title":18065,"url":18066},[829,44664,18069],{},{"title":87,"searchDepth":105,"depth":105,"links":44666},[44667,44668,44669,44670],{"id":17758,"depth":105,"text":17759},{"id":17854,"depth":105,"text":17855},{"id":17882,"depth":105,"text":17883},{"id":18035,"depth":105,"text":18036},{},{"title":17690,"description":18077},{"loc":18080},[17901,18086,18087,18088,12668,4954],{"id":18091,"title":18092,"body":44676,"created":18462,"description":18463,"extension":843,"filename":18464,"meta":44954,"navigation":846,"path":18466,"seo":44955,"sitemap":44956,"stem":18469,"subject":4438,"tags":44957,"updated":6033,"volume":853,"__hash__":18471},{"type":8,"value":44677,"toc":44947},[44678,44680,44682,44690,44734,44740,44744,44746,44748,44750,44756,44760,44764,44766,44768,44770,44772,44804,44808,44810,44812,44820,44825,44835,44943,44945],[16,44679,18097],{},[49,44681,18101],{"id":18100},[16,44683,18104,44684,15747,44686,18110,44688,18114],{},[31,44685,18107],{},[31,44687,962],{},[31,44689,18113],{},[82,44691,44692],{"className":1000,"code":18117,"language":1002,"meta":87,"style":87},[31,44693,44694,44698,44702,44706,44710,44714,44718,44722,44726,44730],{"__ignoreMap":87},[91,44695,44696],{"class":93,"line":94},[91,44697,18124],{},[91,44699,44700],{"class":93,"line":105},[91,44701,18129],{},[91,44703,44704],{"class":93,"line":121},[91,44705,18134],{},[91,44707,44708],{"class":93,"line":134},[91,44709,18139],{},[91,44711,44712],{"class":93,"line":228},[91,44713,3487],{},[91,44715,44716],{"class":93,"line":250},[91,44717,18148],{},[91,44719,44720],{"class":93,"line":260},[91,44721,1450],{"emptyLinePlaceholder":846},[91,44723,44724],{"class":93,"line":274},[91,44725,18157],{},[91,44727,44728],{"class":93,"line":284},[91,44729,18162],{},[91,44731,44732],{"class":93,"line":299},[91,44733,137],{},[16,44735,18169,44736,18173,44738,18177],{},[31,44737,18172],{},[31,44739,18176],{},[16,44741,44742],{},[19,44743],{"alt":18182,"src":18183},[16,44745,18186],{},[49,44747,18190],{"id":18189},[757,44749,18194],{"id":18193},[16,44751,18197,44752,18200,44754,18204],{},[31,44753,18172],{},[31,44755,18203],{},[16,44757,44758],{},[19,44759],{"alt":18209,"src":18210},[16,44761,44762,18216],{},[31,44763,18215],{},[1112,44765],{"description":18219,"host":1714,"image":18220,"title":18221,"url":18222},[1112,44767],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[757,44769,18232],{"id":18231},[16,44771,18235],{},[82,44773,44774],{"className":1000,"code":18238,"language":1002,"meta":87,"style":87},[31,44775,44776,44780,44784,44788,44792,44796,44800],{"__ignoreMap":87},[91,44777,44778],{"class":93,"line":94},[91,44779,18157],{},[91,44781,44782],{"class":93,"line":105},[91,44783,18162],{},[91,44785,44786],{"class":93,"line":121},[91,44787,1674],{},[91,44789,44790],{"class":93,"line":134},[91,44791,18257],{},[91,44793,44794],{"class":93,"line":228},[91,44795,18262],{},[91,44797,44798],{"class":93,"line":250},[91,44799,18267],{},[91,44801,44802],{"class":93,"line":260},[91,44803,137],{},[16,44805,18274,44806,18278],{},[31,44807,18277],{},[1112,44809],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[771,44811,18284],{"id":18283},[16,44813,18287,44814,18290,44816,18294,44818,18298],{},[31,44815,18277],{},[31,44817,18293],{},[31,44819,18297],{},[82,44821,44823],{"className":44822,"code":18302,"language":1099,"meta":87},[1097],[31,44824,18302],{"__ignoreMap":87},[16,44826,18307,44827,18311,44829,18315,44831,5733,44833,18322],{},[31,44828,18310],{},[31,44830,18314],{},[31,44832,18318],{},[31,44834,18321],{},[82,44836,44837],{"className":1000,"code":18325,"language":1002,"meta":87,"style":87},[31,44838,44839,44843,44847,44851,44855,44859,44863,44867,44871,44875,44879,44883,44887,44891,44895,44899,44903,44907,44911,44915,44919,44923,44927,44931,44935,44939],{"__ignoreMap":87},[91,44840,44841],{"class":93,"line":94},[91,44842,18332],{},[91,44844,44845],{"class":93,"line":105},[91,44846,1450],{"emptyLinePlaceholder":846},[91,44848,44849],{"class":93,"line":121},[91,44850,18341],{},[91,44852,44853],{"class":93,"line":134},[91,44854,18346],{},[91,44856,44857],{"class":93,"line":228},[91,44858,18351],{},[91,44860,44861],{"class":93,"line":250},[91,44862,18356],{},[91,44864,44865],{"class":93,"line":260},[91,44866,18361],{},[91,44868,44869],{"class":93,"line":274},[91,44870,18366],{},[91,44872,44873],{"class":93,"line":284},[91,44874,18371],{},[91,44876,44877],{"class":93,"line":299},[91,44878,1674],{},[91,44880,44881],{"class":93,"line":319},[91,44882,18380],{},[91,44884,44885],{"class":93,"line":334},[91,44886,18385],{},[91,44888,44889],{"class":93,"line":355},[91,44890,18390],{},[91,44892,44893],{"class":93,"line":364},[91,44894,4267],{},[91,44896,44897],{"class":93,"line":378},[91,44898,18399],{},[91,44900,44901],{"class":93,"line":387},[91,44902,18404],{},[91,44904,44905],{"class":93,"line":402},[91,44906,1693],{},[91,44908,44909],{"class":93,"line":422},[91,44910,1674],{},[91,44912,44913],{"class":93,"line":438},[91,44914,18417],{},[91,44916,44917],{"class":93,"line":458},[91,44918,18422],{},[91,44920,44921],{"class":93,"line":467},[91,44922,1693],{},[91,44924,44925],{"class":93,"line":481},[91,44926,1674],{},[91,44928,44929],{"class":93,"line":490},[91,44930,18435],{},[91,44932,44933],{"class":93,"line":3310},[91,44934,18440],{},[91,44936,44937],{"class":93,"line":3315},[91,44938,18445],{},[91,44940,44941],{"class":93,"line":3321},[91,44942,137],{},[16,44944,18452],{},[829,44946,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":44948},[44949,44950],{"id":18100,"depth":105,"text":18101},{"id":18189,"depth":105,"text":18190,"children":44951},[44952,44953],{"id":18193,"depth":121,"text":18194},{"id":18231,"depth":121,"text":18232},{},{"title":18092,"description":18463},{"loc":18466},[1511,1002,4954],{"id":18473,"title":18474,"body":44959,"created":18579,"description":18580,"extension":843,"filename":18581,"meta":45043,"navigation":846,"path":18583,"seo":45044,"sitemap":45045,"stem":18586,"subject":15047,"tags":45046,"updated":18579,"volume":853,"__hash__":18590},{"type":8,"value":44960,"toc":45041},[44961,44965,44969,45035,45039],[16,44962,18479,44963,18483],{},[792,44964,18482],{},[16,44966,18486,44967,18490],{},[31,44968,18489],{},[82,44970,44971],{"className":147,"code":18493,"language":149,"meta":87,"style":87},[31,44972,44973,44987,44991,44995,44999,45003,45007,45011,45015,45019,45023,45027],{"__ignoreMap":87},[91,44974,44975,44977,44979,44981,44983,44985],{"class":93,"line":94},[91,44976,156],{"class":101},[91,44978,1945],{"class":159},[91,44980,18504],{"class":97},[91,44982,166],{"class":101},[91,44984,18509],{"class":169},[91,44986,173],{"class":101},[91,44988,44989],{"class":93,"line":105},[91,44990,8486],{"class":101},[91,44992,44993],{"class":93,"line":121},[91,44994,18520],{"class":101},[91,44996,44997],{"class":93,"line":134},[91,44998,18525],{"class":101},[91,45000,45001],{"class":93,"line":228},[91,45002,18530],{"class":101},[91,45004,45005],{"class":93,"line":250},[91,45006,18535],{"class":101},[91,45008,45009],{"class":93,"line":260},[91,45010,18540],{"class":101},[91,45012,45013],{"class":93,"line":274},[91,45014,18545],{"class":101},[91,45016,45017],{"class":93,"line":284},[91,45018,10581],{"class":101},[91,45020,45021],{"class":93,"line":299},[91,45022,18554],{"class":101},[91,45024,45025],{"class":93,"line":319},[91,45026,137],{"class":101},[91,45028,45029,45031,45033],{"class":93,"line":334},[91,45030,493],{"class":101},[91,45032,1945],{"class":159},[91,45034,173],{"class":101},[16,45036,18569,45037,18573],{},[792,45038,18572],{},[829,45040,18576],{},{"title":87,"searchDepth":105,"depth":105,"links":45042},[],{},{"title":18474,"description":18580},{"loc":18583},[18588,149,18589],{"id":18592,"title":18593,"body":45048,"created":18884,"description":18885,"extension":843,"filename":18886,"meta":45262,"navigation":846,"path":18888,"seo":45263,"sitemap":45264,"stem":18891,"subject":18892,"tags":45265,"updated":18884,"volume":853,"__hash__":18896},{"type":8,"value":45049,"toc":45256},[45050,45054,45056,45060,45062,45070,45076,45078,45080,45084,45092,45096,45102,45104,45114,45116,45118,45120,45184,45186,45242,45246,45248,45250,45252,45254],[16,45051,18598,45052,18602],{},[31,45053,18601],{},[16,45055,18605],{},[16,45057,45058],{},[19,45059],{"alt":18610,"src":18611},[49,45061,18615],{"id":18614},[16,45063,18618,45064,5321,45066,18625,45068,18628],{},[31,45065,18621],{},[31,45067,18624],{},[31,45069,18621],{},[16,45071,18631,45072,18634,45074,18638],{},[31,45073,8361],{},[31,45075,18637],{},[16,45077,18641],{},[49,45079,18645],{"id":18644},[16,45081,18648,45082,18652],{},[31,45083,18651],{},[16,45085,18655,45086,18659,45088,64,45090,18666],{},[31,45087,18658],{},[31,45089,18662],{},[31,45091,18665],{},[16,45093,45094],{},[19,45095],{"alt":18671,"src":18672},[16,45097,45098,18677,45100,18681],{},[31,45099,18658],{},[31,45101,18680],{},[16,45103,18684],{},[24,45105,45106,45110],{},[27,45107,45108,18691],{},[31,45109,18662],{},[27,45111,45112,18696],{},[31,45113,18665],{},[16,45115,18699],{},[49,45117,18703],{"id":18702},[16,45119,18706],{},[82,45121,45122],{"className":7462,"code":18709,"language":7464,"meta":87,"style":87},[31,45123,45124,45140,45144,45152,45168,45172,45176,45180],{"__ignoreMap":87},[91,45125,45126,45128,45130,45132,45134,45136,45138],{"class":93,"line":94},[91,45127,1968],{"class":566},[91,45129,18718],{"class":108},[91,45131,1366],{"class":566},[91,45133,1390],{"class":566},[91,45135,18725],{"class":101},[91,45137,18728],{"class":97},[91,45139,9313],{"class":101},[91,45141,45142],{"class":93,"line":105},[91,45143,1450],{"emptyLinePlaceholder":846},[91,45145,45146,45148,45150],{"class":93,"line":121},[91,45147,18739],{"class":101},[91,45149,812],{"class":97},[91,45151,9266],{"class":101},[91,45153,45154,45156,45158,45160,45162,45164,45166],{"class":93,"line":134},[91,45155,18748],{"class":101},[91,45157,13083],{"class":97},[91,45159,1169],{"class":101},[91,45161,18755],{"class":1172},[91,45163,1176],{"class":101},[91,45165,1179],{"class":566},[91,45167,18762],{"class":101},[91,45169,45170],{"class":93,"line":228},[91,45171,18767],{"class":101},[91,45173,45174],{"class":93,"line":250},[91,45175,18772],{"class":101},[91,45177,45178],{"class":93,"line":260},[91,45179,18777],{"class":101},[91,45181,45182],{"class":93,"line":274},[91,45183,3487],{"class":101},[16,45185,18784],{},[82,45187,45188],{"className":7462,"code":18787,"language":7464,"meta":87,"style":87},[31,45189,45190,45206,45234],{"__ignoreMap":87},[91,45191,45192,45194,45196,45198,45200,45202,45204],{"class":93,"line":94},[91,45193,1968],{"class":566},[91,45195,18718],{"class":108},[91,45197,1366],{"class":566},[91,45199,1390],{"class":566},[91,45201,18725],{"class":101},[91,45203,18728],{"class":97},[91,45205,9313],{"class":101},[91,45207,45208,45210,45212,45214,45216,45218,45220,45222,45224,45226,45228,45230,45232],{"class":93,"line":105},[91,45209,18810],{"class":566},[91,45211,1976],{"class":108},[91,45213,1235],{"class":101},[91,45215,18817],{"class":97},[91,45217,18820],{"class":101},[91,45219,13083],{"class":97},[91,45221,1169],{"class":101},[91,45223,18755],{"class":1172},[91,45225,1176],{"class":101},[91,45227,1179],{"class":566},[91,45229,18833],{"class":101},[91,45231,18836],{"class":97},[91,45233,18839],{"class":101},[91,45235,45236,45238,45240],{"class":93,"line":121},[91,45237,18844],{"class":101},[91,45239,18847],{"class":97},[91,45241,9313],{"class":101},[16,45243,18852,45244,18856],{},[31,45245,18855],{},[49,45247,6005],{"id":6004},[1112,45249],{"description":18861,"host":18862,"title":18863,"url":18864},[1112,45251],{"description":18867,"host":5541,"title":18868,"url":18869,"favicon":9248},[1112,45253],{"description":18872,"host":5541,"title":18873,"url":18874,"favicon":9248},[829,45255,18877],{},{"title":87,"searchDepth":105,"depth":105,"links":45257},[45258,45259,45260,45261],{"id":18614,"depth":105,"text":18615},{"id":18644,"depth":105,"text":18645},{"id":18702,"depth":105,"text":18703},{"id":6004,"depth":105,"text":6005},{},{"title":18593,"description":18885},{"loc":18888},[10141,18088,18894,18895,14430],{"id":18898,"title":18899,"body":45267,"created":19588,"description":19589,"extension":843,"filename":19590,"meta":45824,"navigation":846,"path":19592,"seo":45825,"sitemap":45826,"stem":19595,"subject":851,"tags":45827,"updated":19588,"volume":1863,"__hash__":19597},{"type":8,"value":45268,"toc":45819},[45269,45271,45307,45309,45311,45313,45353,45357,45359,45361,45363,45365,45401,45423,45429,45433,45435,45437,45439,45523,45531,45553,45559,45599,45605,45729,45739,45741,45743,45811,45817],[16,45270,18904],{},[812,45272,45273,45285],{},[3001,45274,45275],{},[3004,45276,45277,45281],{},[3007,45278,45279],{},[31,45280,18915],{},[3007,45282,45283],{},[31,45284,18920],{},[3017,45286,45287,45297],{},[3004,45288,45289,45293],{},[3022,45290,45291],{},[31,45292,18929],{},[3022,45294,45295],{},[31,45296,18934],{},[3004,45298,45299,45303],{},[3022,45300,45301],{},[31,45302,18941],{},[3022,45304,45305],{},[31,45306,18946],{},[16,45308,18949],{},[49,45310,18953],{"id":18952},[1112,45312],{"host":5599,"title":18956,"url":18957,"description":18958,"image":18959,"favicon":5598},[82,45314,45315],{"className":147,"code":18962,"language":149,"meta":87,"style":87},[31,45316,45317,45335],{"__ignoreMap":87},[91,45318,45319,45321,45323,45325,45327,45329,45331,45333],{"class":93,"line":94},[91,45320,156],{"class":101},[91,45322,16],{"class":159},[91,45324,163],{"class":97},[91,45326,166],{"class":101},[91,45328,18977],{"class":169},[91,45330,12566],{"class":101},[91,45332,16],{"class":159},[91,45334,173],{"class":101},[91,45336,45337,45339,45341,45343,45345,45347,45349,45351],{"class":93,"line":105},[91,45338,156],{"class":101},[91,45340,16],{"class":159},[91,45342,163],{"class":97},[91,45344,166],{"class":101},[91,45346,18996],{"class":169},[91,45348,12566],{"class":101},[91,45350,16],{"class":159},[91,45352,173],{"class":101},[16,45354,19005,45355,19009],{},[31,45356,19008],{},[49,45358,19013],{"id":19012},[16,45360,19016],{},[1112,45362],{"host":5599,"title":18956,"url":19019,"description":18958,"image":18959,"favicon":5598},[1112,45364],{"host":5599,"title":19022,"url":19023,"description":19024,"image":19025,"favicon":5598},[82,45366,45367],{"className":84,"code":19028,"language":86,"meta":87,"style":87},[31,45368,45369,45375,45381,45387,45393,45397],{"__ignoreMap":87},[91,45370,45371,45373],{"class":93,"line":94},[91,45372,19035],{"class":566},[91,45374,102],{"class":101},[91,45376,45377,45379],{"class":93,"line":105},[91,45378,19042],{"class":101},[91,45380,19045],{"class":5466},[91,45382,45383,45385],{"class":93,"line":121},[91,45384,19050],{"class":101},[91,45386,19053],{"class":5466},[91,45388,45389,45391],{"class":93,"line":134},[91,45390,19058],{"class":101},[91,45392,19061],{"class":5466},[91,45394,45395],{"class":93,"line":228},[91,45396,19066],{"class":101},[91,45398,45399],{"class":93,"line":250},[91,45400,137],{"class":101},[82,45402,45403],{"className":147,"code":19073,"language":149,"meta":87,"style":87},[31,45404,45405],{"__ignoreMap":87},[91,45406,45407,45409,45411,45413,45415,45417,45419,45421],{"class":93,"line":94},[91,45408,156],{"class":101},[91,45410,16],{"class":159},[91,45412,163],{"class":97},[91,45414,166],{"class":101},[91,45416,19088],{"class":169},[91,45418,12566],{"class":101},[91,45420,16],{"class":159},[91,45422,173],{"class":101},[16,45424,45425,19100,45427,19104],{},[31,45426,19099],{},[31,45428,19103],{},[16,45430,45431],{},[19,45432],{"alt":21,"src":19109},[16,45434,19112],{},[1112,45436],{"host":1714,"title":19115,"url":19116,"description":19117,"image":19118},[16,45438,19121],{},[82,45440,45441],{"className":84,"code":19124,"language":86,"meta":87,"style":87},[31,45442,45443,45447,45453,45459,45465,45471,45477,45481,45485,45491,45499,45507,45515,45519],{"__ignoreMap":87},[91,45444,45445],{"class":93,"line":94},[91,45446,1450],{"emptyLinePlaceholder":846},[91,45448,45449,45451],{"class":93,"line":105},[91,45450,19135],{"class":566},[91,45452,19138],{"class":101},[91,45454,45455,45457],{"class":93,"line":121},[91,45456,19035],{"class":566},[91,45458,102],{"class":101},[91,45460,45461,45463],{"class":93,"line":134},[91,45462,19149],{"class":101},[91,45464,19045],{"class":5466},[91,45466,45467,45469],{"class":93,"line":228},[91,45468,19156],{"class":101},[91,45470,19053],{"class":5466},[91,45472,45473,45475],{"class":93,"line":250},[91,45474,19163],{"class":101},[91,45476,19061],{"class":5466},[91,45478,45479],{"class":93,"line":260},[91,45480,14989],{"class":101},[91,45482,45483],{"class":93,"line":274},[91,45484,137],{"class":101},[91,45486,45487,45489],{"class":93,"line":284},[91,45488,19178],{"class":566},[91,45490,19181],{"class":101},[91,45492,45493,45495,45497],{"class":93,"line":299},[91,45494,19149],{"class":101},[91,45496,19188],{"class":5466},[91,45498,118],{"class":101},[91,45500,45501,45503,45505],{"class":93,"line":319},[91,45502,19156],{"class":101},[91,45504,19197],{"class":5466},[91,45506,118],{"class":101},[91,45508,45509,45511,45513],{"class":93,"line":334},[91,45510,19163],{"class":101},[91,45512,19206],{"class":5466},[91,45514,118],{"class":101},[91,45516,45517],{"class":93,"line":355},[91,45518,14989],{"class":101},[91,45520,45521],{"class":93,"line":364},[91,45522,137],{"class":101},[16,45524,18274,45525,19222,45527,19226,45529,19230],{},[31,45526,19221],{},[31,45528,19225],{},[31,45530,19229],{},[82,45532,45533],{"className":147,"code":19233,"language":149,"meta":87,"style":87},[31,45534,45535],{"__ignoreMap":87},[91,45536,45537,45539,45541,45543,45545,45547,45549,45551],{"class":93,"line":94},[91,45538,156],{"class":101},[91,45540,149],{"class":159},[91,45542,163],{"class":97},[91,45544,166],{"class":101},[91,45546,19248],{"class":169},[91,45548,12566],{"class":101},[91,45550,149],{"class":159},[91,45552,173],{"class":101},[16,45554,19257,45555,19260,45557,19263],{},[31,45556,149],{},[31,45558,19221],{},[82,45560,45561],{"className":147,"code":19266,"language":149,"meta":87,"style":87},[31,45562,45563,45581],{"__ignoreMap":87},[91,45564,45565,45567,45569,45571,45573,45575,45577,45579],{"class":93,"line":94},[91,45566,156],{"class":101},[91,45568,160],{"class":159},[91,45570,163],{"class":97},[91,45572,166],{"class":101},[91,45574,19281],{"class":169},[91,45576,19284],{"class":101},[91,45578,160],{"class":159},[91,45580,173],{"class":101},[91,45582,45583,45585,45587,45589,45591,45593,45595,45597],{"class":93,"line":105},[91,45584,156],{"class":101},[91,45586,160],{"class":159},[91,45588,163],{"class":97},[91,45590,166],{"class":101},[91,45592,19301],{"class":169},[91,45594,19284],{"class":101},[91,45596,160],{"class":159},[91,45598,173],{"class":101},[16,45600,19310,45601,19314,45603,19318],{},[31,45602,19313],{},[31,45604,19317],{},[82,45606,45607],{"className":1154,"code":19321,"language":1156,"meta":87,"style":87},[31,45608,45609,45613,45617,45621,45637,45657,45671,45683,45705,45717,45725],{"__ignoreMap":87},[91,45610,45611],{"class":93,"line":94},[91,45612,2559],{"class":1343},[91,45614,45615],{"class":93,"line":105},[91,45616,19332],{"class":1343},[91,45618,45619],{"class":93,"line":121},[91,45620,2569],{"class":1343},[91,45622,45623,45625,45627,45629,45631,45633,45635],{"class":93,"line":134},[91,45624,7471],{"class":566},[91,45626,19343],{"class":97},[91,45628,795],{"class":101},[91,45630,19348],{"class":1172},[91,45632,1208],{"class":566},[91,45634,19353],{"class":97},[91,45636,3866],{"class":101},[91,45638,45639,45641,45643,45645,45647,45649,45651,45653,45655],{"class":93,"line":228},[91,45640,19360],{"class":101},[91,45642,19363],{"class":97},[91,45644,795],{"class":101},[91,45646,1442],{"class":566},[91,45648,19370],{"class":101},[91,45650,19373],{"class":169},[91,45652,64],{"class":101},[91,45654,1442],{"class":566},[91,45656,19380],{"class":101},[91,45658,45659,45661,45663,45665,45667,45669],{"class":93,"line":250},[91,45660,8218],{"class":566},[91,45662,19387],{"class":101},[91,45664,9382],{"class":566},[91,45666,19392],{"class":101},[91,45668,19395],{"class":108},[91,45670,3866],{"class":101},[91,45672,45673,45675,45677,45679,45681],{"class":93,"line":260},[91,45674,19402],{"class":101},[91,45676,19405],{"class":97},[91,45678,795],{"class":101},[91,45680,19373],{"class":169},[91,45682,1594],{"class":101},[91,45684,45685,45687,45689,45691,45693,45695,45697,45699,45701,45703],{"class":93,"line":274},[91,45686,12893],{"class":101},[91,45688,5258],{"class":566},[91,45690,19420],{"class":566},[91,45692,19387],{"class":101},[91,45694,9382],{"class":566},[91,45696,19392],{"class":101},[91,45698,19429],{"class":108},[91,45700,19432],{"class":101},[91,45702,1442],{"class":566},[91,45704,1445],{"class":101},[91,45706,45707,45709,45711,45713,45715],{"class":93,"line":284},[91,45708,19441],{"class":101},[91,45710,9263],{"class":97},[91,45712,795],{"class":101},[91,45714,19448],{"class":108},[91,45716,19451],{"class":101},[91,45718,45719,45721,45723],{"class":93,"line":299},[91,45720,19456],{"class":101},[91,45722,166],{"class":566},[91,45724,19461],{"class":101},[91,45726,45727],{"class":93,"line":319},[91,45728,137],{"class":101},[16,45730,19468,45731,19471,45733,19474,45735,19478,45737,19481],{},[31,45732,7479],{},[31,45734,149],{},[31,45736,19477],{},[31,45738,19178],{},[49,45740,19485],{"id":19484},[1112,45742],{"host":10802,"title":19488,"url":19489},[82,45744,45745],{"className":1154,"code":19492,"language":1156,"meta":87,"style":87},[31,45746,45747,45765,45771,45777,45799,45803,45807],{"__ignoreMap":87},[91,45748,45749,45751,45753,45755,45757,45759,45761,45763],{"class":93,"line":94},[91,45750,1968],{"class":566},[91,45752,19501],{"class":108},[91,45754,1366],{"class":566},[91,45756,5025],{"class":101},[91,45758,19508],{"class":97},[91,45760,795],{"class":101},[91,45762,19513],{"class":169},[91,45764,1594],{"class":101},[91,45766,45767,45769],{"class":93,"line":105},[91,45768,5226],{"class":566},[91,45770,19522],{"class":101},[91,45772,45773,45775],{"class":93,"line":121},[91,45774,7717],{"class":566},[91,45776,102],{"class":101},[91,45778,45779,45781,45783,45785,45787,45789,45791,45793,45795,45797],{"class":93,"line":134},[91,45780,19533],{"class":108},[91,45782,112],{"class":101},[91,45784,19538],{"class":97},[91,45786,19541],{"class":101},[91,45788,19544],{"class":97},[91,45790,795],{"class":101},[91,45792,19549],{"class":169},[91,45794,16],{"class":101},[91,45796,19554],{"class":169},[91,45798,8037],{"class":101},[91,45800,45801],{"class":93,"line":228},[91,45802,19561],{"class":566},[91,45804,45805],{"class":93,"line":250},[91,45806,19566],{"class":101},[91,45808,45809],{"class":93,"line":260},[91,45810,137],{"class":101},[16,45812,45813,19575,45815,19579],{},[31,45814,19178],{},[31,45816,19578],{},[829,45818,19582],{},{"title":87,"searchDepth":105,"depth":105,"links":45820},[45821,45822,45823],{"id":18952,"depth":105,"text":18953},{"id":19012,"depth":105,"text":19013},{"id":19484,"depth":105,"text":19485},{},{"title":18899,"description":19589},{"loc":19592},[86,5721],{"id":19599,"title":19600,"body":45829,"created":19751,"description":19752,"extension":843,"filename":19753,"meta":45933,"navigation":846,"path":19755,"seo":45934,"sitemap":45935,"stem":19758,"subject":19759,"tags":45936,"updated":19751,"volume":853,"__hash__":19763},{"type":8,"value":45830,"toc":45928},[45831,45833,45835,45837,45847,45852,45854,45856,45858,45860,45866,45870,45874,45876,45881,45883,45889,45891,45896,45902,45924,45926],[49,45832,19606],{"id":19605},[16,45834,19609],{},[16,45836,19612],{},[24,45838,45839,45841,45843,45845],{},[27,45840,19617],{},[27,45842,19620],{},[27,45844,19623],{},[27,45846,19626],{},[82,45848,45850],{"className":45849,"code":19630,"language":1099},[1097],[31,45851,19630],{"__ignoreMap":87},[16,45853,19635],{},[1112,45855],{"description":19638,"favicon":1320,"host":1317,"image":19639,"title":19640,"url":19641},[1112,45857],{"description":19644,"favicon":1320,"host":1317,"image":19645,"title":19646,"url":19647},[16,45859,19650],{},[1722,45861,45862],{},[16,45863,45864,19658],{},[91,45865,19657],{},[16,45867,45868],{},[19,45869],{"alt":21,"src":19663},[16,45871,19666,45872,19670],{},[31,45873,19669],{},[49,45875,19674],{"id":19673},[82,45877,45879],{"className":45878,"code":19678,"language":1099},[1097],[31,45880,19678],{"__ignoreMap":87},[16,45882,19683],{},[16,45884,19686,45885,19690,45887,19694],{},[31,45886,19689],{},[31,45888,19693],{},[49,45890,19698],{"id":19697},[82,45892,45894],{"className":45893,"code":19702,"language":1099},[1097],[31,45895,19702],{"__ignoreMap":87},[16,45897,19707,45898,19711,45900,19715],{},[31,45899,19710],{},[31,45901,19714],{},[82,45903,45904],{"className":8477,"code":19718,"language":8479,"meta":87,"style":87},[31,45905,45906,45912,45920],{"__ignoreMap":87},[91,45907,45908,45910],{"class":93,"line":94},[91,45909,15360],{"class":169},[91,45911,8789],{"class":101},[91,45913,45914,45916,45918],{"class":93,"line":105},[91,45915,19731],{"class":108},[91,45917,112],{"class":101},[91,45919,19736],{"class":169},[91,45921,45922],{"class":93,"line":121},[91,45923,137],{"class":101},[16,45925,19743],{},[829,45927,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":45929},[45930,45931,45932],{"id":19605,"depth":105,"text":19606},{"id":19673,"depth":105,"text":19674},{"id":19697,"depth":105,"text":19698},{},{"title":19600,"description":19752},{"loc":19755},[5721,1261,19761,16324,19762],{"id":19765,"title":19766,"body":45938,"created":19923,"description":19924,"extension":843,"filename":19925,"meta":46055,"navigation":846,"path":19927,"seo":46056,"sitemap":46057,"stem":19930,"subject":19759,"tags":46058,"updated":19923,"volume":1863,"__hash__":19933},{"type":8,"value":45939,"toc":46053},[45940,45948,45952,46032,46034,46039,46051],[16,45941,19771,45942,19775,45944,19778,45946,19782],{},[31,45943,19774],{},[31,45945,19774],{},[31,45947,19781],{},[16,45949,19785,45950,2997],{},[31,45951,19781],{},[82,45953,45954],{"className":84,"code":19790,"language":86,"meta":87,"style":87},[31,45955,45956,45966,45972,45976,46002,46006,46010,46020,46024],{"__ignoreMap":87},[91,45957,45958,45960,45962,45964],{"class":93,"line":94},[91,45959,156],{"class":101},[91,45961,829],{"class":159},[91,45963,19801],{"class":101},[91,45965,173],{"class":566},[91,45967,45968,45970],{"class":93,"line":105},[91,45969,19808],{"class":97},[91,45971,102],{"class":101},[91,45973,45974],{"class":93,"line":121},[91,45975,19815],{"class":1343},[91,45977,45978,45980,45982,45984,45986,45988,45990,45992,45994,45996,45998,46000],{"class":93,"line":134},[91,45979,19820],{"class":101},[91,45981,19823],{"class":108},[91,45983,19826],{"class":108},[91,45985,19829],{"class":101},[91,45987,18929],{"class":108},[91,45989,19834],{"class":108},[91,45991,19837],{"class":108},[91,45993,19840],{"class":101},[91,45995,19843],{"class":108},[91,45997,19846],{"class":101},[91,45999,19849],{"class":108},[91,46001,118],{"class":101},[91,46003,46004],{"class":93,"line":228},[91,46005,1629],{"class":101},[91,46007,46008],{"class":93,"line":250},[91,46009,19860],{"class":1343},[91,46011,46012,46014,46016,46018],{"class":93,"line":260},[91,46013,19865],{"class":108},[91,46015,112],{"class":101},[91,46017,19870],{"class":108},[91,46019,19873],{"class":101},[91,46021,46022],{"class":93,"line":274},[91,46023,137],{"class":101},[91,46025,46026,46028,46030],{"class":93,"line":284},[91,46027,493],{"class":101},[91,46029,829],{"class":159},[91,46031,173],{"class":566},[16,46033,19888],{},[16,46035,19891,46036,19897],{},[4306,46037,19896],{"href":19894,"rel":46038},[4310],[16,46040,19900,46041,19903,46043,19906,46045,19910,46047,19914,46049,19917],{},[31,46042,19774],{},[31,46044,19781],{},[31,46046,19909],{},[31,46048,19913],{},[31,46050,19781],{},[829,46052,19920],{},{"title":87,"searchDepth":105,"depth":105,"links":46054},[],{},{"title":19766,"description":19924},{"loc":19927},[5721,86,1936,19932],{"id":19935,"title":19936,"body":46060,"created":20877,"description":20878,"extension":843,"filename":20879,"meta":46827,"navigation":846,"path":20881,"seo":46828,"sitemap":46829,"stem":20884,"subject":17549,"tags":46830,"updated":20877,"volume":853,"__hash__":20887},{"type":8,"value":46061,"toc":46817},[46062,46070,46072,46146,46154,46244,46250,46368,46372,46383,46385,46449,46455,46464,46466,46544,46548,46552,46554,46556,46560,46565,46567,46569,46571,46573,46577,46643,46647,46649,46653,46665,46745,46751,46757,46759,46761,46815],[16,46063,19941,46064,5321,46066,19948,46068,19952],{},[31,46065,19944],{},[31,46067,19947],{},[31,46069,19951],{},[49,46071,19956],{"id":19955},[82,46073,46074],{"className":1154,"code":19959,"language":1156,"meta":87,"style":87},[31,46075,46076,46084,46094,46104,46108,46112,46122,46132,46142],{"__ignoreMap":87},[91,46077,46078,46080,46082],{"class":93,"line":94},[91,46079,19947],{"class":566},[91,46081,19968],{"class":97},[91,46083,102],{"class":101},[91,46085,46086,46088,46090,46092],{"class":93,"line":105},[91,46087,19975],{"class":1172},[91,46089,1208],{"class":566},[91,46091,1357],{"class":108},[91,46093,118],{"class":101},[91,46095,46096,46098,46100,46102],{"class":93,"line":121},[91,46097,19986],{"class":1172},[91,46099,1208],{"class":566},[91,46101,1357],{"class":108},[91,46103,118],{"class":101},[91,46105,46106],{"class":93,"line":134},[91,46107,137],{"class":101},[91,46109,46110],{"class":93,"line":228},[91,46111,1450],{"emptyLinePlaceholder":846},[91,46113,46114,46116,46118,46120],{"class":93,"line":250},[91,46115,19944],{"class":566},[91,46117,20007],{"class":97},[91,46119,1366],{"class":566},[91,46121,102],{"class":101},[91,46123,46124,46126,46128,46130],{"class":93,"line":260},[91,46125,19975],{"class":1172},[91,46127,1208],{"class":566},[91,46129,1357],{"class":108},[91,46131,118],{"class":101},[91,46133,46134,46136,46138,46140],{"class":93,"line":274},[91,46135,19986],{"class":1172},[91,46137,1208],{"class":566},[91,46139,1357],{"class":108},[91,46141,118],{"class":101},[91,46143,46144],{"class":93,"line":284},[91,46145,20036],{"class":101},[16,46147,46148,20041,46150,20044,46152,20048],{},[31,46149,19947],{},[31,46151,19944],{},[31,46153,20047],{},[82,46155,46156],{"className":1154,"code":20051,"language":1156,"meta":87,"style":87},[31,46157,46158,46166,46176,46180,46184,46192,46202,46206,46210,46224,46232,46240],{"__ignoreMap":87},[91,46159,46160,46162,46164],{"class":93,"line":94},[91,46161,19947],{"class":566},[91,46163,20060],{"class":97},[91,46165,102],{"class":101},[91,46167,46168,46170,46172,46174],{"class":93,"line":105},[91,46169,20067],{"class":1172},[91,46171,1208],{"class":566},[91,46173,1357],{"class":108},[91,46175,118],{"class":101},[91,46177,46178],{"class":93,"line":121},[91,46179,137],{"class":101},[91,46181,46182],{"class":93,"line":134},[91,46183,1450],{"emptyLinePlaceholder":846},[91,46185,46186,46188,46190],{"class":93,"line":228},[91,46187,19947],{"class":566},[91,46189,20060],{"class":97},[91,46191,102],{"class":101},[91,46193,46194,46196,46198,46200],{"class":93,"line":250},[91,46195,20094],{"class":1172},[91,46197,1208],{"class":566},[91,46199,1357],{"class":108},[91,46201,118],{"class":101},[91,46203,46204],{"class":93,"line":260},[91,46205,137],{"class":101},[91,46207,46208],{"class":93,"line":274},[91,46209,1450],{"emptyLinePlaceholder":846},[91,46211,46212,46214,46216,46218,46220,46222],{"class":93,"line":284},[91,46213,1968],{"class":566},[91,46215,20115],{"class":108},[91,46217,1208],{"class":566},[91,46219,20060],{"class":97},[91,46221,1366],{"class":566},[91,46223,102],{"class":101},[91,46225,46226,46228,46230],{"class":93,"line":299},[91,46227,20128],{"class":101},[91,46229,20131],{"class":169},[91,46231,7560],{"class":101},[91,46233,46234,46236,46238],{"class":93,"line":319},[91,46235,20138],{"class":101},[91,46237,20141],{"class":169},[91,46239,7560],{"class":101},[91,46241,46242],{"class":93,"line":334},[91,46243,20036],{"class":101},[16,46245,20150,46246,20153,46248,20157],{},[31,46247,19947],{},[31,46249,20156],{},[82,46251,46252],{"className":1154,"code":20160,"language":1156,"meta":87,"style":87},[31,46253,46254,46278,46282,46296,46318,46340,46344],{"__ignoreMap":87},[91,46255,46256,46258,46260,46262,46264,46266,46268,46270,46272,46274,46276],{"class":93,"line":94},[91,46257,19944],{"class":566},[91,46259,20169],{"class":97},[91,46261,1366],{"class":566},[91,46263,20174],{"class":169},[91,46265,1360],{"class":566},[91,46267,20179],{"class":169},[91,46269,1360],{"class":566},[91,46271,20184],{"class":169},[91,46273,1360],{"class":566},[91,46275,20189],{"class":169},[91,46277,118],{"class":101},[91,46279,46280],{"class":93,"line":105},[91,46281,1450],{"emptyLinePlaceholder":846},[91,46283,46284,46286,46288,46290,46292,46294],{"class":93,"line":121},[91,46285,19944],{"class":566},[91,46287,20202],{"class":97},[91,46289,156],{"class":101},[91,46291,20207],{"class":97},[91,46293,20210],{"class":101},[91,46295,20213],{"class":566},[91,46297,46298,46300,46302,46304,46306,46308,46310,46312,46314,46316],{"class":93,"line":134},[91,46299,20218],{"class":566},[91,46301,13969],{"class":101},[91,46303,20223],{"class":1172},[91,46305,1208],{"class":566},[91,46307,20228],{"class":108},[91,46309,20231],{"class":101},[91,46311,7901],{"class":1172},[91,46313,1208],{"class":566},[91,46315,20238],{"class":97},[91,46317,1445],{"class":101},[91,46319,46320,46322,46324,46326,46328,46330,46332,46334,46336,46338],{"class":93,"line":228},[91,46321,20218],{"class":566},[91,46323,13969],{"class":101},[91,46325,20223],{"class":1172},[91,46327,1208],{"class":566},[91,46329,20253],{"class":108},[91,46331,20231],{"class":101},[91,46333,9808],{"class":1172},[91,46335,1208],{"class":566},[91,46337,1357],{"class":108},[91,46339,20264],{"class":101},[91,46341,46342],{"class":93,"line":250},[91,46343,1450],{"emptyLinePlaceholder":846},[91,46345,46346,46348,46350,46352,46354,46356,46358,46360,46362,46364,46366],{"class":93,"line":260},[91,46347,19944],{"class":566},[91,46349,20275],{"class":97},[91,46351,1366],{"class":566},[91,46353,2662],{"class":101},[91,46355,9340],{"class":1172},[91,46357,1208],{"class":566},[91,46359,20286],{"class":97},[91,46361,1176],{"class":101},[91,46363,1179],{"class":566},[91,46365,20293],{"class":108},[91,46367,118],{"class":101},[16,46369,20298,46370,20301],{},[31,46371,19944],{},[16,46373,46374,20309,46377,20312,46379,20315,46381,20318],{},[4306,46375,20308],{"href":20306,"rel":46376},[4310],[31,46378,19947],{},[31,46380,19944],{},[31,46382,19944],{},[49,46384,20322],{"id":20321},[82,46386,46387],{"className":1154,"code":20325,"language":1156,"meta":87,"style":87},[31,46388,46389,46407,46425,46429,46445],{"__ignoreMap":87},[91,46390,46391,46393,46395,46397,46399,46401,46403,46405],{"class":93,"line":94},[91,46392,19944],{"class":566},[91,46394,20334],{"class":97},[91,46396,1366],{"class":566},[91,46398,13969],{"class":101},[91,46400,9066],{"class":1172},[91,46402,1208],{"class":566},[91,46404,1357],{"class":108},[91,46406,20264],{"class":101},[91,46408,46409,46411,46413,46415,46417,46419,46421,46423],{"class":93,"line":105},[91,46410,19944],{"class":566},[91,46412,20353],{"class":97},[91,46414,1366],{"class":566},[91,46416,13969],{"class":101},[91,46418,9066],{"class":1172},[91,46420,1208],{"class":566},[91,46422,20364],{"class":108},[91,46424,20264],{"class":101},[91,46426,46427],{"class":93,"line":121},[91,46428,1450],{"emptyLinePlaceholder":846},[91,46430,46431,46433,46435,46437,46439,46441,46443],{"class":93,"line":134},[91,46432,19944],{"class":566},[91,46434,20377],{"class":97},[91,46436,1366],{"class":566},[91,46438,20334],{"class":97},[91,46440,20384],{"class":566},[91,46442,20353],{"class":97},[91,46444,118],{"class":101},[91,46446,46447],{"class":93,"line":228},[91,46448,20393],{"class":1343},[16,46450,46451,20399,46453,20403],{},[31,46452,20398],{},[31,46454,20402],{},[16,46456,20406,46457,20409,46459,20413,46461,20419],{},[31,46458,19944],{},[31,46460,20412],{},[4306,46462,20418],{"href":20416,"rel":46463},[4310],[49,46465,20423],{"id":20422},[82,46467,46468],{"className":1154,"code":20426,"language":1156,"meta":87,"style":87},[31,46469,46470,46478,46488,46498,46508,46512,46516,46532,46540],{"__ignoreMap":87},[91,46471,46472,46474,46476],{"class":93,"line":94},[91,46473,19951],{"class":566},[91,46475,20435],{"class":97},[91,46477,102],{"class":101},[91,46479,46480,46482,46484,46486],{"class":93,"line":105},[91,46481,20442],{"class":108},[91,46483,1366],{"class":566},[91,46485,20447],{"class":169},[91,46487,7560],{"class":101},[91,46489,46490,46492,46494,46496],{"class":93,"line":121},[91,46491,20454],{"class":108},[91,46493,1366],{"class":566},[91,46495,20459],{"class":169},[91,46497,7560],{"class":101},[91,46499,46500,46502,46504,46506],{"class":93,"line":134},[91,46501,20466],{"class":108},[91,46503,1366],{"class":566},[91,46505,20471],{"class":169},[91,46507,7560],{"class":101},[91,46509,46510],{"class":93,"line":228},[91,46511,137],{"class":101},[91,46513,46514],{"class":93,"line":250},[91,46515,1450],{"emptyLinePlaceholder":846},[91,46517,46518,46520,46522,46524,46526,46528,46530],{"class":93,"line":260},[91,46519,7471],{"class":566},[91,46521,20488],{"class":97},[91,46523,795],{"class":101},[91,46525,20493],{"class":1172},[91,46527,1208],{"class":566},[91,46529,20435],{"class":97},[91,46531,3866],{"class":101},[91,46533,46534,46536,46538],{"class":93,"line":274},[91,46535,2271],{"class":101},[91,46537,1225],{"class":97},[91,46539,20508],{"class":101},[91,46541,46542],{"class":93,"line":284},[91,46543,137],{"class":101},[16,46545,46546,20517],{},[31,46547,19951],{},[16,46549,46550],{},[19,46551],{"alt":20522,"src":20523},[16,46553,20526],{},[16,46555,20529],{},[16,46557,20532,46558,20535],{},[31,46559,2499],{},[16,46561,20538,46562,20544],{},[4306,46563,20543],{"href":20541,"rel":46564},[4310],[16,46566,20547],{},[49,46568,20551],{"id":20550},[16,46570,20554],{},[757,46572,20558],{"id":20557},[16,46574,20561,46575,20564],{},[31,46576,1968],{},[82,46578,46579],{"className":1154,"code":20567,"language":1156,"meta":87,"style":87},[31,46580,46581,46591,46597,46603,46607,46611,46621,46625,46629],{"__ignoreMap":87},[91,46582,46583,46585,46587,46589],{"class":93,"line":94},[91,46584,1968],{"class":566},[91,46586,20576],{"class":566},[91,46588,20579],{"class":97},[91,46590,102],{"class":101},[91,46592,46593,46595],{"class":93,"line":105},[91,46594,20586],{"class":108},[91,46596,7560],{"class":101},[91,46598,46599,46601],{"class":93,"line":121},[91,46600,20593],{"class":108},[91,46602,7560],{"class":101},[91,46604,46605],{"class":93,"line":134},[91,46606,137],{"class":101},[91,46608,46609],{"class":93,"line":228},[91,46610,1450],{"emptyLinePlaceholder":846},[91,46612,46613,46615,46617,46619],{"class":93,"line":250},[91,46614,1349],{"class":566},[91,46616,20610],{"class":101},[91,46618,166],{"class":566},[91,46620,20615],{"class":101},[91,46622,46623],{"class":93,"line":260},[91,46624,1450],{"emptyLinePlaceholder":846},[91,46626,46627],{"class":93,"line":274},[91,46628,20624],{"class":1343},[91,46630,46631,46633,46635,46637,46639,46641],{"class":93,"line":284},[91,46632,1349],{"class":566},[91,46634,20610],{"class":101},[91,46636,166],{"class":566},[91,46638,11817],{"class":108},[91,46640,20637],{"class":1343},[91,46642,118],{"class":101},[16,46644,20642,46645,20646],{},[31,46646,20645],{},[757,46648,20650],{"id":20649},[16,46650,20653,46651,20657],{},[31,46652,20656],{},[16,46654,20660,46655,20663,46657,64,46659,20670,46661,20673,46663,20677],{},[31,46656,1968],{},[31,46658,20666],{},[31,46660,20669],{},[31,46662,20656],{},[31,46664,20676],{},[82,46666,46667],{"className":1154,"code":20680,"language":1156,"meta":87,"style":87},[31,46668,46669,46679,46687,46695,46703,46711,46721,46725,46735],{"__ignoreMap":87},[91,46670,46671,46673,46675,46677],{"class":93,"line":94},[91,46672,1968],{"class":566},[91,46674,20689],{"class":108},[91,46676,1366],{"class":566},[91,46678,102],{"class":101},[91,46680,46681,46683,46685],{"class":93,"line":105},[91,46682,20698],{"class":101},[91,46684,20701],{"class":108},[91,46686,7560],{"class":101},[91,46688,46689,46691,46693],{"class":93,"line":121},[91,46690,20708],{"class":101},[91,46692,20711],{"class":108},[91,46694,7560],{"class":101},[91,46696,46697,46699,46701],{"class":93,"line":134},[91,46698,20718],{"class":101},[91,46700,20721],{"class":108},[91,46702,7560],{"class":101},[91,46704,46705,46707,46709],{"class":93,"line":228},[91,46706,20728],{"class":101},[91,46708,8075],{"class":108},[91,46710,7560],{"class":101},[91,46712,46713,46715,46717,46719],{"class":93,"line":250},[91,46714,1434],{"class":101},[91,46716,20739],{"class":566},[91,46718,16463],{"class":566},[91,46720,118],{"class":101},[91,46722,46723],{"class":93,"line":260},[91,46724,1450],{"emptyLinePlaceholder":846},[91,46726,46727,46729,46731,46733],{"class":93,"line":274},[91,46728,2574],{"class":566},[91,46730,18504],{"class":566},[91,46732,20756],{"class":97},[91,46734,20759],{"class":566},[91,46736,46737,46739,46741,46743],{"class":93,"line":284},[91,46738,20764],{"class":566},[91,46740,20767],{"class":101},[91,46742,20770],{"class":566},[91,46744,20773],{"class":101},[16,46746,20776,46747,20780,46749,20784],{},[31,46748,20779],{},[31,46750,20783],{},[16,46752,20787,46753,5733,46755,20793],{},[31,46754,20645],{},[31,46756,20792],{},[49,46758,20797],{"id":20796},[16,46760,20800],{},[812,46762,46763,46771],{},[3001,46764,46765],{},[3004,46766,46767,46769],{},[3007,46768,9219],{},[3007,46770,20811],{},[3017,46772,46773,46781,46789,46797,46807],{},[3004,46774,46775,46777],{},[3022,46776,20818],{},[3022,46778,46779],{},[31,46780,19947],{},[3004,46782,46783,46785],{},[3022,46784,20827],{},[3022,46786,46787],{},[31,46788,19944],{},[3004,46790,46791,46793],{},[3022,46792,20836],{},[3022,46794,46795],{},[31,46796,19951],{},[3004,46798,46799,46801],{},[3022,46800,20845],{},[3022,46802,46803,20850,46805],{},[31,46804,20656],{},[31,46806,20770],{},[3004,46808,46809,46811],{},[3022,46810,20857],{},[3022,46812,20860,46813],{},[31,46814,20863],{},[829,46816,20866],{},{"title":87,"searchDepth":105,"depth":105,"links":46818},[46819,46820,46821,46822,46826],{"id":19955,"depth":105,"text":19956},{"id":20321,"depth":105,"text":20322},{"id":20422,"depth":105,"text":20423},{"id":20550,"depth":105,"text":20551,"children":46823},[46824,46825],{"id":20557,"depth":121,"text":20558},{"id":20649,"depth":121,"text":20650},{"id":20796,"depth":105,"text":20797},{},{"title":19936,"description":20878},{"loc":20881},[2864,19944,19947,19951,20886],{"id":20889,"title":20890,"body":46832,"created":18076,"description":21610,"extension":843,"filename":21611,"meta":47425,"navigation":846,"path":21613,"seo":47426,"sitemap":47427,"stem":21616,"subject":15282,"tags":47428,"updated":6033,"volume":853,"__hash__":21621},{"type":8,"value":46833,"toc":47419},[46834,46836,46838,46842,46854,46856,46862,46946,46950,47024,47028,47030,47041,47043,47199,47207,47209,47369,47373,47375,47377,47413,47415,47417],[16,46835,20895],{},[49,46837,20899],{"id":20898},[16,46839,20902,46840,20906],{},[31,46841,20905],{},[16,46843,20909,46844,20912,46846,20915,46848,5321,46851,20926],{},[31,46845,17698],{},[31,46847,17698],{},[4306,46849,20920],{"href":20918,"rel":46850},[4310],[4306,46852,20925],{"href":20923,"rel":46853},[4310],[49,46855,20930],{"id":20929},[16,46857,20933,46858,20937,46860,20941],{},[31,46859,20936],{},[31,46861,20940],{},[82,46863,46864],{"className":1154,"code":20944,"language":1156,"meta":87,"style":87},[31,46865,46866,46870,46882,46894,46902,46910,46914,46926,46930],{"__ignoreMap":87},[91,46867,46868],{"class":93,"line":94},[91,46869,20951],{"class":1343},[91,46871,46872,46874,46876,46878,46880],{"class":93,"line":105},[91,46873,2499],{"class":566},[91,46875,20958],{"class":101},[91,46877,2505],{"class":566},[91,46879,20963],{"class":169},[91,46881,118],{"class":101},[91,46883,46884,46886,46888,46890,46892],{"class":93,"line":121},[91,46885,2499],{"class":566},[91,46887,20972],{"class":101},[91,46889,2505],{"class":566},[91,46891,20977],{"class":169},[91,46893,118],{"class":101},[91,46895,46896,46898,46900],{"class":93,"line":134},[91,46897,2499],{"class":566},[91,46899,20986],{"class":169},[91,46901,118],{"class":101},[91,46903,46904,46906,46908],{"class":93,"line":228},[91,46905,2499],{"class":566},[91,46907,20995],{"class":169},[91,46909,118],{"class":101},[91,46911,46912],{"class":93,"line":250},[91,46913,1450],{"emptyLinePlaceholder":846},[91,46915,46916,46918,46920,46922,46924],{"class":93,"line":260},[91,46917,1968],{"class":566},[91,46919,14977],{"class":108},[91,46921,1366],{"class":566},[91,46923,21012],{"class":97},[91,46925,2030],{"class":101},[91,46927,46928],{"class":93,"line":274},[91,46929,1450],{"emptyLinePlaceholder":846},[91,46931,46932,46934,46936,46938,46940,46942,46944],{"class":93,"line":284},[91,46933,21023],{"class":101},[91,46935,14877],{"class":97},[91,46937,21028],{"class":101},[91,46939,14936],{"class":97},[91,46941,795],{"class":101},[91,46943,21035],{"class":169},[91,46945,1594],{"class":101},[16,46947,21040,46948,21044],{},[31,46949,21043],{},[82,46951,46952],{"className":1154,"code":21047,"language":1156,"meta":87,"style":87},[31,46953,46954,46958,46970,46982,46986,46996,47004,47012,47016,47020],{"__ignoreMap":87},[91,46955,46956],{"class":93,"line":94},[91,46957,21054],{"class":1343},[91,46959,46960,46962,46964,46966,46968],{"class":93,"line":105},[91,46961,2499],{"class":566},[91,46963,21061],{"class":101},[91,46965,2505],{"class":566},[91,46967,21066],{"class":169},[91,46969,118],{"class":101},[91,46971,46972,46974,46976,46978,46980],{"class":93,"line":121},[91,46973,2499],{"class":566},[91,46975,21075],{"class":101},[91,46977,2505],{"class":566},[91,46979,21080],{"class":169},[91,46981,118],{"class":101},[91,46983,46984],{"class":93,"line":134},[91,46985,1450],{"emptyLinePlaceholder":846},[91,46987,46988,46990,46992,46994],{"class":93,"line":228},[91,46989,2574],{"class":566},[91,46991,2001],{"class":566},[91,46993,21012],{"class":97},[91,46995,2007],{"class":101},[91,46997,46998,47000,47002],{"class":93,"line":250},[91,46999,2695],{"class":566},[91,47001,14982],{"class":97},[91,47003,7549],{"class":101},[91,47005,47006,47008,47010],{"class":93,"line":260},[91,47007,21109],{"class":101},[91,47009,21112],{"class":97},[91,47011,8275],{"class":101},[91,47013,47014],{"class":93,"line":274},[91,47015,21119],{"class":101},[91,47017,47018],{"class":93,"line":284},[91,47019,7575],{"class":101},[91,47021,47022],{"class":93,"line":299},[91,47023,137],{"class":101},[16,47025,21130,47026,21134],{},[31,47027,21133],{},[49,47029,21138],{"id":21137},[16,47031,21141,47032,21144,47034,21148,47036,21152,47038,21158],{},[31,47033,17698],{},[31,47035,21147],{},[31,47037,21151],{},[4306,47039,21157],{"href":21155,"rel":47040},[4310],[16,47042,21161],{},[82,47044,47045],{"className":1154,"code":21164,"language":1156,"meta":87,"style":87},[31,47046,47047,47051,47065,47069,47093,47099,47107,47111,47119,47129,47139,47145,47149,47153,47163,47169,47179,47183,47187,47191,47195],{"__ignoreMap":87},[91,47048,47049],{"class":93,"line":94},[91,47050,21171],{"class":1343},[91,47052,47053,47055,47057,47059,47061,47063],{"class":93,"line":105},[91,47054,2499],{"class":566},[91,47056,18504],{"class":566},[91,47058,21180],{"class":101},[91,47060,2505],{"class":566},[91,47062,21185],{"class":169},[91,47064,118],{"class":101},[91,47066,47067],{"class":93,"line":121},[91,47068,1450],{"emptyLinePlaceholder":846},[91,47070,47071,47073,47075,47077,47079,47081,47083,47085,47087,47089,47091],{"class":93,"line":134},[91,47072,2574],{"class":566},[91,47074,2001],{"class":566},[91,47076,21200],{"class":97},[91,47078,795],{"class":101},[91,47080,21205],{"class":1172},[91,47082,16037],{"class":566},[91,47084,1357],{"class":108},[91,47086,4618],{"class":101},[91,47088,1208],{"class":566},[91,47090,21216],{"class":97},[91,47092,102],{"class":101},[91,47094,47095,47097],{"class":93,"line":228},[91,47096,2695],{"class":566},[91,47098,102],{"class":101},[91,47100,47101,47103,47105],{"class":93,"line":250},[91,47102,8003],{"class":101},[91,47104,21231],{"class":169},[91,47106,7560],{"class":101},[91,47108,47109],{"class":93,"line":260},[91,47110,21238],{"class":101},[91,47112,47113,47115,47117],{"class":93,"line":274},[91,47114,21243],{"class":101},[91,47116,21246],{"class":169},[91,47118,7560],{"class":101},[91,47120,47121,47123,47125,47127],{"class":93,"line":284},[91,47122,21253],{"class":97},[91,47124,795],{"class":101},[91,47126,149],{"class":1172},[91,47128,3866],{"class":101},[91,47130,47131,47133,47135,47137],{"class":93,"line":299},[91,47132,10068],{"class":566},[91,47134,2662],{"class":101},[91,47136,2665],{"class":566},[91,47138,21270],{"class":101},[91,47140,47141,47143],{"class":93,"line":319},[91,47142,21275],{"class":566},[91,47144,14355],{"class":101},[91,47146,47147],{"class":93,"line":334},[91,47148,3307],{"class":101},[91,47150,47151],{"class":93,"line":355},[91,47152,1450],{"emptyLinePlaceholder":846},[91,47154,47155,47157,47159,47161],{"class":93,"line":364},[91,47156,11866],{"class":566},[91,47158,14292],{"class":101},[91,47160,14010],{"class":97},[91,47162,9266],{"class":101},[91,47164,47165,47167],{"class":93,"line":378},[91,47166,21300],{"class":169},[91,47168,7560],{"class":101},[91,47170,47171,47173,47175,47177],{"class":93,"line":387},[91,47172,21307],{"class":169},[91,47174,21205],{"class":101},[91,47176,21312],{"class":169},[91,47178,7560],{"class":101},[91,47180,47181],{"class":93,"line":402},[91,47182,21319],{"class":101},[91,47184,47185],{"class":93,"line":422},[91,47186,21324],{"class":101},[91,47188,47189],{"class":93,"line":438},[91,47190,3477],{"class":101},[91,47192,47193],{"class":93,"line":458},[91,47194,8083],{"class":101},[91,47196,47197],{"class":93,"line":467},[91,47198,137],{"class":101},[16,47200,21339,47201,15747,47203,3752,47205,21348],{},[31,47202,17698],{},[31,47204,21344],{},[31,47206,21347],{},[16,47208,21351],{},[82,47210,47211],{"className":1154,"code":21354,"language":1156,"meta":87,"style":87},[31,47212,47213,47217,47229,47241,47245,47263,47281,47299,47307,47311,47317,47321,47327,47331,47335,47339,47357,47361,47365],{"__ignoreMap":87},[91,47214,47215],{"class":93,"line":94},[91,47216,21361],{"class":1343},[91,47218,47219,47221,47223,47225,47227],{"class":93,"line":105},[91,47220,2499],{"class":566},[91,47222,21368],{"class":101},[91,47224,2505],{"class":566},[91,47226,21185],{"class":169},[91,47228,118],{"class":101},[91,47230,47231,47233,47235,47237,47239],{"class":93,"line":121},[91,47232,2499],{"class":566},[91,47234,21381],{"class":101},[91,47236,2505],{"class":566},[91,47238,21386],{"class":169},[91,47240,118],{"class":101},[91,47242,47243],{"class":93,"line":134},[91,47244,1450],{"emptyLinePlaceholder":846},[91,47246,47247,47249,47251,47253,47255,47257,47259,47261],{"class":93,"line":228},[91,47248,2574],{"class":566},[91,47250,12107],{"class":566},[91,47252,21401],{"class":97},[91,47254,21404],{"class":101},[91,47256,21407],{"class":1172},[91,47258,21410],{"class":101},[91,47260,1179],{"class":566},[91,47262,102],{"class":101},[91,47264,47265,47267,47269,47271,47273,47275,47277,47279],{"class":93,"line":250},[91,47266,2641],{"class":566},[91,47268,21421],{"class":108},[91,47270,1366],{"class":566},[91,47272,21426],{"class":101},[91,47274,21429],{"class":97},[91,47276,795],{"class":101},[91,47278,21434],{"class":169},[91,47280,3487],{"class":101},[91,47282,47283,47285,47287,47289,47291,47293,47295,47297],{"class":93,"line":260},[91,47284,21441],{"class":566},[91,47286,21426],{"class":101},[91,47288,14010],{"class":97},[91,47290,795],{"class":101},[91,47292,21434],{"class":169},[91,47294,64],{"class":101},[91,47296,13747],{"class":169},[91,47298,3487],{"class":101},[91,47300,47301,47303,47305],{"class":93,"line":274},[91,47302,21460],{"class":566},[91,47304,11771],{"class":108},[91,47306,118],{"class":101},[91,47308,47309],{"class":93,"line":284},[91,47310,1450],{"emptyLinePlaceholder":846},[91,47312,47313,47315],{"class":93,"line":299},[91,47314,2695],{"class":566},[91,47316,102],{"class":101},[91,47318,47319],{"class":93,"line":319},[91,47320,21479],{"class":101},[91,47322,47323,47325],{"class":93,"line":334},[91,47324,21484],{"class":97},[91,47326,21487],{"class":101},[91,47328,47329],{"class":93,"line":355},[91,47330,21492],{"class":1343},[91,47332,47333],{"class":93,"line":364},[91,47334,21497],{"class":101},[91,47336,47337],{"class":93,"line":378},[91,47338,21502],{"class":101},[91,47340,47341,47343,47345,47347,47349,47351,47353,47355],{"class":93,"line":387},[91,47342,21507],{"class":101},[91,47344,8372],{"class":566},[91,47346,21512],{"class":169},[91,47348,21205],{"class":101},[91,47350,1241],{"class":169},[91,47352,2131],{"class":566},[91,47354,21521],{"class":169},[91,47356,7560],{"class":101},[91,47358,47359],{"class":93,"line":402},[91,47360,3477],{"class":101},[91,47362,47363],{"class":93,"line":422},[91,47364,8083],{"class":101},[91,47366,47367],{"class":93,"line":438},[91,47368,1303],{"class":101},[16,47370,21538,47371,21541],{},[31,47372,17698],{},[49,47374,21545],{"id":21544},[16,47376,21548],{},[812,47378,47379,47387],{},[3001,47380,47381],{},[3004,47382,47383,47385],{},[3007,47384,21557],{},[3007,47386,21560],{"align":19870},[3017,47388,47389,47395,47401,47407],{},[3004,47390,47391,47393],{},[3022,47392,21567],{},[3022,47394,21570],{"align":19870},[3004,47396,47397,47399],{},[3022,47398,21575],{},[3022,47400,21578],{"align":19870},[3004,47402,47403,47405],{},[3022,47404,21583],{},[3022,47406,21586],{"align":19870},[3004,47408,47409,47411],{},[3022,47410,21591],{},[3022,47412,21594],{"align":19870},[16,47414,21597],{},[16,47416,21600],{},[829,47418,21603],{},{"title":87,"searchDepth":105,"depth":105,"links":47420},[47421,47422,47423,47424],{"id":20898,"depth":105,"text":20899},{"id":20929,"depth":105,"text":20930},{"id":21137,"depth":105,"text":21138},{"id":21544,"depth":105,"text":21545},{},{"title":20890,"description":21610},{"loc":21613},[16324,21618,21619,21620,15415],{"id":21623,"title":21624,"body":47430,"created":24437,"description":24438,"extension":843,"filename":24439,"meta":49827,"navigation":846,"path":24441,"seo":49828,"sitemap":49829,"stem":24444,"subject":2862,"tags":49830,"updated":24437,"volume":4441,"__hash__":24446},{"type":8,"value":47431,"toc":49804},[47432,47434,47439,47441,47446,47448,47450,47459,47461,47466,47474,47500,47502,47572,47578,47580,47589,47595,47600,47674,47678,47686,47688,47697,47699,47704,47706,47840,47844,47846,47854,47864,47866,47868,47877,47879,47883,47993,47997,48085,48091,48093,48102,48104,48109,48157,48161,48211,48215,48349,48351,48353,48362,48364,48369,48455,48463,48465,48470,48484,48520,48524,48560,48562,48620,48624,48626,48628,48637,48641,48643,48652,48656,48658,48660,48826,48830,48844,48890,48894,48896,48905,48911,48973,48977,49005,49011,49013,49018,49020,49036,49038,49043,49239,49243,49521,49523,49645,49647,49649,49651,49656,49661,49725,49733,49735,49741,49746,49750,49798,49802],[16,47433,21629],{},[16,47435,21632,47436,21637],{},[4306,47437,10845],{"href":21635,"rel":47438},[4310],[49,47440,21641],{"id":21640},[82,47442,47444],{"className":47443,"code":21645,"language":1099},[1097],[31,47445,21645],{"__ignoreMap":87},[16,47447,21650],{},[49,47449,21653],{"id":21653},[1722,47451,47452],{},[16,47453,21658,47454,47456],{},[21660,47455],{},[4306,47457,21664],{"href":21664,"rel":47458},[4310],[16,47460,21668],{},[82,47462,47464],{"className":47463,"code":21672,"language":1099},[1097],[31,47465,21672],{"__ignoreMap":87},[16,47467,21677,47468,21681,47470,21685,47472,21689],{},[31,47469,21680],{},[31,47471,21684],{},[31,47473,21688],{},[82,47475,47476],{"className":8477,"code":21692,"language":8479,"meta":87,"style":87},[31,47477,47478,47482,47488,47496],{"__ignoreMap":87},[91,47479,47480],{"class":93,"line":94},[91,47481,21699],{"class":1343},[91,47483,47484,47486],{"class":93,"line":105},[91,47485,21704],{"class":169},[91,47487,8789],{"class":101},[91,47489,47490,47492,47494],{"class":93,"line":121},[91,47491,21711],{"class":108},[91,47493,112],{"class":101},[91,47495,21716],{"class":169},[91,47497,47498],{"class":93,"line":134},[91,47499,137],{"class":101},[16,47501,21723],{},[82,47503,47504],{"className":1154,"code":21726,"filename":20905,"language":1156,"meta":87,"style":87},[31,47505,47506,47520,47524,47528,47532,47560,47564,47568],{"__ignoreMap":87},[91,47507,47508,47510,47512,47514,47516,47518],{"class":93,"line":94},[91,47509,2574],{"class":566},[91,47511,16463],{"class":566},[91,47513,14867],{"class":108},[91,47515,1366],{"class":566},[91,47517,21741],{"class":97},[91,47519,9266],{"class":101},[91,47521,47522],{"class":93,"line":105},[91,47523,21748],{"class":1343},[91,47525,47526],{"class":93,"line":121},[91,47527,21753],{"class":101},[91,47529,47530],{"class":93,"line":134},[91,47531,21758],{"class":101},[91,47533,47534,47536,47538,47540,47542,47544,47546,47548,47550,47552,47554,47556,47558],{"class":93,"line":228},[91,47535,21763],{"class":101},[91,47537,21766],{"class":1172},[91,47539,64],{"class":101},[91,47541,21771],{"class":1172},[91,47543,64],{"class":101},[91,47545,21776],{"class":1172},[91,47547,64],{"class":101},[91,47549,21781],{"class":1172},[91,47551,64],{"class":101},[91,47553,21786],{"class":1172},[91,47555,21410],{"class":101},[91,47557,1179],{"class":566},[91,47559,102],{"class":101},[91,47561,47562],{"class":93,"line":250},[91,47563,21797],{"class":1343},[91,47565,47566],{"class":93,"line":260},[91,47567,3477],{"class":101},[91,47569,47570],{"class":93,"line":274},[91,47571,3487],{"class":101},[16,47573,47574,21811,47576,21815],{},[31,47575,21810],{},[31,47577,21814],{},[49,47579,21818],{"id":21818},[1722,47581,47582],{},[16,47583,21818,47584,47586],{},[21660,47585],{},[4306,47587,21827],{"href":21827,"rel":47588},[4310],[16,47590,21831,47591,21834,47593,21838],{},[31,47592,21653],{},[31,47594,21837],{},[82,47596,47598],{"className":47597,"code":21842,"language":1099},[1097],[31,47599,21842],{"__ignoreMap":87},[82,47601,47602],{"className":1154,"code":21847,"language":1156,"meta":87,"style":87},[31,47603,47604,47614,47624,47632,47636,47640,47646,47662,47666,47670],{"__ignoreMap":87},[91,47605,47606,47608,47610,47612],{"class":93,"line":94},[91,47607,2499],{"class":566},[91,47609,21856],{"class":101},[91,47611,2505],{"class":566},[91,47613,21861],{"class":169},[91,47615,47616,47618,47620,47622],{"class":93,"line":105},[91,47617,2499],{"class":566},[91,47619,21868],{"class":101},[91,47621,2505],{"class":566},[91,47623,21873],{"class":169},[91,47625,47626,47628,47630],{"class":93,"line":121},[91,47627,2574],{"class":566},[91,47629,12107],{"class":566},[91,47631,102],{"class":101},[91,47633,47634],{"class":93,"line":134},[91,47635,21886],{"class":101},[91,47637,47638],{"class":93,"line":228},[91,47639,21891],{"class":1343},[91,47641,47642,47644],{"class":93,"line":250},[91,47643,21896],{"class":97},[91,47645,7549],{"class":101},[91,47647,47648,47650,47652,47654,47656,47658,47660],{"class":93,"line":260},[91,47649,21903],{"class":97},[91,47651,112],{"class":101},[91,47653,21776],{"class":1172},[91,47655,11859],{"class":566},[91,47657,2662],{"class":101},[91,47659,21914],{"class":97},[91,47661,21917],{"class":101},[91,47663,47664],{"class":93,"line":274},[91,47665,10100],{"class":101},[91,47667,47668],{"class":93,"line":284},[91,47669,21926],{"class":101},[91,47671,47672],{"class":93,"line":299},[91,47673,137],{"class":101},[16,47675,47676],{},[19,47677],{"alt":87,"src":21935},[16,47679,47680,21940,47682,21943,47684,21947],{},[31,47681,11295],{},[31,47683,14430],{},[31,47685,21946],{},[49,47687,21837],{"id":21837},[1722,47689,47690],{},[16,47691,21837,47692,47694],{},[21660,47693],{},[4306,47695,21958],{"href":21958,"rel":47696},[4310],[16,47698,21962],{},[82,47700,47702],{"className":47701,"code":21966,"language":1099},[1097],[31,47703,21966],{"__ignoreMap":87},[16,47705,21971],{},[82,47707,47708],{"className":1154,"code":21974,"language":1156,"meta":87,"style":87},[31,47709,47710,47714,47726,47736,47740,47746,47758,47766,47770,47774,47784,47792,47796,47806,47818,47824,47828,47832,47836],{"__ignoreMap":87},[91,47711,47712],{"class":93,"line":94},[91,47713,21361],{"class":1343},[91,47715,47716,47718,47720,47722,47724],{"class":93,"line":105},[91,47717,2499],{"class":566},[91,47719,21856],{"class":101},[91,47721,2505],{"class":566},[91,47723,21991],{"class":169},[91,47725,118],{"class":101},[91,47727,47728,47730,47732,47734],{"class":93,"line":121},[91,47729,2574],{"class":566},[91,47731,12107],{"class":566},[91,47733,21401],{"class":97},[91,47735,7549],{"class":101},[91,47737,47738],{"class":93,"line":134},[91,47739,21886],{"class":101},[91,47741,47742,47744],{"class":93,"line":228},[91,47743,21896],{"class":97},[91,47745,7549],{"class":101},[91,47747,47748,47750,47752,47754,47756],{"class":93,"line":250},[91,47749,22018],{"class":101},[91,47751,22021],{"class":169},[91,47753,64],{"class":101},[91,47755,22026],{"class":169},[91,47757,16394],{"class":101},[91,47759,47760,47762,47764],{"class":93,"line":260},[91,47761,22033],{"class":101},[91,47763,22036],{"class":169},[91,47765,7560],{"class":101},[91,47767,47768],{"class":93,"line":274},[91,47769,22043],{"class":1343},[91,47771,47772],{"class":93,"line":284},[91,47773,22048],{"class":1343},[91,47775,47776,47778,47780,47782],{"class":93,"line":299},[91,47777,22053],{"class":1343},[91,47779,22056],{"class":566},[91,47781,12259],{"class":101},[91,47783,22061],{"class":1343},[91,47785,47786,47788,47790],{"class":93,"line":319},[91,47787,22053],{"class":1343},[91,47789,22068],{"class":566},[91,47791,8723],{"class":1343},[91,47793,47794],{"class":93,"line":334},[91,47795,22075],{"class":1343},[91,47797,47798,47800,47802,47804],{"class":93,"line":355},[91,47799,22080],{"class":97},[91,47801,795],{"class":101},[91,47803,14102],{"class":1172},[91,47805,3866],{"class":101},[91,47807,47808,47810,47812,47814,47816],{"class":93,"line":364},[91,47809,22091],{"class":101},[91,47811,1225],{"class":97},[91,47813,795],{"class":101},[91,47815,22098],{"class":169},[91,47817,22101],{"class":101},[91,47819,47820,47822],{"class":93,"line":378},[91,47821,11866],{"class":566},[91,47823,22108],{"class":101},[91,47825,47826],{"class":93,"line":387},[91,47827,10095],{"class":101},[91,47829,47830],{"class":93,"line":402},[91,47831,10100],{"class":101},[91,47833,47834],{"class":93,"line":422},[91,47835,21926],{"class":101},[91,47837,47838],{"class":93,"line":438},[91,47839,9444],{"class":101},[16,47841,47842,22130],{},[31,47843,22129],{},[757,47845,22134],{"id":22133},[16,47847,47848,22139,47850,22143,47852,22147],{},[31,47849,22129],{},[31,47851,22142],{},[31,47853,22146],{},[24,47855,47856,47860],{},[27,47857,47858,22155],{},[792,47859,22154],{},[27,47861,47862,22161],{},[792,47863,22160],{},[16,47865,22164],{},[757,47867,22168],{"id":22167},[1722,47869,47870],{},[16,47871,22173,47872,47874],{},[21660,47873],{},[4306,47875,22178],{"href":22178,"rel":47876},[4310],[16,47878,22182],{},[16,47880,47881],{},[19,47882],{"alt":87,"src":22187},[82,47884,47885],{"className":1154,"code":22190,"language":1156,"meta":87,"style":87},[31,47886,47887,47891,47901,47911,47921,47927,47931,47939,47947,47955,47963,47969,47973,47977,47981,47989],{"__ignoreMap":87},[91,47888,47889],{"class":93,"line":94},[91,47890,22197],{"class":101},[91,47892,47893,47895,47897,47899],{"class":93,"line":105},[91,47894,22202],{"class":97},[91,47896,112],{"class":101},[91,47898,22207],{"class":169},[91,47900,7560],{"class":101},[91,47902,47903,47905,47907,47909],{"class":93,"line":121},[91,47904,22214],{"class":97},[91,47906,112],{"class":101},[91,47908,22219],{"class":169},[91,47910,7560],{"class":101},[91,47912,47913,47915,47917,47919],{"class":93,"line":134},[91,47914,22226],{"class":97},[91,47916,112],{"class":101},[91,47918,22231],{"class":108},[91,47920,7560],{"class":101},[91,47922,47923,47925],{"class":93,"line":228},[91,47924,22238],{"class":97},[91,47926,10596],{"class":101},[91,47928,47929],{"class":93,"line":250},[91,47930,22245],{"class":101},[91,47932,47933,47935,47937],{"class":93,"line":260},[91,47934,22250],{"class":101},[91,47936,22253],{"class":169},[91,47938,7560],{"class":101},[91,47940,47941,47943,47945],{"class":93,"line":274},[91,47942,22260],{"class":101},[91,47944,22263],{"class":169},[91,47946,7560],{"class":101},[91,47948,47949,47951,47953],{"class":93,"line":284},[91,47950,22270],{"class":101},[91,47952,22273],{"class":169},[91,47954,7560],{"class":101},[91,47956,47957,47959,47961],{"class":93,"line":299},[91,47958,22280],{"class":101},[91,47960,22231],{"class":108},[91,47962,7560],{"class":101},[91,47964,47965,47967],{"class":93,"line":319},[91,47966,22289],{"class":101},[91,47968,11269],{"class":108},[91,47970,47971],{"class":93,"line":334},[91,47972,3477],{"class":101},[91,47974,47975],{"class":93,"line":355},[91,47976,22300],{"class":1343},[91,47978,47979],{"class":93,"line":364},[91,47980,21926],{"class":101},[91,47982,47983,47985,47987],{"class":93,"line":378},[91,47984,22309],{"class":97},[91,47986,112],{"class":101},[91,47988,11269],{"class":108},[91,47990,47991],{"class":93,"line":387},[91,47992,137],{"class":101},[16,47994,22320,47995,22324],{},[31,47996,22323],{},[82,47998,47999],{"className":1934,"code":22327,"language":1936,"meta":87,"style":87},[31,48000,48001,48015,48023,48037,48049,48057,48065,48069,48077],{"__ignoreMap":87},[91,48002,48003,48005,48007,48009,48011,48013],{"class":93,"line":94},[91,48004,156],{"class":101},[91,48006,1945],{"class":159},[91,48008,1948],{"class":97},[91,48010,12566],{"class":101},[91,48012,1945],{"class":159},[91,48014,173],{"class":101},[91,48016,48017,48019,48021],{"class":93,"line":105},[91,48018,156],{"class":101},[91,48020,2118],{"class":159},[91,48022,173],{"class":101},[91,48024,48025,48027,48029,48031,48033,48035],{"class":93,"line":121},[91,48026,2125],{"class":101},[91,48028,160],{"class":159},[91,48030,163],{"class":97},[91,48032,166],{"class":101},[91,48034,22364],{"class":169},[91,48036,173],{"class":101},[91,48038,48039,48041,48043,48045,48047],{"class":93,"line":134},[91,48040,178],{"class":101},[91,48042,22373],{"class":159},[91,48044,12566],{"class":101},[91,48046,22373],{"class":159},[91,48048,173],{"class":101},[91,48050,48051,48053,48055],{"class":93,"line":228},[91,48052,15729],{"class":101},[91,48054,160],{"class":159},[91,48056,173],{"class":101},[91,48058,48059,48061,48063],{"class":93,"line":250},[91,48060,493],{"class":101},[91,48062,2118],{"class":159},[91,48064,173],{"class":101},[91,48066,48067],{"class":93,"line":260},[91,48068,1450],{"emptyLinePlaceholder":846},[91,48070,48071,48073,48075],{"class":93,"line":274},[91,48072,156],{"class":101},[91,48074,829],{"class":159},[91,48076,173],{"class":101},[91,48078,48079,48081,48083],{"class":93,"line":284},[91,48080,493],{"class":101},[91,48082,829],{"class":159},[91,48084,173],{"class":101},[16,48086,48087,22421,48089,22424],{},[31,48088,22420],{},[31,48090,22373],{},[49,48092,22427],{"id":22427},[1722,48094,48095],{},[16,48096,22427,48097,48099],{},[21660,48098],{},[4306,48100,22436],{"href":22436,"rel":48101},[4310],[16,48103,22440],{},[82,48105,48107],{"className":48106,"code":22444,"language":1099},[1097],[31,48108,22444],{"__ignoreMap":87},[82,48110,48111],{"className":1154,"code":22449,"language":1156,"meta":87,"style":87},[31,48112,48113,48117,48129,48139,48143,48149,48153],{"__ignoreMap":87},[91,48114,48115],{"class":93,"line":94},[91,48116,21361],{"class":1343},[91,48118,48119,48121,48123,48125,48127],{"class":93,"line":105},[91,48120,2499],{"class":566},[91,48122,22462],{"class":101},[91,48124,2505],{"class":566},[91,48126,22467],{"class":169},[91,48128,118],{"class":101},[91,48130,48131,48133,48135,48137],{"class":93,"line":121},[91,48132,2574],{"class":566},[91,48134,12107],{"class":566},[91,48136,21401],{"class":97},[91,48138,7549],{"class":101},[91,48140,48141],{"class":93,"line":134},[91,48142,21886],{"class":101},[91,48144,48145,48147],{"class":93,"line":228},[91,48146,22488],{"class":97},[91,48148,8275],{"class":101},[91,48150,48151],{"class":93,"line":250},[91,48152,22495],{"class":101},[91,48154,48155],{"class":93,"line":260},[91,48156,9444],{"class":101},[16,48158,22502,48159,22506],{},[31,48160,22505],{},[82,48162,48163],{"className":8477,"code":22509,"language":8479,"meta":87,"style":87},[31,48164,48165,48169,48175,48181,48187,48193,48199,48203,48207],{"__ignoreMap":87},[91,48166,48167],{"class":93,"line":94},[91,48168,22516],{"class":1343},[91,48170,48171,48173],{"class":93,"line":105},[91,48172,22521],{"class":169},[91,48174,8789],{"class":101},[91,48176,48177,48179],{"class":93,"line":121},[91,48178,22528],{"class":108},[91,48180,10596],{"class":101},[91,48182,48183,48185],{"class":93,"line":134},[91,48184,22535],{"class":169},[91,48186,10624],{"class":101},[91,48188,48189,48191],{"class":93,"line":228},[91,48190,22542],{"class":169},[91,48192,10624],{"class":101},[91,48194,48195,48197],{"class":93,"line":250},[91,48196,22549],{"class":169},[91,48198,10624],{"class":101},[91,48200,48201],{"class":93,"line":260},[91,48202,22556],{"class":169},[91,48204,48205],{"class":93,"line":274},[91,48206,21497],{"class":101},[91,48208,48209],{"class":93,"line":284},[91,48210,137],{"class":101},[16,48212,48213,22570],{},[31,48214,22569],{},[82,48216,48217],{"className":1154,"code":22573,"language":1156,"meta":87,"style":87},[31,48218,48219,48223,48227,48231,48235,48245,48249,48253,48257,48267,48271,48283,48297,48301,48305,48309,48337,48341,48345],{"__ignoreMap":87},[91,48220,48221],{"class":93,"line":94},[91,48222,14780],{"class":1343},[91,48224,48225],{"class":93,"line":105},[91,48226,22584],{"class":1343},[91,48228,48229],{"class":93,"line":121},[91,48230,22589],{"class":1343},[91,48232,48233],{"class":93,"line":134},[91,48234,22594],{"class":1343},[91,48236,48237,48239,48241,48243],{"class":93,"line":228},[91,48238,2499],{"class":566},[91,48240,22601],{"class":101},[91,48242,2505],{"class":566},[91,48244,22606],{"class":169},[91,48246,48247],{"class":93,"line":250},[91,48248,22611],{"class":1343},[91,48250,48251],{"class":93,"line":260},[91,48252,22589],{"class":1343},[91,48254,48255],{"class":93,"line":274},[91,48256,22620],{"class":1343},[91,48258,48259,48261,48263,48265],{"class":93,"line":284},[91,48260,2499],{"class":566},[91,48262,22627],{"class":101},[91,48264,2505],{"class":566},[91,48266,22632],{"class":169},[91,48268,48269],{"class":93,"line":299},[91,48270,1450],{"emptyLinePlaceholder":846},[91,48272,48273,48275,48277,48279,48281],{"class":93,"line":319},[91,48274,1968],{"class":566},[91,48276,13075],{"class":108},[91,48278,1366],{"class":566},[91,48280,22647],{"class":97},[91,48282,22650],{"class":101},[91,48284,48285,48287,48289,48291,48293,48295],{"class":93,"line":334},[91,48286,2574],{"class":566},[91,48288,16463],{"class":566},[91,48290,14867],{"class":108},[91,48292,1366],{"class":566},[91,48294,21741],{"class":97},[91,48296,9266],{"class":101},[91,48298,48299],{"class":93,"line":355},[91,48300,21748],{"class":1343},[91,48302,48303],{"class":93,"line":364},[91,48304,21753],{"class":101},[91,48306,48307],{"class":93,"line":378},[91,48308,22677],{"class":101},[91,48310,48311,48313,48315,48317,48319,48321,48323,48325,48327,48329,48331,48333,48335],{"class":93,"line":387},[91,48312,21763],{"class":101},[91,48314,21766],{"class":1172},[91,48316,64],{"class":101},[91,48318,21771],{"class":1172},[91,48320,64],{"class":101},[91,48322,21776],{"class":1172},[91,48324,64],{"class":101},[91,48326,21781],{"class":1172},[91,48328,64],{"class":101},[91,48330,21786],{"class":1172},[91,48332,21410],{"class":101},[91,48334,1179],{"class":566},[91,48336,102],{"class":101},[91,48338,48339],{"class":93,"line":402},[91,48340,21797],{"class":1343},[91,48342,48343],{"class":93,"line":422},[91,48344,3477],{"class":101},[91,48346,48347],{"class":93,"line":438},[91,48348,3487],{"class":101},[16,48350,22720],{},[49,48352,22723],{"id":22723},[1722,48354,48355],{},[16,48356,22723,48357,48359],{},[21660,48358],{},[4306,48360,22732],{"href":22732,"rel":48361},[4310],[16,48363,22736],{},[82,48365,48367],{"className":48366,"code":22740,"language":1099},[1097],[31,48368,22740],{"__ignoreMap":87},[82,48370,48371],{"className":1154,"code":22745,"language":1156,"meta":87,"style":87},[31,48372,48373,48383,48387,48397,48401,48407,48437,48441,48447,48451],{"__ignoreMap":87},[91,48374,48375,48377,48379,48381],{"class":93,"line":94},[91,48376,2499],{"class":566},[91,48378,22754],{"class":101},[91,48380,2505],{"class":566},[91,48382,22759],{"class":169},[91,48384,48385],{"class":93,"line":105},[91,48386,1450],{"emptyLinePlaceholder":846},[91,48388,48389,48391,48393,48395],{"class":93,"line":121},[91,48390,2574],{"class":566},[91,48392,12107],{"class":566},[91,48394,21401],{"class":97},[91,48396,7549],{"class":101},[91,48398,48399],{"class":93,"line":134},[91,48400,21886],{"class":101},[91,48402,48403,48405],{"class":93,"line":228},[91,48404,22782],{"class":97},[91,48406,7549],{"class":101},[91,48408,48409,48411,48413,48415,48417,48419,48421,48423,48425,48427,48429,48431,48433,48435],{"class":93,"line":250},[91,48410,22789],{"class":101},[91,48412,8361],{"class":169},[91,48414,22795],{"class":22794},[91,48416,1936],{"class":14017},[91,48418,22800],{"class":566},[91,48420,8361],{"class":169},[91,48422,6373],{"class":101},[91,48424,8352],{"class":169},[91,48426,22795],{"class":22794},[91,48428,843],{"class":14017},[91,48430,22800],{"class":566},[91,48432,8361],{"class":169},[91,48434,22817],{"class":101},[91,48436,22820],{"class":1343},[91,48438,48439],{"class":93,"line":260},[91,48440,10100],{"class":101},[91,48442,48443,48445],{"class":93,"line":274},[91,48444,22829],{"class":97},[91,48446,8275],{"class":101},[91,48448,48449],{"class":93,"line":284},[91,48450,21926],{"class":101},[91,48452,48453],{"class":93,"line":299},[91,48454,9444],{"class":101},[16,48456,22842,48457,22845,48459,22848,48461,22851],{},[31,48458,1936],{},[31,48460,843],{},[31,48462,15046],{},[757,48464,22855],{"id":22854},[16,48466,48467],{},[4306,48468,22862],{"href":22860,"rel":48469},[4310],[16,48471,22865,48472,22868,48474,22871,48476,22874,48478,22878,48480,22882,48482,22885],{},[31,48473,22146],{},[31,48475,21653],{},[31,48477,22723],{},[31,48479,22877],{},[31,48481,22881],{},[31,48483,22877],{},[82,48485,48486],{"className":15447,"code":22888,"language":843,"meta":87,"style":87},[31,48487,48488,48492,48498,48508,48516],{"__ignoreMap":87},[91,48489,48490],{"class":93,"line":94},[91,48491,15943],{"class":101},[91,48493,48494,48496],{"class":93,"line":105},[91,48495,13765],{"class":159},[91,48497,7265],{"class":101},[91,48499,48500,48502,48504,48506],{"class":93,"line":121},[91,48501,22905],{"class":101},[91,48503,1238],{"class":159},[91,48505,112],{"class":101},[91,48507,22912],{"class":169},[91,48509,48510,48512,48514],{"class":93,"line":134},[91,48511,11634],{"class":159},[91,48513,112],{"class":101},[91,48515,22921],{"class":169},[91,48517,48518],{"class":93,"line":228},[91,48519,15943],{"class":101},[16,48521,22928,48522,22932],{},[31,48523,22931],{},[82,48525,48526],{"className":15447,"code":22935,"language":843,"meta":87,"style":87},[31,48527,48528,48532,48538,48548,48556],{"__ignoreMap":87},[91,48529,48530],{"class":93,"line":94},[91,48531,15943],{"class":101},[91,48533,48534,48536],{"class":93,"line":105},[91,48535,13765],{"class":159},[91,48537,7265],{"class":101},[91,48539,48540,48542,48544,48546],{"class":93,"line":121},[91,48541,22905],{"class":101},[91,48543,1238],{"class":159},[91,48545,112],{"class":101},[91,48547,22958],{"class":169},[91,48549,48550,48552,48554],{"class":93,"line":134},[91,48551,22963],{"class":159},[91,48553,112],{"class":101},[91,48555,22968],{"class":169},[91,48557,48558],{"class":93,"line":228},[91,48559,15943],{"class":101},[16,48561,22975],{},[82,48563,48564],{"className":147,"code":22978,"language":149,"meta":87,"style":87},[31,48565,48566,48578,48590,48600],{"__ignoreMap":87},[91,48567,48568,48570,48572,48574,48576],{"class":93,"line":94},[91,48569,156],{"class":101},[91,48571,13972],{"class":159},[91,48573,22989],{"class":101},[91,48575,13972],{"class":159},[91,48577,173],{"class":101},[91,48579,48580,48582,48584,48586,48588],{"class":93,"line":105},[91,48581,156],{"class":101},[91,48583,13765],{"class":159},[91,48585,13768],{"class":97},[91,48587,166],{"class":101},[91,48589,23006],{"class":169},[91,48591,48592,48594,48596,48598],{"class":93,"line":121},[91,48593,808],{"class":97},[91,48595,166],{"class":101},[91,48597,23015],{"class":169},[91,48599,173],{"class":101},[91,48601,48602,48604,48606,48608,48610,48612,48614,48616,48618],{"class":93,"line":134},[91,48603,156],{"class":101},[91,48605,13765],{"class":159},[91,48607,23026],{"class":97},[91,48609,166],{"class":101},[91,48611,23031],{"class":169},[91,48613,13776],{"class":97},[91,48615,166],{"class":101},[91,48617,23038],{"class":169},[91,48619,173],{"class":101},[16,48621,23043,48622,23046],{},[31,48623,13765],{},[49,48625,23050],{"id":23049},[757,48627,23053],{"id":23053},[1722,48629,48630],{},[16,48631,23053,48632,48634],{},[21660,48633],{},[4306,48635,23062],{"href":23062,"rel":48636},[4310],[16,48638,48639,23069],{},[31,48640,23068],{},[757,48642,23072],{"id":23072},[1722,48644,48645],{},[16,48646,23072,48647,48649],{},[21660,48648],{},[4306,48650,23081],{"href":23081,"rel":48651},[4310],[16,48653,48654,23088],{},[31,48655,23087],{},[771,48657,23092],{"id":23091},[16,48659,23095],{},[82,48661,48662],{"className":1154,"code":23098,"language":1156,"meta":87,"style":87},[31,48663,48664,48674,48678,48682,48700,48718,48736,48754,48758,48776,48788,48792,48796,48818,48822],{"__ignoreMap":87},[91,48665,48666,48668,48670,48672],{"class":93,"line":94},[91,48667,2085],{"class":97},[91,48669,2088],{"class":101},[91,48671,1179],{"class":566},[91,48673,102],{"class":101},[91,48675,48676],{"class":93,"line":105},[91,48677,23115],{"class":1343},[91,48679,48680],{"class":93,"line":121},[91,48681,23120],{"class":1343},[91,48683,48684,48686,48688,48690,48692,48694,48696,48698],{"class":93,"line":134},[91,48685,2641],{"class":566},[91,48687,23127],{"class":108},[91,48689,1366],{"class":566},[91,48691,5025],{"class":101},[91,48693,19508],{"class":97},[91,48695,795],{"class":101},[91,48697,23138],{"class":169},[91,48699,1594],{"class":101},[91,48701,48702,48704,48706,48708,48710,48712,48714,48716],{"class":93,"line":228},[91,48703,2641],{"class":566},[91,48705,23147],{"class":108},[91,48707,1366],{"class":566},[91,48709,5025],{"class":101},[91,48711,19508],{"class":97},[91,48713,795],{"class":101},[91,48715,23158],{"class":169},[91,48717,1594],{"class":101},[91,48719,48720,48722,48724,48726,48728,48730,48732,48734],{"class":93,"line":250},[91,48721,2641],{"class":566},[91,48723,23167],{"class":108},[91,48725,1366],{"class":566},[91,48727,5025],{"class":101},[91,48729,19508],{"class":97},[91,48731,795],{"class":101},[91,48733,23178],{"class":169},[91,48735,1594],{"class":101},[91,48737,48738,48740,48742,48744,48746,48748,48750,48752],{"class":93,"line":260},[91,48739,2641],{"class":566},[91,48741,23187],{"class":108},[91,48743,1366],{"class":566},[91,48745,5025],{"class":101},[91,48747,19508],{"class":97},[91,48749,795],{"class":101},[91,48751,23198],{"class":169},[91,48753,1594],{"class":101},[91,48755,48756],{"class":93,"line":274},[91,48757,1450],{"emptyLinePlaceholder":846},[91,48759,48760,48762,48764,48766,48768,48770,48772,48774],{"class":93,"line":284},[91,48761,2439],{"class":566},[91,48763,23211],{"class":101},[91,48765,5232],{"class":566},[91,48767,23216],{"class":101},[91,48769,5232],{"class":566},[91,48771,23221],{"class":101},[91,48773,5232],{"class":566},[91,48775,23226],{"class":101},[91,48777,48778,48780,48782,48784,48786],{"class":93,"line":299},[91,48779,23231],{"class":101},[91,48781,166],{"class":566},[91,48783,23236],{"class":101},[91,48785,2665],{"class":566},[91,48787,118],{"class":101},[91,48789,48790],{"class":93,"line":319},[91,48791,23245],{"class":1343},[91,48793,48794],{"class":93,"line":334},[91,48795,23250],{"class":1343},[91,48797,48798,48800,48802,48804,48806,48808,48810,48812,48814,48816],{"class":93,"line":355},[91,48799,23255],{"class":101},[91,48801,20739],{"class":566},[91,48803,23260],{"class":97},[91,48805,23263],{"class":101},[91,48807,23266],{"class":97},[91,48809,795],{"class":101},[91,48811,23271],{"class":169},[91,48813,64],{"class":101},[91,48815,23276],{"class":169},[91,48817,1594],{"class":101},[91,48819,48820],{"class":93,"line":364},[91,48821,1698],{"class":101},[91,48823,48824],{"class":93,"line":378},[91,48825,9444],{"class":101},[16,48827,23289,48828,23293],{},[31,48829,23292],{},[1722,48831,48832],{},[16,48833,48834,23301,48836,23305,48838,23309,48840,23312,48842,23316],{},[91,48835,23300],{},[31,48837,23304],{},[31,48839,23308],{},[31,48841,22231],{},[31,48843,23315],{},[82,48845,48846],{"className":1154,"code":23319,"language":1156,"meta":87,"style":87},[31,48847,48848,48862,48866,48876,48882,48886],{"__ignoreMap":87},[91,48849,48850,48852,48854,48856,48858,48860],{"class":93,"line":94},[91,48851,1884],{"class":97},[91,48853,2088],{"class":101},[91,48855,1179],{"class":566},[91,48857,23332],{"class":101},[91,48859,1179],{"class":566},[91,48861,102],{"class":101},[91,48863,48864],{"class":93,"line":105},[91,48865,23341],{"class":1343},[91,48867,48868,48870,48872,48874],{"class":93,"line":121},[91,48869,23346],{"class":97},[91,48871,2088],{"class":101},[91,48873,1179],{"class":566},[91,48875,102],{"class":101},[91,48877,48878,48880],{"class":93,"line":134},[91,48879,23357],{"class":97},[91,48881,2030],{"class":101},[91,48883,48884],{"class":93,"line":228},[91,48885,7745],{"class":101},[91,48887,48888],{"class":93,"line":250},[91,48889,1303],{"class":101},[16,48891,23370,48892,23373],{},[31,48893,1884],{},[757,48895,23376],{"id":23376},[1722,48897,48898],{},[16,48899,23376,48900,48902],{},[21660,48901],{},[4306,48903,23385],{"href":23385,"rel":48904},[4310],[16,48906,48907,23392,48909,23395],{},[31,48908,23391],{},[31,48910,82],{},[82,48912,48913],{"className":1154,"code":23398,"language":1156,"meta":87,"style":87},[31,48914,48915,48925,48929,48935,48945,48949,48957,48961,48965,48969],{"__ignoreMap":87},[91,48916,48917,48919,48921,48923],{"class":93,"line":94},[91,48918,2574],{"class":566},[91,48920,12107],{"class":566},[91,48922,21401],{"class":97},[91,48924,7549],{"class":101},[91,48926,48927],{"class":93,"line":105},[91,48928,21886],{"class":101},[91,48930,48931,48933],{"class":93,"line":121},[91,48932,22829],{"class":97},[91,48934,7549],{"class":101},[91,48936,48937,48939,48941,48943],{"class":93,"line":134},[91,48938,23425],{"class":97},[91,48940,795],{"class":101},[91,48942,843],{"class":1172},[91,48944,3866],{"class":101},[91,48946,48947],{"class":93,"line":228},[91,48948,23436],{"class":1343},[91,48950,48951,48953,48955],{"class":93,"line":250},[91,48952,23441],{"class":101},[91,48954,14877],{"class":97},[91,48956,23446],{"class":101},[91,48958,48959],{"class":93,"line":260},[91,48960,21324],{"class":101},[91,48962,48963],{"class":93,"line":274},[91,48964,10100],{"class":101},[91,48966,48967],{"class":93,"line":284},[91,48968,21926],{"class":101},[91,48970,48971],{"class":93,"line":299},[91,48972,9444],{"class":101},[16,48974,48975,23468],{},[31,48976,23467],{},[82,48978,48979],{"className":23471,"code":23472,"language":23473,"meta":87,"style":87},[31,48980,48981,48989,48997],{"__ignoreMap":87},[91,48982,48983,48985,48987],{"class":93,"line":94},[91,48984,156],{"class":101},[91,48986,829],{"class":159},[91,48988,173],{"class":101},[91,48990,48991,48993,48995],{"class":93,"line":105},[91,48992,23488],{"class":566},[91,48994,23491],{"class":169},[91,48996,19873],{"class":101},[91,48998,48999,49001,49003],{"class":93,"line":121},[91,49000,493],{"class":101},[91,49002,829],{"class":159},[91,49004,173],{"class":101},[16,49006,23504,49007,23508,49009,23512],{},[31,49008,23507],{},[31,49010,23511],{},[771,49012,23515],{"id":23515},[16,49014,49015,23523],{},[4306,49016,23522],{"href":23520,"rel":49017},[4310],[49,49019,23526],{"id":23526},[1722,49021,49022],{},[16,49023,23526,49024,49026,49029,23539,49031,49033],{},[21660,49025],{},[4306,49027,23535],{"href":23535,"rel":49028},[4310],[21660,49030],{},[21660,49032],{},[4306,49034,23544],{"href":23544,"rel":49035},[4310],[16,49037,23548],{},[82,49039,49041],{"className":49040,"code":23552,"language":1099},[1097],[31,49042,23552],{"__ignoreMap":87},[82,49044,49045],{"className":1154,"code":23557,"language":1156,"meta":87,"style":87},[31,49046,49047,49051,49065,49069,49073,49093,49105,49113,49117,49135,49143,49147,49159,49163,49187,49199,49209,49213,49221,49227,49231,49235],{"__ignoreMap":87},[91,49048,49049],{"class":93,"line":94},[91,49050,14780],{"class":1343},[91,49052,49053,49055,49057,49059,49061,49063],{"class":93,"line":105},[91,49054,2574],{"class":566},[91,49056,16463],{"class":566},[91,49058,14867],{"class":108},[91,49060,1366],{"class":566},[91,49062,21741],{"class":97},[91,49064,9266],{"class":101},[91,49066,49067],{"class":93,"line":121},[91,49068,23582],{"class":101},[91,49070,49071],{"class":93,"line":134},[91,49072,23587],{"class":101},[91,49074,49075,49077,49079,49081,49083,49085,49087,49089,49091],{"class":93,"line":228},[91,49076,23592],{"class":101},[91,49078,21766],{"class":1172},[91,49080,64],{"class":101},[91,49082,21771],{"class":1172},[91,49084,64],{"class":101},[91,49086,21786],{"class":1172},[91,49088,21410],{"class":101},[91,49090,1179],{"class":566},[91,49092,102],{"class":101},[91,49094,49095,49097,49099,49101,49103],{"class":93,"line":250},[91,49096,1382],{"class":566},[91,49098,17032],{"class":108},[91,49100,1366],{"class":566},[91,49102,17037],{"class":97},[91,49104,9313],{"class":101},[91,49106,49107,49109,49111],{"class":93,"line":260},[91,49108,23625],{"class":101},[91,49110,14877],{"class":97},[91,49112,17049],{"class":101},[91,49114,49115],{"class":93,"line":274},[91,49116,1450],{"emptyLinePlaceholder":846},[91,49118,49119,49121,49123,49125,49127,49129,49131,49133],{"class":93,"line":284},[91,49120,8218],{"class":566},[91,49122,2662],{"class":101},[91,49124,2499],{"class":566},[91,49126,1235],{"class":101},[91,49128,13765],{"class":108},[91,49130,23648],{"class":101},[91,49132,23651],{"class":108},[91,49134,3487],{"class":101},[91,49136,49137,49139,49141],{"class":93,"line":299},[91,49138,23658],{"class":101},[91,49140,166],{"class":566},[91,49142,23663],{"class":101},[91,49144,49145],{"class":93,"line":319},[91,49146,23668],{"class":566},[91,49148,49149,49151,49153,49155,49157],{"class":93,"line":334},[91,49150,23673],{"class":101},[91,49152,166],{"class":566},[91,49154,23678],{"class":101},[91,49156,7829],{"class":566},[91,49158,23683],{"class":101},[91,49160,49161],{"class":93,"line":355},[91,49162,1450],{"emptyLinePlaceholder":846},[91,49164,49165,49167,49169,49171,49173,49175,49177,49179,49181,49183,49185],{"class":93,"line":364},[91,49166,23692],{"class":101},[91,49168,23695],{"class":97},[91,49170,1169],{"class":101},[91,49172,23700],{"class":1172},[91,49174,64],{"class":101},[91,49176,2505],{"class":1172},[91,49178,64],{"class":101},[91,49180,23709],{"class":1172},[91,49182,1176],{"class":101},[91,49184,1179],{"class":566},[91,49186,102],{"class":101},[91,49188,49189,49191,49193,49195,49197],{"class":93,"line":378},[91,49190,13915],{"class":566},[91,49192,12158],{"class":108},[91,49194,1366],{"class":566},[91,49196,23726],{"class":97},[91,49198,17049],{"class":101},[91,49200,49201,49203,49205,49207],{"class":93,"line":387},[91,49202,13326],{"class":566},[91,49204,2662],{"class":101},[91,49206,2665],{"class":566},[91,49208,23739],{"class":101},[91,49210,49211],{"class":93,"line":402},[91,49212,23744],{"class":1343},[91,49214,49215,49217,49219],{"class":93,"line":422},[91,49216,23749],{"class":101},[91,49218,23752],{"class":97},[91,49220,9313],{"class":101},[91,49222,49223,49225],{"class":93,"line":438},[91,49224,23759],{"class":97},[91,49226,9313],{"class":101},[91,49228,49229],{"class":93,"line":458},[91,49230,23766],{"class":101},[91,49232,49233],{"class":93,"line":467},[91,49234,10581],{"class":101},[91,49236,49237],{"class":93,"line":481},[91,49238,3487],{"class":101},[16,49240,23777,49241,23781],{},[31,49242,23780],{},[82,49244,49245],{"className":1154,"code":23784,"language":1156,"meta":87,"style":87},[31,49246,49247,49251,49263,49273,49285,49289,49299,49309,49319,49329,49339,49349,49359,49363,49367,49389,49405,49425,49429,49439,49443,49469,49477,49483,49487,49491,49495,49501,49505,49509,49513,49517],{"__ignoreMap":87},[91,49248,49249],{"class":93,"line":94},[91,49250,12391],{"class":1343},[91,49252,49253,49255,49257,49259,49261],{"class":93,"line":105},[91,49254,2499],{"class":566},[91,49256,11584],{"class":101},[91,49258,2505],{"class":566},[91,49260,23801],{"class":169},[91,49262,118],{"class":101},[91,49264,49265,49267,49269,49271],{"class":93,"line":121},[91,49266,2499],{"class":566},[91,49268,16435],{"class":101},[91,49270,2505],{"class":566},[91,49272,16440],{"class":169},[91,49274,49275,49277,49279,49281,49283],{"class":93,"line":134},[91,49276,2499],{"class":566},[91,49278,16447],{"class":101},[91,49280,2505],{"class":566},[91,49282,2508],{"class":169},[91,49284,118],{"class":101},[91,49286,49287],{"class":93,"line":228},[91,49288,1450],{"emptyLinePlaceholder":846},[91,49290,49291,49293,49295,49297],{"class":93,"line":250},[91,49292,2574],{"class":566},[91,49294,11602],{"class":566},[91,49296,11605],{"class":97},[91,49298,102],{"class":101},[91,49300,49301,49303,49305,49307],{"class":93,"line":260},[91,49302,11612],{"class":1172},[91,49304,1208],{"class":566},[91,49306,1357],{"class":108},[91,49308,118],{"class":101},[91,49310,49311,49313,49315,49317],{"class":93,"line":274},[91,49312,11623],{"class":1172},[91,49314,1208],{"class":566},[91,49316,1357],{"class":108},[91,49318,118],{"class":101},[91,49320,49321,49323,49325,49327],{"class":93,"line":284},[91,49322,11645],{"class":1172},[91,49324,1208],{"class":566},[91,49326,1357],{"class":108},[91,49328,118],{"class":101},[91,49330,49331,49333,49335,49337],{"class":93,"line":299},[91,49332,16034],{"class":1172},[91,49334,1208],{"class":566},[91,49336,1357],{"class":108},[91,49338,118],{"class":101},[91,49340,49341,49343,49345,49347],{"class":93,"line":319},[91,49342,11656],{"class":1172},[91,49344,1208],{"class":566},[91,49346,1357],{"class":108},[91,49348,11663],{"class":101},[91,49350,49351,49353,49355,49357],{"class":93,"line":334},[91,49352,11668],{"class":1172},[91,49354,1208],{"class":566},[91,49356,1357],{"class":108},[91,49358,118],{"class":101},[91,49360,49361],{"class":93,"line":355},[91,49362,137],{"class":101},[91,49364,49365],{"class":93,"line":364},[91,49366,1450],{"emptyLinePlaceholder":846},[91,49368,49369,49371,49373,49375,49377,49379,49381,49383,49385,49387],{"class":93,"line":378},[91,49370,2574],{"class":566},[91,49372,16463],{"class":566},[91,49374,23916],{"class":108},[91,49376,1366],{"class":566},[91,49378,16471],{"class":97},[91,49380,795],{"class":101},[91,49382,23925],{"class":169},[91,49384,9612],{"class":101},[91,49386,1179],{"class":566},[91,49388,102],{"class":101},[91,49390,49391,49393,49395,49397,49399,49401,49403],{"class":93,"line":387},[91,49392,2641],{"class":566},[91,49394,11721],{"class":108},[91,49396,1366],{"class":566},[91,49398,16494],{"class":97},[91,49400,156],{"class":101},[91,49402,11726],{"class":97},[91,49404,23948],{"class":101},[91,49406,49407,49409,49411,49413,49415,49417,49419,49421,49423],{"class":93,"line":402},[91,49408,2641],{"class":566},[91,49410,11741],{"class":108},[91,49412,1366],{"class":566},[91,49414,16494],{"class":97},[91,49416,156],{"class":101},[91,49418,20666],{"class":108},[91,49420,23965],{"class":101},[91,49422,14028],{"class":169},[91,49424,1594],{"class":101},[91,49426,49427],{"class":93,"line":422},[91,49428,1450],{"emptyLinePlaceholder":846},[91,49430,49431,49433,49435,49437],{"class":93,"line":438},[91,49432,23978],{"class":566},[91,49434,2001],{"class":566},[91,49436,23983],{"class":97},[91,49438,9266],{"class":101},[91,49440,49441],{"class":93,"line":458},[91,49442,3866],{"class":101},[91,49444,49445,49447,49449,49451,49453,49455,49457,49459,49461,49463,49465,49467],{"class":93,"line":467},[91,49446,11994],{"class":101},[91,49448,5938],{"class":97},[91,49450,156],{"class":101},[91,49452,11726],{"class":97},[91,49454,24002],{"class":101},[91,49456,24005],{"class":169},[91,49458,8017],{"class":101},[91,49460,1200],{"class":97},[91,49462,795],{"class":101},[91,49464,12010],{"class":1172},[91,49466,11859],{"class":566},[91,49468,102],{"class":101},[91,49470,49471,49473,49475],{"class":93,"line":481},[91,49472,24022],{"class":101},[91,49474,166],{"class":566},[91,49476,12451],{"class":101},[91,49478,49479,49481],{"class":93,"line":490},[91,49480,11825],{"class":566},[91,49482,12451],{"class":101},[91,49484,49485],{"class":93,"line":3310},[91,49486,7745],{"class":101},[91,49488,49489],{"class":93,"line":3315},[91,49490,1698],{"class":101},[91,49492,49493],{"class":93,"line":3321},[91,49494,1450],{"emptyLinePlaceholder":846},[91,49496,49497,49499],{"class":93,"line":3327},[91,49498,2695],{"class":566},[91,49500,102],{"class":101},[91,49502,49503],{"class":93,"line":3333},[91,49504,24055],{"class":101},[91,49506,49507],{"class":93,"line":3338},[91,49508,24060],{"class":101},[91,49510,49511],{"class":93,"line":3343},[91,49512,24065],{"class":101},[91,49514,49515],{"class":93,"line":7882},[91,49516,1698],{"class":101},[91,49518,49519],{"class":93,"line":7887},[91,49520,9444],{"class":101},[16,49522,24076],{},[82,49524,49525],{"className":1154,"code":24079,"language":1156,"meta":87,"style":87},[31,49526,49527,49531,49535,49539,49549,49559,49569,49579,49589,49599,49633,49637,49641],{"__ignoreMap":87},[91,49528,49529],{"class":93,"line":94},[91,49530,24086],{"class":1343},[91,49532,49533],{"class":93,"line":105},[91,49534,11369],{"class":101},[91,49536,49537],{"class":93,"line":121},[91,49538,11374],{"class":101},[91,49540,49541,49543,49545,49547],{"class":93,"line":134},[91,49542,24099],{"class":169},[91,49544,112],{"class":101},[91,49546,24104],{"class":169},[91,49548,7560],{"class":101},[91,49550,49551,49553,49555,49557],{"class":93,"line":228},[91,49552,24111],{"class":169},[91,49554,112],{"class":101},[91,49556,24104],{"class":169},[91,49558,7560],{"class":101},[91,49560,49561,49563,49565,49567],{"class":93,"line":250},[91,49562,17628],{"class":169},[91,49564,112],{"class":101},[91,49566,24126],{"class":169},[91,49568,7560],{"class":101},[91,49570,49571,49573,49575,49577],{"class":93,"line":260},[91,49572,24133],{"class":169},[91,49574,112],{"class":101},[91,49576,24138],{"class":169},[91,49578,7560],{"class":101},[91,49580,49581,49583,49585,49587],{"class":93,"line":274},[91,49582,24145],{"class":169},[91,49584,112],{"class":101},[91,49586,24150],{"class":169},[91,49588,7560],{"class":101},[91,49590,49591,49593,49595,49597],{"class":93,"line":284},[91,49592,24157],{"class":169},[91,49594,112],{"class":101},[91,49596,24150],{"class":169},[91,49598,7560],{"class":101},[91,49600,49601,49603,49605,49607,49609,49611,49613,49615,49617,49619,49621,49623,49625,49627,49629,49631],{"class":93,"line":299},[91,49602,24168],{"class":169},[91,49604,11454],{"class":101},[91,49606,24173],{"class":169},[91,49608,64],{"class":101},[91,49610,24178],{"class":169},[91,49612,64],{"class":101},[91,49614,24183],{"class":169},[91,49616,64],{"class":101},[91,49618,24188],{"class":169},[91,49620,64],{"class":101},[91,49622,24193],{"class":169},[91,49624,64],{"class":101},[91,49626,24198],{"class":169},[91,49628,64],{"class":101},[91,49630,24203],{"class":169},[91,49632,11460],{"class":101},[91,49634,49635],{"class":93,"line":319},[91,49636,10581],{"class":101},[91,49638,49639],{"class":93,"line":334},[91,49640,24214],{"class":1343},[91,49642,49643],{"class":93,"line":355},[91,49644,11460],{"class":101},[16,49646,24221],{},[49,49648,15123],{"id":15123},[757,49650,24227],{"id":24226},[82,49652,49654],{"className":49653,"code":24231,"language":1099},[1097],[31,49655,24231],{"__ignoreMap":87},[16,49657,49658],{},[4306,49659,24240],{"href":24238,"rel":49660},[4310],[82,49662,49663],{"className":1154,"code":24243,"language":1156,"meta":87,"style":87},[31,49664,49665,49677,49689,49693,49709,49717],{"__ignoreMap":87},[91,49666,49667,49669,49671,49673,49675],{"class":93,"line":94},[91,49668,2499],{"class":566},[91,49670,24252],{"class":101},[91,49672,2505],{"class":566},[91,49674,24257],{"class":169},[91,49676,118],{"class":101},[91,49678,49679,49681,49683,49685,49687],{"class":93,"line":105},[91,49680,2499],{"class":566},[91,49682,24266],{"class":101},[91,49684,2505],{"class":566},[91,49686,24271],{"class":169},[91,49688,118],{"class":101},[91,49690,49691],{"class":93,"line":121},[91,49692,1450],{"emptyLinePlaceholder":846},[91,49694,49695,49697,49699,49701,49703,49705,49707],{"class":93,"line":134},[91,49696,1968],{"class":566},[91,49698,13969],{"class":101},[91,49700,24286],{"class":108},[91,49702,13985],{"class":101},[91,49704,166],{"class":566},[91,49706,24293],{"class":108},[91,49708,118],{"class":101},[91,49710,49711,49713,49715],{"class":93,"line":228},[91,49712,24300],{"class":101},[91,49714,24303],{"class":97},[91,49716,24306],{"class":101},[91,49718,49719,49721,49723],{"class":93,"line":250},[91,49720,24300],{"class":101},[91,49722,24303],{"class":97},[91,49724,24315],{"class":101},[16,49726,24318,49727,24321,49729,24325,49731,24329],{},[31,49728,21653],{},[31,49730,24324],{},[31,49732,24328],{},[757,49734,5310],{"id":5310},[16,49736,49737,24336,49739,24340],{},[31,49738,21653],{},[31,49740,24339],{},[82,49742,49744],{"className":49743,"code":24344,"language":1099},[1097],[31,49745,24344],{"__ignoreMap":87},[16,49747,49748,24352],{},[31,49749,24351],{},[82,49751,49752],{"className":1154,"code":24355,"language":1156,"meta":87,"style":87},[31,49753,49754,49766,49770,49780,49786,49794],{"__ignoreMap":87},[91,49755,49756,49758,49760,49762,49764],{"class":93,"line":94},[91,49757,1968],{"class":566},[91,49759,13057],{"class":108},[91,49761,1366],{"class":566},[91,49763,23916],{"class":97},[91,49765,2030],{"class":101},[91,49767,49768],{"class":93,"line":105},[91,49769,1450],{"emptyLinePlaceholder":846},[91,49771,49772,49774,49776,49778],{"class":93,"line":121},[91,49773,2085],{"class":97},[91,49775,2088],{"class":101},[91,49777,1179],{"class":566},[91,49779,102],{"class":101},[91,49781,49782,49784],{"class":93,"line":134},[91,49783,24388],{"class":97},[91,49785,2030],{"class":101},[91,49787,49788,49790,49792],{"class":93,"line":228},[91,49789,24395],{"class":101},[91,49791,24398],{"class":97},[91,49793,2030],{"class":101},[91,49795,49796],{"class":93,"line":250},[91,49797,9444],{"class":101},[16,49799,24407,49800,24410],{},[31,49801,24339],{},[829,49803,24413],{},{"title":87,"searchDepth":105,"depth":105,"links":49805},[49806,49807,49808,49809,49813,49814,49817,49822,49823],{"id":21640,"depth":105,"text":21641},{"id":21653,"depth":105,"text":21653},{"id":21818,"depth":105,"text":21818},{"id":21837,"depth":105,"text":21837,"children":49810},[49811,49812],{"id":22133,"depth":121,"text":22134},{"id":22167,"depth":121,"text":22168},{"id":22427,"depth":105,"text":22427},{"id":22723,"depth":105,"text":22723,"children":49815},[49816],{"id":22854,"depth":121,"text":22855},{"id":23049,"depth":105,"text":23050,"children":49818},[49819,49820,49821],{"id":23053,"depth":121,"text":23053},{"id":23072,"depth":121,"text":23072},{"id":23376,"depth":121,"text":23376},{"id":23526,"depth":105,"text":23526},{"id":15123,"depth":105,"text":15123,"children":49824},[49825,49826],{"id":24226,"depth":121,"text":24227},{"id":5310,"depth":121,"text":5310},{},{"title":21624,"description":24438},{"loc":24441},[19761,15042,15043,15044,15045,15046],{"id":24448,"title":24449,"body":49832,"created":24632,"description":24633,"extension":843,"filename":24634,"meta":49984,"navigation":846,"path":24636,"seo":49985,"sitemap":49986,"stem":24639,"subject":2862,"tags":49987,"updated":24632,"volume":1863,"__hash__":24645},{"type":8,"value":49833,"toc":49981},[49834,49839,49841,49909,49911,49975,49979],[16,49835,49836],{},[4306,49837,24458],{"href":24456,"rel":49838},[4310],[16,49840,24461],{},[82,49842,49843],{"className":1154,"code":24464,"language":1156,"meta":87,"style":87},[31,49844,49845,49855,49877,49881,49893,49897,49901,49905],{"__ignoreMap":87},[91,49846,49847,49849,49851,49853],{"class":93,"line":94},[91,49848,1349],{"class":566},[91,49850,17223],{"class":101},[91,49852,166],{"class":566},[91,49854,24477],{"class":108},[91,49856,49857,49859,49861,49863,49865,49867,49869,49871,49873,49875],{"class":93,"line":105},[91,49858,24482],{"class":97},[91,49860,2088],{"class":101},[91,49862,1179],{"class":566},[91,49864,24489],{"class":101},[91,49866,1225],{"class":97},[91,49868,795],{"class":101},[91,49870,17243],{"class":566},[91,49872,24498],{"class":101},[91,49874,5637],{"class":108},[91,49876,3487],{"class":101},[91,49878,49879],{"class":93,"line":121},[91,49880,1450],{"emptyLinePlaceholder":846},[91,49882,49883,49885,49887,49889,49891],{"class":93,"line":134},[91,49884,24511],{"class":101},[91,49886,24514],{"class":97},[91,49888,795],{"class":101},[91,49890,24519],{"class":108},[91,49892,3487],{"class":101},[91,49894,49895],{"class":93,"line":228},[91,49896,1450],{"emptyLinePlaceholder":846},[91,49898,49899],{"class":93,"line":250},[91,49900,24530],{"class":1343},[91,49902,49903],{"class":93,"line":260},[91,49904,24535],{"class":1343},[91,49906,49907],{"class":93,"line":274},[91,49908,24540],{"class":1343},[49,49910,24544],{"id":24543},[82,49912,49913],{"className":1154,"code":24547,"language":1156,"meta":87,"style":87},[31,49914,49915,49925,49933,49937,49941,49945,49953,49971],{"__ignoreMap":87},[91,49916,49917,49919,49921,49923],{"class":93,"line":94},[91,49918,1998],{"class":566},[91,49920,2001],{"class":566},[91,49922,24558],{"class":97},[91,49924,2007],{"class":101},[91,49926,49927,49929,49931],{"class":93,"line":105},[91,49928,2254],{"class":566},[91,49930,24567],{"class":97},[91,49932,2030],{"class":101},[91,49934,49935],{"class":93,"line":121},[91,49936,21891],{"class":1343},[91,49938,49939],{"class":93,"line":134},[91,49940,137],{"class":101},[91,49942,49943],{"class":93,"line":228},[91,49944,1450],{"emptyLinePlaceholder":846},[91,49946,49947,49949,49951],{"class":93,"line":250},[91,49948,7471],{"class":566},[91,49950,24588],{"class":97},[91,49952,2007],{"class":101},[91,49954,49955,49957,49959,49961,49963,49965,49967,49969],{"class":93,"line":260},[91,49956,24595],{"class":101},[91,49958,166],{"class":566},[91,49960,24600],{"class":97},[91,49962,24603],{"class":101},[91,49964,24606],{"class":108},[91,49966,24609],{"class":566},[91,49968,24612],{"class":108},[91,49970,1594],{"class":101},[91,49972,49973],{"class":93,"line":274},[91,49974,137],{"class":101},[16,49976,24621,49977,24625],{},[31,49978,24624],{},[829,49980,24628],{},{"title":87,"searchDepth":105,"depth":105,"links":49982},[49983],{"id":24543,"depth":105,"text":24544},{},{"title":24449,"description":24633},{"loc":24636},[24641,24642,24643,24644],{"id":24647,"title":24648,"body":49989,"created":25157,"description":25158,"extension":843,"filename":25159,"meta":50419,"navigation":846,"path":25161,"seo":50420,"sitemap":50421,"stem":25164,"subject":2862,"tags":50422,"updated":25157,"volume":1863,"__hash__":25170},{"type":8,"value":49990,"toc":50411},[49991,49993,49997,49999,50085,50091,50093,50189,50191,50199,50203,50221,50223,50229,50289,50291,50293,50341,50349,50399,50403,50405,50407,50409],[49,49992,24654],{"id":24653},[16,49994,24657,49995,24661],{},[792,49996,24660],{},[757,49998,24665],{"id":24664},[82,50000,50001],{"className":11559,"code":24668,"language":11561,"meta":87,"style":87},[31,50002,50003,50013,50017,50027,50037,50043,50047,50055,50063,50081],{"__ignoreMap":87},[91,50004,50005,50007,50009,50011],{"class":93,"line":94},[91,50006,2499],{"class":566},[91,50008,24677],{"class":101},[91,50010,2505],{"class":566},[91,50012,24682],{"class":169},[91,50014,50015],{"class":93,"line":105},[91,50016,8486],{"class":101},[91,50018,50019,50021,50023,50025],{"class":93,"line":121},[91,50020,22202],{"class":97},[91,50022,112],{"class":101},[91,50024,24695],{"class":169},[91,50026,7560],{"class":101},[91,50028,50029,50031,50033,50035],{"class":93,"line":134},[91,50030,19986],{"class":97},[91,50032,112],{"class":101},[91,50034,24706],{"class":169},[91,50036,7560],{"class":101},[91,50038,50039,50041],{"class":93,"line":228},[91,50040,22214],{"class":97},[91,50042,24715],{"class":101},[91,50044,50045],{"class":93,"line":250},[91,50046,24720],{"class":101},[91,50048,50049,50051,50053],{"class":93,"line":260},[91,50050,24725],{"class":101},[91,50052,24728],{"class":169},[91,50054,7560],{"class":101},[91,50056,50057,50059,50061],{"class":93,"line":274},[91,50058,24735],{"class":101},[91,50060,24738],{"class":169},[91,50062,7560],{"class":101},[91,50064,50065,50067,50069,50071,50073,50075,50077,50079],{"class":93,"line":284},[91,50066,22214],{"class":97},[91,50068,24747],{"class":101},[91,50070,1179],{"class":566},[91,50072,24752],{"class":97},[91,50074,795],{"class":101},[91,50076,24757],{"class":1343},[91,50078,24760],{"class":169},[91,50080,3487],{"class":101},[91,50082,50083],{"class":93,"line":299},[91,50084,137],{"class":101},[16,50086,24769,50087,24773,50089,24776],{},[31,50088,24772],{},[31,50090,24772],{},[771,50092,24780],{"id":24779},[82,50094,50095],{"className":11559,"code":24783,"language":11561,"meta":87,"style":87},[31,50096,50097,50101,50105,50115,50125,50143,50147,50151,50159,50167,50185],{"__ignoreMap":87},[91,50098,50099],{"class":93,"line":94},[91,50100,8486],{"class":101},[91,50102,50103],{"class":93,"line":105},[91,50104,24794],{"class":1343},[91,50106,50107,50109,50111,50113],{"class":93,"line":121},[91,50108,22202],{"class":97},[91,50110,112],{"class":101},[91,50112,24695],{"class":169},[91,50114,7560],{"class":101},[91,50116,50117,50119,50121,50123],{"class":93,"line":134},[91,50118,19986],{"class":97},[91,50120,112],{"class":101},[91,50122,24706],{"class":169},[91,50124,7560],{"class":101},[91,50126,50127,50129,50131,50133,50135,50137,50139,50141],{"class":93,"line":228},[91,50128,24819],{"class":97},[91,50130,24747],{"class":101},[91,50132,1179],{"class":566},[91,50134,24752],{"class":97},[91,50136,795],{"class":101},[91,50138,24830],{"class":1343},[91,50140,24833],{"class":169},[91,50142,3487],{"class":101},[91,50144,50145],{"class":93,"line":250},[91,50146,24720],{"class":101},[91,50148,50149],{"class":93,"line":260},[91,50150,24844],{"class":1343},[91,50152,50153,50155,50157],{"class":93,"line":274},[91,50154,24725],{"class":101},[91,50156,24728],{"class":169},[91,50158,7560],{"class":101},[91,50160,50161,50163,50165],{"class":93,"line":284},[91,50162,24735],{"class":101},[91,50164,24738],{"class":169},[91,50166,7560],{"class":101},[91,50168,50169,50171,50173,50175,50177,50179,50181,50183],{"class":93,"line":299},[91,50170,22214],{"class":97},[91,50172,24747],{"class":101},[91,50174,1179],{"class":566},[91,50176,24752],{"class":97},[91,50178,795],{"class":101},[91,50180,24757],{"class":1343},[91,50182,24760],{"class":169},[91,50184,3487],{"class":101},[91,50186,50187],{"class":93,"line":319},[91,50188,137],{"class":101},[16,50190,24885],{},[24,50192,50193,50195,50197],{},[27,50194,24890],{},[27,50196,24893],{},[27,50198,24896],{},[16,50200,24899,50201,24902],{},[792,50202,24896],{},[24,50204,50205,50213],{},[27,50206,24907,50207,22871,50209,24912,50211,24915],{},[792,50208,24890],{},[792,50210,24896],{},[792,50212,24893],{},[27,50214,24918,50215,22871,50217,24912,50219,24915],{},[792,50216,24893],{},[792,50218,24896],{},[792,50220,24890],{},[49,50222,24928],{"id":24927},[16,50224,24931,50225,24934,50227,24937],{},[31,50226,24927],{},[31,50228,17698],{},[82,50230,50231],{"className":11559,"code":24940,"language":11561,"meta":87,"style":87},[31,50232,50233,50241,50261,50281],{"__ignoreMap":87},[91,50234,50235,50237,50239],{"class":93,"line":94},[91,50236,156],{"class":101},[91,50238,13756],{"class":159},[91,50240,173],{"class":101},[91,50242,50243,50245,50247,50249,50251,50253,50255,50257,50259],{"class":93,"line":105},[91,50244,178],{"class":101},[91,50246,24957],{"class":159},[91,50248,24960],{"class":97},[91,50250,166],{"class":566},[91,50252,24965],{"class":169},[91,50254,16123],{"class":97},[91,50256,166],{"class":566},[91,50258,24972],{"class":169},[91,50260,173],{"class":101},[91,50262,50263,50265,50267,50269,50271,50273,50275,50277,50279],{"class":93,"line":121},[91,50264,178],{"class":101},[91,50266,24957],{"class":159},[91,50268,24960],{"class":97},[91,50270,166],{"class":566},[91,50272,24987],{"class":169},[91,50274,16123],{"class":97},[91,50276,166],{"class":566},[91,50278,24972],{"class":169},[91,50280,173],{"class":101},[91,50282,50283,50285,50287],{"class":93,"line":134},[91,50284,156],{"class":101},[91,50286,13756],{"class":159},[91,50288,173],{"class":101},[16,50290,25006],{},[49,50292,25010],{"id":25009},[82,50294,50295],{"className":11559,"code":25013,"language":11561,"meta":87,"style":87},[31,50296,50297,50309,50321,50333,50337],{"__ignoreMap":87},[91,50298,50299,50301,50303,50305,50307],{"class":93,"line":94},[91,50300,10966],{"class":108},[91,50302,1235],{"class":101},[91,50304,10971],{"class":108},[91,50306,1366],{"class":566},[91,50308,102],{"class":101},[91,50310,50311,50313,50315,50317,50319],{"class":93,"line":105},[91,50312,25032],{"class":97},[91,50314,112],{"class":101},[91,50316,13315],{"class":1172},[91,50318,11859],{"class":566},[91,50320,102],{"class":101},[91,50322,50323,50325,50327,50329,50331],{"class":93,"line":121},[91,50324,13345],{"class":101},[91,50326,25047],{"class":97},[91,50328,795],{"class":101},[91,50330,25052],{"class":169},[91,50332,1594],{"class":101},[91,50334,50335],{"class":93,"line":134},[91,50336,1693],{"class":101},[91,50338,50339],{"class":93,"line":228},[91,50340,137],{"class":101},[16,50342,50343,25067,50345,25071,50347,25074],{},[792,50344,25009],{},[31,50346,25070],{},[31,50348,24927],{},[82,50350,50351],{"className":11559,"code":25077,"language":11561,"meta":87,"style":87},[31,50352,50353,50357,50367,50377,50395],{"__ignoreMap":87},[91,50354,50355],{"class":93,"line":94},[91,50356,8486],{"class":101},[91,50358,50359,50361,50363,50365],{"class":93,"line":105},[91,50360,25088],{"class":97},[91,50362,112],{"class":101},[91,50364,25093],{"class":169},[91,50366,7560],{"class":101},[91,50368,50369,50371,50373,50375],{"class":93,"line":121},[91,50370,25100],{"class":97},[91,50372,112],{"class":101},[91,50374,25105],{"class":169},[91,50376,7560],{"class":101},[91,50378,50379,50381,50383,50385,50387,50389,50391,50393],{"class":93,"line":134},[91,50380,24819],{"class":97},[91,50382,24747],{"class":101},[91,50384,1179],{"class":566},[91,50386,24752],{"class":97},[91,50388,795],{"class":101},[91,50390,25122],{"class":1343},[91,50392,25125],{"class":169},[91,50394,8037],{"class":101},[91,50396,50397],{"class":93,"line":228},[91,50398,137],{"class":101},[16,50400,25134,50401,25137],{},[792,50402,21680],{},[49,50404,19761],{"id":21618},[16,50406,25142],{},[16,50408,25145],{},[829,50410,25148],{},{"title":87,"searchDepth":105,"depth":105,"links":50412},[50413,50416,50417,50418],{"id":24653,"depth":105,"text":24654,"children":50414},[50415],{"id":24664,"depth":121,"text":24665},{"id":24927,"depth":105,"text":24928},{"id":25009,"depth":105,"text":25010},{"id":21618,"depth":105,"text":19761},{},{"title":24648,"description":25158},{"loc":25161},[15042,25166,15043,24654,25167,25168,25169],{"id":25172,"title":25173,"body":50424,"created":29552,"description":29553,"extension":843,"filename":29554,"meta":54180,"navigation":846,"path":29556,"seo":54181,"sitemap":54182,"stem":29559,"subject":2862,"tags":54183,"updated":29552,"volume":4441,"__hash__":29563},{"type":8,"value":50425,"toc":54166},[50426,50428,50430,50432,50434,50436,50440,50448,50450,50452,50456,50942,50954,50982,50986,50988,51006,51008,51162,51174,51484,51486,51494,51502,51512,51518,51730,51736,51742,51950,51956,52506,52510,52524,52532,52548,52550,52556,52778,52784,52786,52792,52794,52832,52838,52864,52868,52870,52882,52934,52936,52938,52940,52946,53014,53016,53026,53048,53052,53054,53140,53142,53162,53164,53168,53170,53174,53176,53180,53186,53306,53308,53310,53490,53492,53650,53652,53656,53660,53664,53760,53768,53770,53772,53776,53892,53900,53902,53904,54042,54048,54162,54164],[49,50427,25179],{"id":25178},[16,50429,25182],{},[16,50431,25185],{},[16,50433,25188],{},[49,50435,25192],{"id":25191},[16,50437,50438],{},[19,50439],{"alt":21,"src":25197},[16,50441,25200,50442,22871,50444,25207,50446,25210],{},[31,50443,25203],{},[31,50445,25206],{},[31,50447,25206],{},[757,50449,25214],{"id":25213},[16,50451,25217],{},[16,50453,25220,50454,25224],{},[31,50455,25223],{},[82,50457,50458],{"className":10952,"code":25227,"language":10954,"meta":87,"style":87},[31,50459,50460,50468,50476,50484,50496,50518,50524,50538,50546,50550,50560,50564,50568,50572,50578,50586,50590,50596,50604,50614,50620,50624,50628,50632,50654,50658,50674,50696,50708,50714,50718,50734,50740,50744,50750,50758,50762,50770,50774,50780,50784,50804,50812,50818,50822,50828,50836,50840,50860,50874,50882,50892,50896,50900,50904,50908,50912,50916,50922,50930,50934,50938],{"__ignoreMap":87},[91,50461,50462,50464,50466],{"class":93,"line":94},[91,50463,17283],{"class":101},[91,50465,25236],{"class":97},[91,50467,25239],{"class":101},[91,50469,50470,50472,50474],{"class":93,"line":105},[91,50471,25244],{"class":101},[91,50473,7557],{"class":108},[91,50475,7560],{"class":101},[91,50477,50478,50480,50482],{"class":93,"line":121},[91,50479,25253],{"class":101},[91,50481,7557],{"class":108},[91,50483,7560],{"class":101},[91,50485,50486,50488,50490,50492,50494],{"class":93,"line":134},[91,50487,11756],{"class":97},[91,50489,112],{"class":101},[91,50491,7471],{"class":566},[91,50493,25268],{"class":97},[91,50495,2007],{"class":101},[91,50497,50498,50500,50502,50504,50506,50508,50510,50512,50514,50516],{"class":93,"line":228},[91,50499,25275],{"class":566},[91,50501,25278],{"class":101},[91,50503,166],{"class":566},[91,50505,25283],{"class":101},[91,50507,8372],{"class":566},[91,50509,25288],{"class":101},[91,50511,17399],{"class":97},[91,50513,25293],{"class":101},[91,50515,1208],{"class":566},[91,50517,25298],{"class":101},[91,50519,50520,50522],{"class":93,"line":250},[91,50521,13326],{"class":566},[91,50523,25305],{"class":101},[91,50525,50526,50528,50530,50532,50534,50536],{"class":93,"line":260},[91,50527,25310],{"class":566},[91,50529,13329],{"class":101},[91,50531,13332],{"class":108},[91,50533,25317],{"class":566},[91,50535,13338],{"class":169},[91,50537,3866],{"class":101},[91,50539,50540,50542,50544],{"class":93,"line":274},[91,50541,25326],{"class":101},[91,50543,25329],{"class":97},[91,50545,7549],{"class":101},[91,50547,50548],{"class":93,"line":284},[91,50549,25336],{"class":101},[91,50551,50552,50554,50556,50558],{"class":93,"line":299},[91,50553,25341],{"class":101},[91,50555,25344],{"class":169},[91,50557,25347],{"class":1343},[91,50559,7560],{"class":101},[91,50561,50562],{"class":93,"line":319},[91,50563,25354],{"class":101},[91,50565,50566],{"class":93,"line":334},[91,50567,25359],{"class":101},[91,50569,50570],{"class":93,"line":355},[91,50571,25364],{"class":101},[91,50573,50574,50576],{"class":93,"line":364},[91,50575,25369],{"class":566},[91,50577,102],{"class":101},[91,50579,50580,50582,50584],{"class":93,"line":378},[91,50581,25326],{"class":101},[91,50583,25329],{"class":97},[91,50585,2030],{"class":101},[91,50587,50588],{"class":93,"line":387},[91,50589,25364],{"class":101},[91,50591,50592,50594],{"class":93,"line":402},[91,50593,25310],{"class":566},[91,50595,25390],{"class":101},[91,50597,50598,50600,50602],{"class":93,"line":422},[91,50599,25395],{"class":101},[91,50601,25329],{"class":97},[91,50603,2030],{"class":101},[91,50605,50606,50608,50610,50612],{"class":93,"line":438},[91,50607,25404],{"class":566},[91,50609,2662],{"class":101},[91,50611,25409],{"class":97},[91,50613,25412],{"class":101},[91,50615,50616,50618],{"class":93,"line":458},[91,50617,25417],{"class":97},[91,50619,17413],{"class":101},[91,50621,50622],{"class":93,"line":467},[91,50623,25424],{"class":101},[91,50625,50626],{"class":93,"line":481},[91,50627,25364],{"class":101},[91,50629,50630],{"class":93,"line":490},[91,50631,10095],{"class":101},[91,50633,50634,50636,50638,50640,50642,50644,50646,50648,50650,50652],{"class":93,"line":3310},[91,50635,11825],{"class":566},[91,50637,25439],{"class":97},[91,50639,8369],{"class":101},[91,50641,5232],{"class":566},[91,50643,7832],{"class":566},[91,50645,25448],{"class":101},[91,50647,8372],{"class":566},[91,50649,25453],{"class":101},[91,50651,1208],{"class":566},[91,50653,8384],{"class":101},[91,50655,50656],{"class":93,"line":3315},[91,50657,10581],{"class":101},[91,50659,50660,50662,50664,50666,50668,50670,50672],{"class":93,"line":3321},[91,50661,25466],{"class":97},[91,50663,112],{"class":101},[91,50665,7471],{"class":566},[91,50667,25473],{"class":97},[91,50669,795],{"class":101},[91,50671,25478],{"class":1172},[91,50673,3866],{"class":101},[91,50675,50676,50678,50680,50682,50684,50686,50688,50690,50692,50694],{"class":93,"line":3327},[91,50677,25275],{"class":566},[91,50679,25278],{"class":101},[91,50681,166],{"class":566},[91,50683,25283],{"class":101},[91,50685,8372],{"class":566},[91,50687,25288],{"class":101},[91,50689,17399],{"class":97},[91,50691,25293],{"class":101},[91,50693,1208],{"class":566},[91,50695,25298],{"class":101},[91,50697,50698,50700,50702,50704,50706],{"class":93,"line":3333},[91,50699,13326],{"class":566},[91,50701,2662],{"class":101},[91,50703,2665],{"class":566},[91,50705,25513],{"class":97},[91,50707,25516],{"class":101},[91,50709,50710,50712],{"class":93,"line":3338},[91,50711,21275],{"class":566},[91,50713,118],{"class":101},[91,50715,50716],{"class":93,"line":3343},[91,50717,10095],{"class":101},[91,50719,50720,50722,50724,50726,50728,50730,50732],{"class":93,"line":7882},[91,50721,13326],{"class":566},[91,50723,13329],{"class":101},[91,50725,13332],{"class":108},[91,50727,25317],{"class":566},[91,50729,13338],{"class":169},[91,50731,25541],{"class":566},[91,50733,25544],{"class":101},[91,50735,50736,50738],{"class":93,"line":7887},[91,50737,25549],{"class":97},[91,50739,2030],{"class":101},[91,50741,50742],{"class":93,"line":7892},[91,50743,10095],{"class":101},[91,50745,50746,50748],{"class":93,"line":7906},[91,50747,13326],{"class":566},[91,50749,25562],{"class":101},[91,50751,50752,50754,50756],{"class":93,"line":7922},[91,50753,25567],{"class":101},[91,50755,17399],{"class":97},[91,50757,25572],{"class":101},[91,50759,50760],{"class":93,"line":7927},[91,50761,10095],{"class":101},[91,50763,50764,50766,50768],{"class":93,"line":7967},[91,50765,25581],{"class":566},[91,50767,19420],{"class":566},[91,50769,25586],{"class":101},[91,50771,50772],{"class":93,"line":7983},[91,50773,25591],{"class":1343},[91,50775,50776,50778],{"class":93,"line":7988},[91,50777,21275],{"class":566},[91,50779,118],{"class":101},[91,50781,50782],{"class":93,"line":7993},[91,50783,10095],{"class":101},[91,50785,50786,50788,50790,50792,50794,50796,50798,50800,50802],{"class":93,"line":8000},[91,50787,25581],{"class":566},[91,50789,19420],{"class":566},[91,50791,2662],{"class":101},[91,50793,25612],{"class":97},[91,50795,8369],{"class":101},[91,50797,5232],{"class":566},[91,50799,7832],{"class":566},[91,50801,25612],{"class":97},[91,50803,25623],{"class":101},[91,50805,50806,50808,50810],{"class":93,"line":8040},[91,50807,25628],{"class":101},[91,50809,166],{"class":566},[91,50811,25633],{"class":101},[91,50813,50814,50816],{"class":93,"line":8046},[91,50815,21275],{"class":566},[91,50817,118],{"class":101},[91,50819,50820],{"class":93,"line":8080},[91,50821,10095],{"class":101},[91,50823,50824,50826],{"class":93,"line":8086},[91,50825,25581],{"class":566},[91,50827,102],{"class":101},[91,50829,50830,50832,50834],{"class":93,"line":12052},[91,50831,25654],{"class":101},[91,50833,166],{"class":566},[91,50835,25633],{"class":101},[91,50837,50838],{"class":93,"line":12070},[91,50839,10095],{"class":101},[91,50841,50842,50844,50846,50848,50850,50852,50854,50856,50858],{"class":93,"line":12087},[91,50843,25667],{"class":101},[91,50845,166],{"class":566},[91,50847,7832],{"class":566},[91,50849,25448],{"class":101},[91,50851,5232],{"class":566},[91,50853,25678],{"class":97},[91,50855,25681],{"class":101},[91,50857,7780],{"class":108},[91,50859,25686],{"class":101},[91,50861,50862,50864,50866,50868,50870,50872],{"class":93,"line":12092},[91,50863,13326],{"class":566},[91,50865,13329],{"class":101},[91,50867,13332],{"class":108},[91,50869,25317],{"class":566},[91,50871,13338],{"class":169},[91,50873,3866],{"class":101},[91,50875,50876,50878,50880],{"class":93,"line":12097},[91,50877,25705],{"class":101},[91,50879,25708],{"class":97},[91,50881,7549],{"class":101},[91,50883,50884,50886,50888,50890],{"class":93,"line":12102},[91,50885,25715],{"class":101},[91,50887,25718],{"class":169},[91,50889,25721],{"class":1343},[91,50891,7560],{"class":101},[91,50893,50894],{"class":93,"line":25726},[91,50895,25729],{"class":101},[91,50897,50898],{"class":93,"line":25732},[91,50899,25735],{"class":101},[91,50901,50902],{"class":93,"line":25738},[91,50903,25741],{"class":101},[91,50905,50906],{"class":93,"line":25744},[91,50907,25747],{"class":101},[91,50909,50910],{"class":93,"line":25750},[91,50911,25753],{"class":101},[91,50913,50914],{"class":93,"line":25756},[91,50915,10095],{"class":101},[91,50917,50918,50920],{"class":93,"line":25761},[91,50919,25581],{"class":566},[91,50921,102],{"class":101},[91,50923,50924,50926,50928],{"class":93,"line":25768},[91,50925,25705],{"class":101},[91,50927,25708],{"class":97},[91,50929,2030],{"class":101},[91,50931,50932],{"class":93,"line":25777},[91,50933,10095],{"class":101},[91,50935,50936],{"class":93,"line":25782},[91,50937,1698],{"class":101},[91,50939,50940],{"class":93,"line":25787},[91,50941,1303],{"class":101},[16,50943,25792,50944,14382,50946,25799,50948,14382,50950,25805,50952,25809],{},[31,50945,25795],{},[31,50947,25798],{},[31,50949,5938],{},[31,50951,25804],{},[31,50953,25808],{},[4530,50955,50956,50960,50962,50964,50968,50972,50976],{},[27,50957,50958,25816],{},[31,50959,25804],{},[27,50961,25819],{},[27,50963,25822],{},[27,50965,50966,25828],{},[31,50967,25827],{},[27,50969,50970,25834],{},[31,50971,25833],{},[27,50973,25837,50974,25841],{},[31,50975,25840],{},[27,50977,25844,50978,25848,50980,25852],{},[31,50979,25847],{},[31,50981,25851],{},[16,50983,50984],{},[19,50985],{"alt":21,"src":25857},[16,50987,25860],{},[24,50989,50990,50992,50994,50996,50998,51002,51004],{},[27,50991,25865],{},[27,50993,25868],{},[27,50995,25871],{},[27,50997,25874],{},[27,50999,25877,51000,25881],{},[792,51001,25880],{},[27,51003,25884],{},[27,51005,25887],{},[757,51007,25891],{"id":25890},[82,51009,51010],{"className":10952,"code":25894,"language":10954,"meta":87,"style":87},[31,51011,51012,51032,51054,51072,51082,51094,51098,51110,51120,51124,51130,51140,51144,51148,51152,51158],{"__ignoreMap":87},[91,51013,51014,51016,51018,51020,51022,51024,51026,51028,51030],{"class":93,"line":94},[91,51015,5626],{"class":566},[91,51017,25903],{"class":101},[91,51019,166],{"class":566},[91,51021,25908],{"class":1343},[91,51023,25911],{"class":566},[91,51025,25914],{"class":1343},[91,51027,2662],{"class":101},[91,51029,7471],{"class":566},[91,51031,25921],{"class":101},[91,51033,51034,51036,51038,51040,51042,51044,51046,51048,51050,51052],{"class":93,"line":105},[91,51035,25926],{"class":108},[91,51037,1235],{"class":101},[91,51039,17514],{"class":108},[91,51041,1235],{"class":101},[91,51043,25935],{"class":97},[91,51045,1366],{"class":566},[91,51047,2001],{"class":566},[91,51049,2662],{"class":101},[91,51051,25944],{"class":1172},[91,51053,25947],{"class":101},[91,51055,51056,51058,51060,51062,51064,51066,51068,51070],{"class":93,"line":121},[91,51057,25926],{"class":108},[91,51059,1235],{"class":101},[91,51061,17514],{"class":108},[91,51063,1235],{"class":101},[91,51065,25960],{"class":97},[91,51067,1366],{"class":566},[91,51069,2001],{"class":566},[91,51071,25921],{"class":101},[91,51073,51074,51076,51078,51080],{"class":93,"line":134},[91,51075,10068],{"class":566},[91,51077,2662],{"class":101},[91,51079,11782],{"class":108},[91,51081,25977],{"class":101},[91,51083,51084,51086,51088,51090,51092],{"class":93,"line":228},[91,51085,25982],{"class":108},[91,51087,25985],{"class":101},[91,51089,166],{"class":566},[91,51091,20228],{"class":108},[91,51093,118],{"class":101},[91,51095,51096],{"class":93,"line":250},[91,51097,3307],{"class":101},[91,51099,51100,51102,51104,51106,51108],{"class":93,"line":260},[91,51101,26000],{"class":566},[91,51103,19420],{"class":566},[91,51105,2662],{"class":101},[91,51107,11782],{"class":108},[91,51109,26009],{"class":101},[91,51111,51112,51114,51116,51118],{"class":93,"line":274},[91,51113,25982],{"class":108},[91,51115,1235],{"class":101},[91,51117,25847],{"class":97},[91,51119,2030],{"class":101},[91,51121,51122],{"class":93,"line":284},[91,51123,3307],{"class":101},[91,51125,51126,51128],{"class":93,"line":299},[91,51127,26000],{"class":566},[91,51129,102],{"class":101},[91,51131,51132,51134,51136,51138],{"class":93,"line":319},[91,51133,26034],{"class":97},[91,51135,795],{"class":101},[91,51137,11782],{"class":108},[91,51139,1594],{"class":101},[91,51141,51142],{"class":93,"line":334},[91,51143,3307],{"class":101},[91,51145,51146],{"class":93,"line":355},[91,51147,19566],{"class":101},[91,51149,51150],{"class":93,"line":364},[91,51151,26053],{"class":1343},[91,51153,51154,51156],{"class":93,"line":378},[91,51155,2695],{"class":566},[91,51157,26060],{"class":101},[91,51159,51160],{"class":93,"line":387},[91,51161,26065],{"class":101},[16,51163,26068,51164,26071,51166,26074,51168,26078,51170,26082,51172,26085],{},[31,51165,25804],{},[31,51167,25708],{},[31,51169,26077],{},[31,51171,26081],{},[31,51173,25847],{},[82,51175,51176],{"className":10952,"code":26088,"language":10954,"meta":87,"style":87},[31,51177,51178,51186,51196,51206,51212,51240,51264,51272,51278,51286,51290,51298,51308,51316,51338,51358,51370,51380,51384,51408,51416,51422,51426,51430,51434,51448,51462,51468,51474,51480],{"__ignoreMap":87},[91,51179,51180,51182,51184],{"class":93,"line":94},[91,51181,7471],{"class":566},[91,51183,26097],{"class":97},[91,51185,2007],{"class":101},[91,51187,51188,51190,51192,51194],{"class":93,"line":105},[91,51189,26104],{"class":101},[91,51191,166],{"class":566},[91,51193,26109],{"class":97},[91,51195,2030],{"class":101},[91,51197,51198,51200,51202,51204],{"class":93,"line":121},[91,51199,26116],{"class":101},[91,51201,166],{"class":566},[91,51203,20228],{"class":108},[91,51205,118],{"class":101},[91,51207,51208,51210],{"class":93,"line":134},[91,51209,26127],{"class":566},[91,51211,26130],{"class":101},[91,51213,51214,51216,51218,51220,51222,51224,51226,51228,51230,51232,51234,51236,51238],{"class":93,"line":228},[91,51215,26135],{"class":101},[91,51217,26138],{"class":97},[91,51219,795],{"class":101},[91,51221,7471],{"class":566},[91,51223,2662],{"class":101},[91,51225,4306],{"class":1172},[91,51227,64],{"class":101},[91,51229,26151],{"class":1172},[91,51231,19432],{"class":101},[91,51233,12966],{"class":566},[91,51235,26158],{"class":101},[91,51237,8409],{"class":566},[91,51239,26163],{"class":101},[91,51241,51242,51244,51246,51248,51250,51252,51254,51256,51258,51260,51262],{"class":93,"line":250},[91,51243,26168],{"class":566},[91,51245,26171],{"class":101},[91,51247,166],{"class":566},[91,51249,11817],{"class":108},[91,51251,26178],{"class":101},[91,51253,156],{"class":566},[91,51255,26183],{"class":101},[91,51257,11811],{"class":108},[91,51259,26188],{"class":101},[91,51261,17243],{"class":566},[91,51263,3866],{"class":101},[91,51265,51266,51268,51270],{"class":93,"line":260},[91,51267,26197],{"class":101},[91,51269,166],{"class":566},[91,51271,26202],{"class":101},[91,51273,51274,51276],{"class":93,"line":274},[91,51275,10068],{"class":566},[91,51277,26209],{"class":101},[91,51279,51280,51282,51284],{"class":93,"line":284},[91,51281,26214],{"class":101},[91,51283,26217],{"class":97},[91,51285,2030],{"class":101},[91,51287,51288],{"class":93,"line":299},[91,51289,3307],{"class":101},[91,51291,51292,51294,51296],{"class":93,"line":319},[91,51293,26228],{"class":101},[91,51295,166],{"class":566},[91,51297,26233],{"class":101},[91,51299,51300,51302,51304,51306],{"class":93,"line":334},[91,51301,26238],{"class":101},[91,51303,166],{"class":566},[91,51305,1363],{"class":108},[91,51307,118],{"class":101},[91,51309,51310,51312,51314],{"class":93,"line":355},[91,51311,26249],{"class":101},[91,51313,25847],{"class":97},[91,51315,2030],{"class":101},[91,51317,51318,51320,51322,51324,51326,51328,51330,51332,51334,51336],{"class":93,"line":364},[91,51319,10068],{"class":566},[91,51321,13329],{"class":101},[91,51323,13332],{"class":108},[91,51325,25317],{"class":566},[91,51327,13338],{"class":169},[91,51329,25541],{"class":566},[91,51331,26270],{"class":101},[91,51333,26273],{"class":566},[91,51335,1363],{"class":108},[91,51337,3866],{"class":101},[91,51339,51340,51342,51344,51346,51348,51350,51352,51354,51356],{"class":93,"line":378},[91,51341,26282],{"class":101},[91,51343,166],{"class":566},[91,51345,26287],{"class":101},[91,51347,7829],{"class":566},[91,51349,11817],{"class":108},[91,51351,1176],{"class":101},[91,51353,8406],{"class":566},[91,51355,6594],{"class":108},[91,51357,118],{"class":101},[91,51359,51360,51362,51364,51366,51368],{"class":93,"line":387},[91,51361,26304],{"class":566},[91,51363,26287],{"class":101},[91,51365,7959],{"class":566},[91,51367,26311],{"class":108},[91,51369,3866],{"class":101},[91,51371,51372,51374,51376,51378],{"class":93,"line":402},[91,51373,26318],{"class":97},[91,51375,795],{"class":101},[91,51377,26323],{"class":169},[91,51379,26326],{"class":566},[91,51381,51382],{"class":93,"line":422},[91,51383,26331],{"class":101},[91,51385,51386,51388,51390,51392,51394,51396,51398,51400,51402,51404,51406],{"class":93,"line":438},[91,51387,26336],{"class":566},[91,51389,26339],{"class":169},[91,51391,26342],{"class":108},[91,51393,2139],{"class":169},[91,51395,1235],{"class":101},[91,51397,26349],{"class":97},[91,51399,26352],{"class":101},[91,51401,2139],{"class":169},[91,51403,26342],{"class":108},[91,51405,2139],{"class":169},[91,51407,3487],{"class":101},[91,51409,51410,51412,51414],{"class":93,"line":458},[91,51411,26365],{"class":566},[91,51413,26368],{"class":169},[91,51415,26371],{"class":101},[91,51417,51418,51420],{"class":93,"line":467},[91,51419,26376],{"class":566},[91,51421,118],{"class":101},[91,51423,51424],{"class":93,"line":481},[91,51425,26383],{"class":101},[91,51427,51428],{"class":93,"line":490},[91,51429,3307],{"class":101},[91,51431,51432],{"class":93,"line":3310},[91,51433,1693],{"class":101},[91,51435,51436,51438,51440,51442,51444,51446],{"class":93,"line":3315},[91,51437,26127],{"class":566},[91,51439,26398],{"class":101},[91,51441,166],{"class":566},[91,51443,26403],{"class":101},[91,51445,8026],{"class":97},[91,51447,2030],{"class":101},[91,51449,51450,51452,51454,51456,51458,51460],{"class":93,"line":3321},[91,51451,26127],{"class":566},[91,51453,26414],{"class":101},[91,51455,166],{"class":566},[91,51457,26183],{"class":101},[91,51459,8026],{"class":97},[91,51461,2030],{"class":101},[91,51463,51464,51466],{"class":93,"line":3327},[91,51465,26427],{"class":97},[91,51467,2030],{"class":101},[91,51469,51470,51472],{"class":93,"line":3333},[91,51471,26434],{"class":97},[91,51473,26437],{"class":101},[91,51475,51476,51478],{"class":93,"line":3338},[91,51477,26442],{"class":97},[91,51479,26445],{"class":101},[91,51481,51482],{"class":93,"line":3343},[91,51483,137],{"class":101},[16,51485,26452],{},[4530,51487,51488,51490,51492],{},[27,51489,26457],{},[27,51491,26460],{},[27,51493,26463],{},[16,51495,26466,51496,25799,51498,26471,51500,26475],{},[31,51497,26217],{},[31,51499,25847],{},[31,51501,26474],{},[16,51503,26478,51504,26482,51506,26486,51508,26490,51510,26494],{},[31,51505,26481],{},[31,51507,26485],{},[792,51509,26489],{},[31,51511,26493],{},[16,51513,26497,51514,26501,51516,26475],{},[31,51515,26500],{},[31,51517,25851],{},[82,51519,51520],{"className":10952,"code":26506,"language":10954,"meta":87,"style":87},[31,51521,51522,51540,51550,51566,51580,51584,51588,51592,51604,51608,51620,51630,51640,51672,51690,51694,51700,51714,51718,51722,51726],{"__ignoreMap":87},[91,51523,51524,51526,51528,51530,51532,51534,51536,51538],{"class":93,"line":94},[91,51525,25891],{"class":108},[91,51527,1235],{"class":101},[91,51529,17514],{"class":108},[91,51531,1235],{"class":101},[91,51533,25847],{"class":97},[91,51535,1366],{"class":566},[91,51537,2001],{"class":566},[91,51539,25921],{"class":101},[91,51541,51542,51544,51546,51548],{"class":93,"line":105},[91,51543,8218],{"class":566},[91,51545,2662],{"class":101},[91,51547,11782],{"class":108},[91,51549,26537],{"class":101},[91,51551,51552,51554,51556,51558,51560,51562,51564],{"class":93,"line":121},[91,51553,26127],{"class":566},[91,51555,25278],{"class":101},[91,51557,166],{"class":566},[91,51559,11795],{"class":108},[91,51561,1235],{"class":101},[91,51563,5938],{"class":97},[91,51565,2030],{"class":101},[91,51567,51568,51570,51572,51574,51576,51578],{"class":93,"line":134},[91,51569,8218],{"class":566},[91,51571,26560],{"class":101},[91,51573,9356],{"class":566},[91,51575,11795],{"class":108},[91,51577,26567],{"class":101},[91,51579,26570],{"class":566},[91,51581,51582],{"class":93,"line":228},[91,51583,26575],{"class":1343},[91,51585,51586],{"class":93,"line":250},[91,51587,26580],{"class":1343},[91,51589,51590],{"class":93,"line":260},[91,51591,26585],{"class":1343},[91,51593,51594,51596,51598,51600,51602],{"class":93,"line":274},[91,51595,26590],{"class":97},[91,51597,8369],{"class":101},[91,51599,7829],{"class":566},[91,51601,11795],{"class":108},[91,51603,26599],{"class":101},[91,51605,51606],{"class":93,"line":284},[91,51607,26604],{"class":1343},[91,51609,51610,51612,51614,51616,51618],{"class":93,"line":299},[91,51611,25275],{"class":566},[91,51613,26611],{"class":101},[91,51615,166],{"class":566},[91,51617,11795],{"class":108},[91,51619,26618],{"class":101},[91,51621,51622,51624,51626,51628],{"class":93,"line":319},[91,51623,12019],{"class":108},[91,51625,26567],{"class":101},[91,51627,166],{"class":566},[91,51629,8384],{"class":101},[91,51631,51632,51634,51636,51638],{"class":93,"line":334},[91,51633,13326],{"class":566},[91,51635,2662],{"class":101},[91,51637,11782],{"class":108},[91,51639,26639],{"class":101},[91,51641,51642,51644,51646,51648,51650,51652,51654,51656,51658,51660,51662,51664,51666,51668,51670],{"class":93,"line":355},[91,51643,26644],{"class":566},[91,51645,26647],{"class":101},[91,51647,166],{"class":566},[91,51649,26652],{"class":169},[91,51651,26342],{"class":108},[91,51653,2139],{"class":169},[91,51655,1235],{"class":101},[91,51657,26349],{"class":97},[91,51659,795],{"class":101},[91,51661,11782],{"class":108},[91,51663,26667],{"class":101},[91,51665,2139],{"class":169},[91,51667,26342],{"class":108},[91,51669,2139],{"class":169},[91,51671,1594],{"class":101},[91,51673,51674,51676,51678,51680,51682,51684,51686,51688],{"class":93,"line":364},[91,51675,26680],{"class":97},[91,51677,795],{"class":101},[91,51679,11782],{"class":108},[91,51681,26687],{"class":101},[91,51683,11782],{"class":108},[91,51685,26692],{"class":101},[91,51687,11782],{"class":108},[91,51689,26697],{"class":101},[91,51691,51692],{"class":93,"line":378},[91,51693,10095],{"class":101},[91,51695,51696,51698],{"class":93,"line":387},[91,51697,25581],{"class":566},[91,51699,102],{"class":101},[91,51701,51702,51704,51706,51708,51710,51712],{"class":93,"line":402},[91,51703,26712],{"class":108},[91,51705,26715],{"class":101},[91,51707,17399],{"class":97},[91,51709,795],{"class":101},[91,51711,11782],{"class":108},[91,51713,26724],{"class":101},[91,51715,51716],{"class":93,"line":422},[91,51717,10095],{"class":101},[91,51719,51720],{"class":93,"line":438},[91,51721,1693],{"class":101},[91,51723,51724],{"class":93,"line":458},[91,51725,1693],{"class":101},[91,51727,51728],{"class":93,"line":467},[91,51729,20036],{"class":101},[16,51731,26743,51732,26746,51734,26749],{},[31,51733,25847],{},[31,51735,25847],{},[16,51737,26752,51738,26756,51740,26759],{},[31,51739,26755],{},[31,51741,5938],{},[82,51743,51744],{"className":10952,"code":26762,"language":10954,"meta":87,"style":87},[31,51745,51746,51764,51774,51780,51792,51798,51812,51816,51822,51832,51862,51866,51872,51878,51882,51886,51892,51896,51900,51910,51916,51920,51926,51936,51940,51946],{"__ignoreMap":87},[91,51747,51748,51750,51752,51754,51756,51758,51760,51762],{"class":93,"line":94},[91,51749,25891],{"class":108},[91,51751,1235],{"class":101},[91,51753,17514],{"class":108},[91,51755,1235],{"class":101},[91,51757,5938],{"class":97},[91,51759,1366],{"class":566},[91,51761,2001],{"class":566},[91,51763,25921],{"class":101},[91,51765,51766,51768,51770,51772],{"class":93,"line":105},[91,51767,26787],{"class":97},[91,51769,795],{"class":101},[91,51771,11782],{"class":108},[91,51773,1594],{"class":101},[91,51775,51776,51778],{"class":93,"line":121},[91,51777,26798],{"class":566},[91,51779,8384],{"class":101},[91,51781,51782,51784,51786,51788,51790],{"class":93,"line":134},[91,51783,26798],{"class":566},[91,51785,26807],{"class":101},[91,51787,166],{"class":566},[91,51789,11795],{"class":108},[91,51791,26814],{"class":101},[91,51793,51794,51796],{"class":93,"line":228},[91,51795,2012],{"class":566},[91,51797,102],{"class":101},[91,51799,51800,51802,51804,51806,51808,51810],{"class":93,"line":250},[91,51801,26825],{"class":101},[91,51803,166],{"class":566},[91,51805,11795],{"class":108},[91,51807,26832],{"class":101},[91,51809,17399],{"class":97},[91,51811,26837],{"class":101},[91,51813,51814],{"class":93,"line":260},[91,51815,1698],{"class":101},[91,51817,51818,51820],{"class":93,"line":274},[91,51819,26846],{"class":566},[91,51821,26849],{"class":101},[91,51823,51824,51826,51828,51830],{"class":93,"line":284},[91,51825,8218],{"class":566},[91,51827,2662],{"class":101},[91,51829,11782],{"class":108},[91,51831,26639],{"class":101},[91,51833,51834,51836,51838,51840,51842,51844,51846,51848,51850,51852,51854,51856,51858,51860],{"class":93,"line":299},[91,51835,26864],{"class":97},[91,51837,26867],{"class":101},[91,51839,26870],{"class":169},[91,51841,26342],{"class":108},[91,51843,2139],{"class":169},[91,51845,1235],{"class":101},[91,51847,26349],{"class":97},[91,51849,795],{"class":101},[91,51851,11782],{"class":108},[91,51853,26667],{"class":101},[91,51855,2139],{"class":169},[91,51857,26342],{"class":108},[91,51859,2139],{"class":169},[91,51861,6568],{"class":101},[91,51863,51864],{"class":93,"line":319},[91,51865,1693],{"class":101},[91,51867,51868,51870],{"class":93,"line":334},[91,51869,11838],{"class":566},[91,51871,102],{"class":101},[91,51873,51874,51876],{"class":93,"line":355},[91,51875,8230],{"class":566},[91,51877,26909],{"class":101},[91,51879,51880],{"class":93,"line":364},[91,51881,1693],{"class":101},[91,51883,51884],{"class":93,"line":378},[91,51885,1698],{"class":101},[91,51887,51888,51890],{"class":93,"line":387},[91,51889,26922],{"class":566},[91,51891,102],{"class":101},[91,51893,51894],{"class":93,"line":402},[91,51895,26929],{"class":1343},[91,51897,51898],{"class":93,"line":422},[91,51899,26934],{"class":1343},[91,51901,51902,51904,51906,51908],{"class":93,"line":438},[91,51903,8218],{"class":566},[91,51905,2662],{"class":101},[91,51907,11782],{"class":108},[91,51909,26599],{"class":101},[91,51911,51912,51914],{"class":93,"line":458},[91,51913,26949],{"class":97},[91,51915,17413],{"class":101},[91,51917,51918],{"class":93,"line":467},[91,51919,1693],{"class":101},[91,51921,51922,51924],{"class":93,"line":481},[91,51923,26960],{"class":97},[91,51925,2030],{"class":101},[91,51927,51928,51930,51932,51934],{"class":93,"line":490},[91,51929,11922],{"class":108},[91,51931,1235],{"class":101},[91,51933,26971],{"class":97},[91,51935,2030],{"class":101},[91,51937,51938],{"class":93,"line":3310},[91,51939,1698],{"class":101},[91,51941,51942,51944],{"class":93,"line":3315},[91,51943,2695],{"class":566},[91,51945,8384],{"class":101},[91,51947,51948],{"class":93,"line":3321},[91,51949,20036],{"class":101},[16,51951,26990,51952,26994,51954,26997],{},[31,51953,26993],{},[31,51955,25203],{},[82,51957,51958],{"className":10952,"code":27000,"language":10954,"meta":87,"style":87},[31,51959,51960,51980,51988,51998,52006,52010,52020,52026,52046,52056,52066,52076,52092,52108,52114,52130,52136,52154,52160,52168,52174,52192,52196,52200,52206,52216,52228,52232,52236,52246,52256,52268,52278,52282,52286,52290,52304,52330,52356,52360,52364,52368,52372,52386,52396,52400,52410,52416,52444,52452,52456,52460,52472,52482,52492,52496,52502],{"__ignoreMap":87},[91,51961,51962,51964,51966,51968,51970,51972,51974,51976,51978],{"class":93,"line":94},[91,51963,7471],{"class":566},[91,51965,27009],{"class":97},[91,51967,795],{"class":101},[91,51969,27014],{"class":1172},[91,51971,64],{"class":101},[91,51973,27019],{"class":1172},[91,51975,64],{"class":101},[91,51977,27024],{"class":1172},[91,51979,3866],{"class":101},[91,51981,51982,51984,51986],{"class":93,"line":105},[91,51983,27031],{"class":101},[91,51985,166],{"class":566},[91,51987,27036],{"class":101},[91,51989,51990,51992,51994,51996],{"class":93,"line":121},[91,51991,2439],{"class":566},[91,51993,2662],{"class":101},[91,51995,2665],{"class":566},[91,51997,27047],{"class":101},[91,51999,52000,52002,52004],{"class":93,"line":134},[91,52001,27052],{"class":101},[91,52003,166],{"class":566},[91,52005,27057],{"class":101},[91,52007,52008],{"class":93,"line":228},[91,52009,1698],{"class":101},[91,52011,52012,52014,52016,52018],{"class":93,"line":250},[91,52013,27066],{"class":97},[91,52015,27069],{"class":101},[91,52017,27072],{"class":169},[91,52019,1594],{"class":101},[91,52021,52022,52024],{"class":93,"line":260},[91,52023,26798],{"class":566},[91,52025,27081],{"class":101},[91,52027,52028,52030,52032,52034,52036,52038,52040,52042,52044],{"class":93,"line":274},[91,52029,2439],{"class":566},[91,52031,13329],{"class":101},[91,52033,13332],{"class":108},[91,52035,25317],{"class":566},[91,52037,13338],{"class":169},[91,52039,25541],{"class":566},[91,52041,27098],{"class":101},[91,52043,5232],{"class":566},[91,52045,27103],{"class":101},[91,52047,52048,52050,52052,52054],{"class":93,"line":284},[91,52049,27108],{"class":97},[91,52051,1366],{"class":566},[91,52053,2001],{"class":566},[91,52055,25921],{"class":101},[91,52057,52058,52060,52062,52064],{"class":93,"line":299},[91,52059,25275],{"class":566},[91,52061,27121],{"class":101},[91,52063,166],{"class":566},[91,52065,27126],{"class":101},[91,52067,52068,52070,52072,52074],{"class":93,"line":319},[91,52069,25275],{"class":566},[91,52071,27133],{"class":101},[91,52073,166],{"class":566},[91,52075,27138],{"class":101},[91,52077,52078,52080,52082,52084,52086,52088,52090],{"class":93,"line":334},[91,52079,25275],{"class":566},[91,52081,27145],{"class":101},[91,52083,166],{"class":566},[91,52085,27150],{"class":169},[91,52087,1235],{"class":101},[91,52089,26349],{"class":97},[91,52091,27157],{"class":101},[91,52093,52094,52096,52098,52100,52102,52104,52106],{"class":93,"line":355},[91,52095,25275],{"class":566},[91,52097,27164],{"class":101},[91,52099,166],{"class":566},[91,52101,27169],{"class":169},[91,52103,1235],{"class":101},[91,52105,26349],{"class":97},[91,52107,27157],{"class":101},[91,52109,52110,52112],{"class":93,"line":364},[91,52111,27180],{"class":97},[91,52113,27183],{"class":101},[91,52115,52116,52118,52120,52122,52124,52126,52128],{"class":93,"line":378},[91,52117,27188],{"class":566},[91,52119,27191],{"class":101},[91,52121,166],{"class":566},[91,52123,27196],{"class":101},[91,52125,27199],{"class":97},[91,52127,27202],{"class":101},[91,52129,12474],{"class":566},[91,52131,52132,52134],{"class":93,"line":387},[91,52133,27180],{"class":97},[91,52135,27211],{"class":101},[91,52137,52138,52140,52142,52144,52146,52148,52150,52152],{"class":93,"line":402},[91,52139,27216],{"class":97},[91,52141,795],{"class":101},[91,52143,27221],{"class":169},[91,52145,1235],{"class":101},[91,52147,26349],{"class":97},[91,52149,27228],{"class":101},[91,52151,27231],{"class":169},[91,52153,27234],{"class":101},[91,52155,52156,52158],{"class":93,"line":422},[91,52157,27180],{"class":97},[91,52159,27183],{"class":101},[91,52161,52162,52164,52166],{"class":93,"line":438},[91,52163,27245],{"class":101},[91,52165,27248],{"class":97},[91,52167,27251],{"class":101},[91,52169,52170,52172],{"class":93,"line":458},[91,52171,27180],{"class":97},[91,52173,27211],{"class":101},[91,52175,52176,52178,52180,52182,52184,52186,52188,52190],{"class":93,"line":467},[91,52177,27216],{"class":97},[91,52179,795],{"class":101},[91,52181,27221],{"class":169},[91,52183,1235],{"class":101},[91,52185,26349],{"class":97},[91,52187,27228],{"class":101},[91,52189,27274],{"class":169},[91,52191,27234],{"class":101},[91,52193,52194],{"class":93,"line":481},[91,52195,19566],{"class":101},[91,52197,52198],{"class":93,"line":490},[91,52199,1698],{"class":101},[91,52201,52202,52204],{"class":93,"line":3310},[91,52203,27289],{"class":566},[91,52205,102],{"class":101},[91,52207,52208,52210,52212,52214],{"class":93,"line":3315},[91,52209,27108],{"class":97},[91,52211,1366],{"class":566},[91,52213,2001],{"class":566},[91,52215,25921],{"class":101},[91,52217,52218,52220,52222,52224,52226],{"class":93,"line":3321},[91,52219,27245],{"class":101},[91,52221,27248],{"class":97},[91,52223,27310],{"class":101},[91,52225,27199],{"class":97},[91,52227,27315],{"class":101},[91,52229,52230],{"class":93,"line":3327},[91,52231,19566],{"class":101},[91,52233,52234],{"class":93,"line":3333},[91,52235,1698],{"class":101},[91,52237,52238,52240,52242,52244],{"class":93,"line":3338},[91,52239,26798],{"class":566},[91,52241,27330],{"class":101},[91,52243,166],{"class":566},[91,52245,102],{"class":101},[91,52247,52248,52250,52252,52254],{"class":93,"line":3343},[91,52249,27339],{"class":97},[91,52251,112],{"class":101},[91,52253,7471],{"class":566},[91,52255,25921],{"class":101},[91,52257,52258,52260,52262,52264,52266],{"class":93,"line":7882},[91,52259,13326],{"class":566},[91,52261,27352],{"class":101},[91,52263,5232],{"class":566},[91,52265,7832],{"class":566},[91,52267,27359],{"class":101},[91,52269,52270,52272,52274,52276],{"class":93,"line":7887},[91,52271,27364],{"class":97},[91,52273,27069],{"class":101},[91,52275,27369],{"class":169},[91,52277,1594],{"class":101},[91,52279,52280],{"class":93,"line":7892},[91,52281,10095],{"class":101},[91,52283,52284],{"class":93,"line":7906},[91,52285,1693],{"class":101},[91,52287,52288],{"class":93,"line":7922},[91,52289,8083],{"class":101},[91,52291,52292,52294,52296,52298,52300,52302],{"class":93,"line":7927},[91,52293,2439],{"class":566},[91,52295,13329],{"class":101},[91,52297,13332],{"class":108},[91,52299,25317],{"class":566},[91,52301,13338],{"class":169},[91,52303,3866],{"class":101},[91,52305,52306,52308,52310,52312,52314,52316,52318,52320,52322,52324,52326,52328],{"class":93,"line":7967},[91,52307,27402],{"class":101},[91,52309,27405],{"class":97},[91,52311,1366],{"class":566},[91,52313,2001],{"class":566},[91,52315,2662],{"class":101},[91,52317,7658],{"class":1172},[91,52319,19432],{"class":101},[91,52321,12966],{"class":566},[91,52323,27420],{"class":97},[91,52325,27069],{"class":101},[91,52327,27425],{"class":169},[91,52329,27428],{"class":101},[91,52331,52332,52334,52336,52338,52340,52342,52344,52346,52348,52350,52352,52354],{"class":93,"line":7983},[91,52333,27402],{"class":101},[91,52335,27435],{"class":97},[91,52337,1366],{"class":566},[91,52339,2001],{"class":566},[91,52341,2662],{"class":101},[91,52343,7658],{"class":1172},[91,52345,19432],{"class":101},[91,52347,12966],{"class":566},[91,52349,27420],{"class":97},[91,52351,27069],{"class":101},[91,52353,27454],{"class":169},[91,52355,27428],{"class":101},[91,52357,52358],{"class":93,"line":7988},[91,52359,1698],{"class":101},[91,52361,52362],{"class":93,"line":7993},[91,52363,27465],{"class":1343},[91,52365,52366],{"class":93,"line":8000},[91,52367,27470],{"class":1343},[91,52369,52370],{"class":93,"line":8040},[91,52371,27475],{"class":1343},[91,52373,52374,52376,52378,52380,52382,52384],{"class":93,"line":8046},[91,52375,13197],{"class":566},[91,52377,27482],{"class":97},[91,52379,27485],{"class":101},[91,52381,7557],{"class":108},[91,52383,27490],{"class":1343},[91,52385,1594],{"class":101},[91,52387,52388,52390,52392,52394],{"class":93,"line":8080},[91,52389,27497],{"class":101},[91,52391,166],{"class":566},[91,52393,20253],{"class":108},[91,52395,118],{"class":101},[91,52397,52398],{"class":93,"line":8086},[91,52399,27508],{"class":1343},[91,52401,52402,52404,52406,52408],{"class":93,"line":12052},[91,52403,26798],{"class":566},[91,52405,27515],{"class":101},[91,52407,166],{"class":566},[91,52409,27520],{"class":101},[91,52411,52412,52414],{"class":93,"line":12070},[91,52413,2439],{"class":566},[91,52415,27527],{"class":101},[91,52417,52418,52420,52422,52424,52426,52428,52430,52432,52434,52436,52438,52440,52442],{"class":93,"line":12087},[91,52419,26168],{"class":566},[91,52421,2662],{"class":101},[91,52423,5626],{"class":566},[91,52425,17223],{"class":101},[91,52427,166],{"class":566},[91,52429,11817],{"class":108},[91,52431,17230],{"class":101},[91,52433,156],{"class":566},[91,52435,27548],{"class":101},[91,52437,11811],{"class":108},[91,52439,17240],{"class":101},[91,52441,17243],{"class":566},[91,52443,3866],{"class":101},[91,52445,52446,52448,52450],{"class":93,"line":12092},[91,52447,27561],{"class":101},[91,52449,25847],{"class":97},[91,52451,2030],{"class":101},[91,52453,52454],{"class":93,"line":12097},[91,52455,1693],{"class":101},[91,52457,52458],{"class":93,"line":12102},[91,52459,1698],{"class":101},[91,52461,52462,52464,52466,52468,52470],{"class":93,"line":25726},[91,52463,2439],{"class":566},[91,52465,27580],{"class":101},[91,52467,11788],{"class":566},[91,52469,1363],{"class":108},[91,52471,3866],{"class":101},[91,52473,52474,52476,52478,52480],{"class":93,"line":25732},[91,52475,27591],{"class":101},[91,52477,166],{"class":566},[91,52479,20228],{"class":108},[91,52481,118],{"class":101},[91,52483,52484,52486,52488,52490],{"class":93,"line":25738},[91,52485,27602],{"class":97},[91,52487,27069],{"class":101},[91,52489,27607],{"class":169},[91,52491,1594],{"class":101},[91,52493,52494],{"class":93,"line":25744},[91,52495,1698],{"class":101},[91,52497,52498,52500],{"class":93,"line":25750},[91,52499,2695],{"class":566},[91,52501,27620],{"class":101},[91,52503,52504],{"class":93,"line":25756},[91,52505,137],{"class":101},[16,52507,52508,27630],{},[31,52509,27629],{},[4530,52511,52512,52514,52516,52522],{},[27,52513,27635],{},[27,52515,27638],{},[27,52517,52518,27644,52520,27648],{},[31,52519,27643],{},[31,52521,27647],{},[27,52523,27651],{},[16,52525,27654,52526,27657,52528,27660,52530,27663],{},[31,52527,25203],{},[31,52529,27643],{},[31,52531,25203],{},[82,52533,52534],{"className":10952,"code":27666,"language":10954,"meta":87,"style":87},[31,52535,52536],{"__ignoreMap":87},[91,52537,52538,52540,52542,52544,52546],{"class":93,"line":94},[91,52539,27673],{"class":101},[91,52541,166],{"class":566},[91,52543,27678],{"class":101},[91,52545,17399],{"class":97},[91,52547,27683],{"class":101},[16,52549,27686],{},[16,52551,27689,52552,27693,52554,27696],{},[31,52553,27692],{},[31,52555,27647],{},[82,52557,52558],{"className":11559,"code":27699,"language":11561,"meta":87,"style":87},[31,52559,52560,52586,52598,52608,52618,52630,52638,52642,52652,52656,52672,52680,52684,52696,52700,52706,52712,52722,52726,52732,52740,52744,52762,52770,52774],{"__ignoreMap":87},[91,52561,52562,52564,52566,52568,52570,52572,52574,52576,52578,52580,52582,52584],{"class":93,"line":94},[91,52563,15042],{"class":108},[91,52565,1235],{"class":101},[91,52567,17514],{"class":108},[91,52569,1235],{"class":101},[91,52571,27248],{"class":97},[91,52573,1366],{"class":566},[91,52575,2001],{"class":566},[91,52577,2662],{"class":101},[91,52579,27692],{"class":1172},[91,52581,64],{"class":101},[91,52583,27024],{"class":1172},[91,52585,3866],{"class":101},[91,52587,52588,52590,52592,52594,52596],{"class":93,"line":105},[91,52589,26127],{"class":566},[91,52591,26807],{"class":101},[91,52593,166],{"class":566},[91,52595,11795],{"class":108},[91,52597,118],{"class":101},[91,52599,52600,52602,52604,52606],{"class":93,"line":121},[91,52601,26127],{"class":566},[91,52603,27746],{"class":101},[91,52605,166],{"class":566},[91,52607,27751],{"class":101},[91,52609,52610,52612,52614,52616],{"class":93,"line":134},[91,52611,26127],{"class":566},[91,52613,27758],{"class":101},[91,52615,166],{"class":566},[91,52617,27763],{"class":101},[91,52619,52620,52622,52624,52626,52628],{"class":93,"line":228},[91,52621,26127],{"class":566},[91,52623,27770],{"class":101},[91,52625,166],{"class":566},[91,52627,27775],{"class":97},[91,52629,27778],{"class":101},[91,52631,52632,52634,52636],{"class":93,"line":250},[91,52633,27783],{"class":101},[91,52635,166],{"class":566},[91,52637,27788],{"class":101},[91,52639,52640],{"class":93,"line":260},[91,52641,1450],{"emptyLinePlaceholder":846},[91,52643,52644,52646,52648,52650],{"class":93,"line":274},[91,52645,8218],{"class":566},[91,52647,2662],{"class":101},[91,52649,2665],{"class":566},[91,52651,27803],{"class":101},[91,52653,52654],{"class":93,"line":284},[91,52655,27808],{"class":1343},[91,52657,52658,52660,52662,52664,52666,52668,52670],{"class":93,"line":299},[91,52659,27813],{"class":101},[91,52661,166],{"class":566},[91,52663,27196],{"class":101},[91,52665,27820],{"class":97},[91,52667,27823],{"class":101},[91,52669,7780],{"class":108},[91,52671,1594],{"class":101},[91,52673,52674,52676,52678],{"class":93,"line":319},[91,52675,12893],{"class":101},[91,52677,5258],{"class":566},[91,52679,102],{"class":101},[91,52681,52682],{"class":93,"line":334},[91,52683,27840],{"class":1343},[91,52685,52686,52688,52690,52692,52694],{"class":93,"line":355},[91,52687,27813],{"class":101},[91,52689,166],{"class":566},[91,52691,27196],{"class":101},[91,52693,27820],{"class":97},[91,52695,27853],{"class":101},[91,52697,52698],{"class":93,"line":364},[91,52699,1693],{"class":101},[91,52701,52702,52704],{"class":93,"line":378},[91,52703,27862],{"class":97},[91,52705,2030],{"class":101},[91,52707,52708,52710],{"class":93,"line":387},[91,52709,8218],{"class":566},[91,52711,27871],{"class":101},[91,52713,52714,52716,52718,52720],{"class":93,"line":402},[91,52715,27876],{"class":101},[91,52717,166],{"class":566},[91,52719,1363],{"class":108},[91,52721,118],{"class":101},[91,52723,52724],{"class":93,"line":422},[91,52725,1693],{"class":101},[91,52727,52728,52730],{"class":93,"line":438},[91,52729,8218],{"class":566},[91,52731,27893],{"class":101},[91,52733,52734,52736,52738],{"class":93,"line":458},[91,52735,27898],{"class":101},[91,52737,166],{"class":566},[91,52739,27620],{"class":101},[91,52741,52742],{"class":93,"line":467},[91,52743,1693],{"class":101},[91,52745,52746,52748,52750,52752,52754,52756,52758,52760],{"class":93,"line":481},[91,52747,8218],{"class":566},[91,52749,27580],{"class":101},[91,52751,5232],{"class":566},[91,52753,27917],{"class":101},[91,52755,5232],{"class":566},[91,52757,27922],{"class":101},[91,52759,9382],{"class":566},[91,52761,27927],{"class":101},[91,52763,52764,52766,52768],{"class":93,"line":490},[91,52765,27932],{"class":101},[91,52767,166],{"class":566},[91,52769,27751],{"class":101},[91,52771,52772],{"class":93,"line":3310},[91,52773,1693],{"class":101},[91,52775,52776],{"class":93,"line":3315},[91,52777,8083],{"class":101},[16,52779,52780,27950,52782,27954],{},[31,52781,27949],{},[31,52783,27953],{},[49,52785,27958],{"id":27957},[16,52787,27961,52788,22871,52790,27966],{},[31,52789,25203],{},[31,52791,25206],{},[757,52793,27970],{"id":27969},[82,52795,52796],{"className":10952,"code":27973,"language":10954,"meta":87,"style":87},[31,52797,52798,52804,52812,52816,52820],{"__ignoreMap":87},[91,52799,52800,52802],{"class":93,"line":94},[91,52801,7901],{"class":97},[91,52803,8789],{"class":101},[91,52805,52806,52808,52810],{"class":93,"line":105},[91,52807,27986],{"class":97},[91,52809,112],{"class":101},[91,52811,27991],{"class":108},[91,52813,52814],{"class":93,"line":121},[91,52815,137],{"class":101},[91,52817,52818],{"class":93,"line":134},[91,52819,1450],{"emptyLinePlaceholder":846},[91,52821,52822,52824,52826,52828,52830],{"class":93,"line":228},[91,52823,11782],{"class":108},[91,52825,28006],{"class":101},[91,52827,166],{"class":566},[91,52829,16523],{"class":108},[91,52831,118],{"class":101},[16,52833,28015,52834,28019,52836,28023],{},[31,52835,28018],{},[31,52837,28022],{},[82,52839,52840],{"className":10952,"code":28026,"language":10954,"meta":87,"style":87},[31,52841,52842],{"__ignoreMap":87},[91,52843,52844,52846,52848,52850,52852,52854,52856,52858,52860,52862],{"class":93,"line":94},[91,52845,11782],{"class":108},[91,52847,1235],{"class":101},[91,52849,28037],{"class":97},[91,52851,795],{"class":101},[91,52853,11782],{"class":108},[91,52855,64],{"class":101},[91,52857,28046],{"class":169},[91,52859,64],{"class":101},[91,52861,591],{"class":108},[91,52863,1594],{"class":101},[16,52865,28055,52866,28058],{},[31,52867,28037],{},[757,52869,28062],{"id":28061},[16,52871,52872,14431,52874,28071,52876,28075,52878,28079,52880,28083],{},[31,52873,28067],{},[31,52875,28070],{},[31,52877,28074],{},[31,52879,28078],{},[31,52881,28082],{},[82,52883,52884],{"className":10952,"code":28086,"language":10954,"meta":87,"style":87},[31,52885,52886,52908],{"__ignoreMap":87},[91,52887,52888,52890,52892,52894,52896,52898,52900,52902,52904,52906],{"class":93,"line":94},[91,52889,17283],{"class":101},[91,52891,28095],{"class":97},[91,52893,795],{"class":101},[91,52895,11782],{"class":108},[91,52897,28102],{"class":101},[91,52899,1583],{"class":108},[91,52901,28107],{"class":101},[91,52903,591],{"class":108},[91,52905,21410],{"class":101},[91,52907,28114],{"class":1343},[91,52909,52910,52912,52914,52916,52918,52920,52922,52924,52926,52928,52930,52932],{"class":93,"line":105},[91,52911,11782],{"class":108},[91,52913,28121],{"class":101},[91,52915,166],{"class":566},[91,52917,28126],{"class":101},[91,52919,28095],{"class":97},[91,52921,28131],{"class":101},[91,52923,11782],{"class":108},[91,52925,28102],{"class":101},[91,52927,1583],{"class":108},[91,52929,28107],{"class":101},[91,52931,591],{"class":108},[91,52933,9590],{"class":101},[16,52935,28146],{},[757,52937,28150],{"id":28149},[16,52939,28153],{},[4530,52941,52942,52944],{},[27,52943,28158],{},[27,52945,28161],{},[82,52947,52948],{"className":10952,"code":28164,"language":10954,"meta":87,"style":87},[31,52949,52950,52964,52968,52984,52988,52992,53004],{"__ignoreMap":87},[91,52951,52952,52954,52956,52958,52960,52962],{"class":93,"line":94},[91,52953,5626],{"class":566},[91,52955,26807],{"class":101},[91,52957,166],{"class":566},[91,52959,2676],{"class":566},[91,52961,28179],{"class":97},[91,52963,7549],{"class":101},[91,52965,52966],{"class":93,"line":105},[91,52967,28186],{"class":101},[91,52969,52970,52972,52974,52976,52978,52980,52982],{"class":93,"line":121},[91,52971,28191],{"class":101},[91,52973,5033],{"class":169},[91,52975,64],{"class":101},[91,52977,28198],{"class":169},[91,52979,64],{"class":101},[91,52981,28203],{"class":169},[91,52983,11460],{"class":101},[91,52985,52986],{"class":93,"line":134},[91,52987,1698],{"class":101},[91,52989,52990],{"class":93,"line":228},[91,52991,9444],{"class":101},[91,52993,52994,52996,52998,53000,53002],{"class":93,"line":250},[91,52995,28218],{"class":101},[91,52997,1583],{"class":108},[91,52999,28223],{"class":101},[91,53001,166],{"class":566},[91,53003,28228],{"class":169},[91,53005,53006,53008,53010,53012],{"class":93,"line":260},[91,53007,28233],{"class":101},[91,53009,11811],{"class":108},[91,53011,1366],{"class":566},[91,53013,28240],{"class":108},[16,53015,28243],{},[24,53017,53018,53020,53022,53024],{},[27,53019,28248],{},[27,53021,28251],{},[27,53023,28254],{},[27,53025,28257],{},[82,53027,53028],{"className":10952,"code":28260,"language":10954,"meta":87,"style":87},[31,53029,53030],{"__ignoreMap":87},[91,53031,53032,53034,53036,53038,53040,53042,53044,53046],{"class":93,"line":94},[91,53033,11782],{"class":108},[91,53035,1235],{"class":101},[91,53037,28037],{"class":97},[91,53039,795],{"class":101},[91,53041,11782],{"class":108},[91,53043,28277],{"class":101},[91,53045,1583],{"class":108},[91,53047,28282],{"class":101},[16,53049,28285,53050,28288],{},[31,53051,28037],{},[771,53053,28292],{"id":28291},[82,53055,53056],{"className":10952,"code":28295,"language":10954,"meta":87,"style":87},[31,53057,53058,53064,53076,53088,53100,53104,53108,53114,53136],{"__ignoreMap":87},[91,53059,53060,53062],{"class":93,"line":94},[91,53061,28302],{"class":97},[91,53063,10596],{"class":101},[91,53065,53066,53068,53070,53072,53074],{"class":93,"line":105},[91,53067,28309],{"class":101},[91,53069,1583],{"class":108},[91,53071,28314],{"class":101},[91,53073,28317],{"class":169},[91,53075,28320],{"class":101},[91,53077,53078,53080,53082,53084,53086],{"class":93,"line":121},[91,53079,28309],{"class":101},[91,53081,591],{"class":108},[91,53083,28314],{"class":101},[91,53085,28331],{"class":169},[91,53087,28320],{"class":101},[91,53089,53090,53092,53094,53096,53098],{"class":93,"line":134},[91,53091,28309],{"class":101},[91,53093,28340],{"class":108},[91,53095,28314],{"class":101},[91,53097,28345],{"class":169},[91,53099,28320],{"class":101},[91,53101,53102],{"class":93,"line":228},[91,53103,11460],{"class":101},[91,53105,53106],{"class":93,"line":250},[91,53107,1450],{"emptyLinePlaceholder":846},[91,53109,53110,53112],{"class":93,"line":260},[91,53111,28360],{"class":97},[91,53113,2007],{"class":101},[91,53115,53116,53118,53120,53122,53124,53126,53128,53130,53132,53134],{"class":93,"line":274},[91,53117,11922],{"class":108},[91,53119,28369],{"class":101},[91,53121,28340],{"class":108},[91,53123,28223],{"class":101},[91,53125,166],{"class":566},[91,53127,28378],{"class":101},[91,53129,28381],{"class":108},[91,53131,28314],{"class":101},[91,53133,28386],{"class":169},[91,53135,20036],{"class":101},[91,53137,53138],{"class":93,"line":284},[91,53139,137],{"class":101},[16,53141,28395],{},[82,53143,53144],{"className":10952,"code":28398,"language":10954,"meta":87,"style":87},[31,53145,53146],{"__ignoreMap":87},[91,53147,53148,53150,53152,53154,53156,53158,53160],{"class":93,"line":94},[91,53149,11782],{"class":108},[91,53151,28369],{"class":101},[91,53153,1583],{"class":108},[91,53155,28411],{"class":101},[91,53157,166],{"class":566},[91,53159,28416],{"class":169},[91,53161,118],{"class":101},[16,53163,28421],{},[16,53165,53166],{},[19,53167],{"alt":21,"src":28426},[16,53169,28429],{},[16,53171,53172],{},[19,53173],{"alt":21,"src":28434},[16,53175,28437],{},[16,53177,53178],{},[19,53179],{"alt":21,"src":28442},[16,53181,28445,53182,28448,53184,28452],{},[31,53183,28360],{},[31,53185,28451],{},[82,53187,53188],{"className":10952,"code":28455,"language":10954,"meta":87,"style":87},[31,53189,53190,53200,53210,53220,53224,53240,53260,53278],{"__ignoreMap":87},[91,53191,53192,53194,53196,53198],{"class":93,"line":94},[91,53193,1968],{"class":566},[91,53195,28464],{"class":108},[91,53197,1366],{"class":566},[91,53199,13130],{"class":101},[91,53201,53202,53204,53206,53208],{"class":93,"line":105},[91,53203,28473],{"class":169},[91,53205,112],{"class":101},[91,53207,1583],{"class":108},[91,53209,10624],{"class":101},[91,53211,53212,53214,53216,53218],{"class":93,"line":121},[91,53213,28484],{"class":169},[91,53215,112],{"class":101},[91,53217,28489],{"class":169},[91,53219,10624],{"class":101},[91,53221,53222],{"class":93,"line":134},[91,53223,20036],{"class":101},[91,53225,53226,53228,53230,53232,53234,53236,53238],{"class":93,"line":228},[91,53227,11782],{"class":108},[91,53229,28369],{"class":101},[91,53231,1583],{"class":108},[91,53233,28223],{"class":101},[91,53235,166],{"class":566},[91,53237,28510],{"class":101},[91,53239,28513],{"class":1343},[91,53241,53242,53244,53246,53248,53250,53252,53254,53256,53258],{"class":93,"line":250},[91,53243,11782],{"class":108},[91,53245,1235],{"class":101},[91,53247,28037],{"class":97},[91,53249,795],{"class":101},[91,53251,11782],{"class":108},[91,53253,28528],{"class":101},[91,53255,1583],{"class":108},[91,53257,28533],{"class":101},[91,53259,28536],{"class":1343},[91,53261,53262,53264,53266,53268,53270,53272,53274,53276],{"class":93,"line":260},[91,53263,11782],{"class":108},[91,53265,28369],{"class":101},[91,53267,1583],{"class":108},[91,53269,28411],{"class":101},[91,53271,166],{"class":566},[91,53273,28551],{"class":169},[91,53275,20231],{"class":101},[91,53277,28536],{"class":1343},[91,53279,53280,53282,53284,53286,53288,53290,53292,53294,53296,53298,53300,53302,53304],{"class":93,"line":274},[91,53281,11782],{"class":108},[91,53283,1235],{"class":101},[91,53285,28037],{"class":97},[91,53287,795],{"class":101},[91,53289,11782],{"class":108},[91,53291,28369],{"class":101},[91,53293,1583],{"class":108},[91,53295,22817],{"class":101},[91,53297,28576],{"class":169},[91,53299,64],{"class":101},[91,53301,28581],{"class":169},[91,53303,28584],{"class":101},[91,53305,28536],{"class":1343},[16,53307,28589],{},[771,53309,28593],{"id":28592},[82,53311,53312],{"className":10952,"code":28596,"language":10954,"meta":87,"style":87},[31,53313,53314,53320,53324,53336,53348,53352,53356,53368,53380,53384,53388,53392,53396,53402,53416,53428,53440,53444,53458,53470,53482,53486],{"__ignoreMap":87},[91,53315,53316,53318],{"class":93,"line":94},[91,53317,28603],{"class":97},[91,53319,10596],{"class":101},[91,53321,53322],{"class":93,"line":105},[91,53323,28610],{"class":101},[91,53325,53326,53328,53330,53332,53334],{"class":93,"line":121},[91,53327,28309],{"class":101},[91,53329,1583],{"class":108},[91,53331,28619],{"class":101},[91,53333,28622],{"class":169},[91,53335,15376],{"class":101},[91,53337,53338,53340,53342,53344,53346],{"class":93,"line":134},[91,53339,28309],{"class":101},[91,53341,591],{"class":108},[91,53343,28619],{"class":101},[91,53345,28622],{"class":169},[91,53347,15376],{"class":101},[91,53349,53350],{"class":93,"line":228},[91,53351,21926],{"class":101},[91,53353,53354],{"class":93,"line":250},[91,53355,28610],{"class":101},[91,53357,53358,53360,53362,53364,53366],{"class":93,"line":260},[91,53359,28309],{"class":101},[91,53361,1583],{"class":108},[91,53363,28619],{"class":101},[91,53365,28655],{"class":169},[91,53367,15376],{"class":101},[91,53369,53370,53372,53374,53376,53378],{"class":93,"line":274},[91,53371,28309],{"class":101},[91,53373,591],{"class":108},[91,53375,28619],{"class":101},[91,53377,28655],{"class":169},[91,53379,15376],{"class":101},[91,53381,53382],{"class":93,"line":284},[91,53383,21926],{"class":101},[91,53385,53386],{"class":93,"line":299},[91,53387,28678],{"class":101},[91,53389,53390],{"class":93,"line":319},[91,53391,11460],{"class":101},[91,53393,53394],{"class":93,"line":334},[91,53395,1450],{"emptyLinePlaceholder":846},[91,53397,53398,53400],{"class":93,"line":355},[91,53399,28360],{"class":97},[91,53401,2007],{"class":101},[91,53403,53404,53406,53408,53410,53412,53414],{"class":93,"line":364},[91,53405,11922],{"class":108},[91,53407,28699],{"class":101},[91,53409,591],{"class":108},[91,53411,28223],{"class":101},[91,53413,166],{"class":566},[91,53415,13192],{"class":101},[91,53417,53418,53420,53422,53424,53426],{"class":93,"line":378},[91,53419,28309],{"class":101},[91,53421,1583],{"class":108},[91,53423,28619],{"class":101},[91,53425,28718],{"class":169},[91,53427,15376],{"class":101},[91,53429,53430,53432,53434,53436,53438],{"class":93,"line":387},[91,53431,28309],{"class":101},[91,53433,591],{"class":108},[91,53435,28619],{"class":101},[91,53437,28718],{"class":169},[91,53439,15376],{"class":101},[91,53441,53442],{"class":93,"line":402},[91,53443,22495],{"class":101},[91,53445,53446,53448,53450,53452,53454,53456],{"class":93,"line":422},[91,53447,28741],{"class":108},[91,53449,28699],{"class":101},[91,53451,28340],{"class":108},[91,53453,28223],{"class":101},[91,53455,166],{"class":566},[91,53457,13192],{"class":101},[91,53459,53460,53462,53464,53466,53468],{"class":93,"line":438},[91,53461,28309],{"class":101},[91,53463,1583],{"class":108},[91,53465,28619],{"class":101},[91,53467,28762],{"class":169},[91,53469,15376],{"class":101},[91,53471,53472,53474,53476,53478,53480],{"class":93,"line":458},[91,53473,28309],{"class":101},[91,53475,591],{"class":108},[91,53477,28619],{"class":101},[91,53479,28762],{"class":169},[91,53481,15376],{"class":101},[91,53483,53484],{"class":93,"line":467},[91,53485,22495],{"class":101},[91,53487,53488],{"class":93,"line":481},[91,53489,137],{"class":101},[16,53491,28787],{},[82,53493,53494],{"className":10952,"code":28790,"language":10954,"meta":87,"style":87},[31,53495,53496,53506,53516,53526,53530,53550,53574,53596,53618],{"__ignoreMap":87},[91,53497,53498,53500,53502,53504],{"class":93,"line":94},[91,53499,1968],{"class":566},[91,53501,28464],{"class":108},[91,53503,1366],{"class":566},[91,53505,13130],{"class":101},[91,53507,53508,53510,53512,53514],{"class":93,"line":105},[91,53509,28473],{"class":169},[91,53511,112],{"class":101},[91,53513,1583],{"class":108},[91,53515,10624],{"class":101},[91,53517,53518,53520,53522,53524],{"class":93,"line":121},[91,53519,28484],{"class":169},[91,53521,112],{"class":101},[91,53523,28489],{"class":169},[91,53525,10624],{"class":101},[91,53527,53528],{"class":93,"line":134},[91,53529,20036],{"class":101},[91,53531,53532,53534,53536,53538,53540,53542,53544,53546,53548],{"class":93,"line":228},[91,53533,11782],{"class":108},[91,53535,28699],{"class":101},[91,53537,1583],{"class":108},[91,53539,28837],{"class":101},[91,53541,1583],{"class":108},[91,53543,28223],{"class":101},[91,53545,166],{"class":566},[91,53547,28846],{"class":101},[91,53549,28513],{"class":1343},[91,53551,53552,53554,53556,53558,53560,53562,53564,53566,53568,53570,53572],{"class":93,"line":250},[91,53553,11782],{"class":108},[91,53555,1235],{"class":101},[91,53557,28037],{"class":97},[91,53559,795],{"class":101},[91,53561,11782],{"class":108},[91,53563,28699],{"class":101},[91,53565,1583],{"class":108},[91,53567,22817],{"class":101},[91,53569,1583],{"class":108},[91,53571,28533],{"class":101},[91,53573,28536],{"class":1343},[91,53575,53576,53578,53580,53582,53584,53586,53588,53590,53592,53594],{"class":93,"line":260},[91,53577,11782],{"class":108},[91,53579,28699],{"class":101},[91,53581,1578],{"class":108},[91,53583,28837],{"class":101},[91,53585,1578],{"class":108},[91,53587,28887],{"class":101},[91,53589,166],{"class":566},[91,53591,28551],{"class":169},[91,53593,20231],{"class":101},[91,53595,28536],{"class":1343},[91,53597,53598,53600,53602,53604,53606,53608,53610,53612,53614,53616],{"class":93,"line":274},[91,53599,11782],{"class":108},[91,53601,28699],{"class":101},[91,53603,591],{"class":108},[91,53605,28837],{"class":101},[91,53607,1578],{"class":108},[91,53609,28887],{"class":101},[91,53611,166],{"class":566},[91,53613,28914],{"class":169},[91,53615,20231],{"class":101},[91,53617,28513],{"class":1343},[91,53619,53620,53622,53624,53626,53628,53630,53632,53634,53636,53638,53640,53642,53644,53646,53648],{"class":93,"line":284},[91,53621,11782],{"class":108},[91,53623,1235],{"class":101},[91,53625,28037],{"class":97},[91,53627,795],{"class":101},[91,53629,11782],{"class":108},[91,53631,28699],{"class":101},[91,53633,28340],{"class":108},[91,53635,28837],{"class":101},[91,53637,1583],{"class":108},[91,53639,22817],{"class":101},[91,53641,28576],{"class":169},[91,53643,64],{"class":101},[91,53645,28581],{"class":169},[91,53647,28584],{"class":101},[91,53649,28513],{"class":1343},[16,53651,28953],{},[16,53653,28956,53654,28959],{},[31,53655,13348],{},[16,53657,28962,53658,28965],{},[31,53659,28037],{},[16,53661,28968,53662,28971],{},[31,53663,13348],{},[82,53665,53666],{"className":10952,"code":28974,"language":10954,"meta":87,"style":87},[31,53667,53668,53686,53698,53710,53714,53732,53744,53756],{"__ignoreMap":87},[91,53669,53670,53672,53674,53676,53678,53680,53682,53684],{"class":93,"line":94},[91,53671,11782],{"class":108},[91,53673,28699],{"class":101},[91,53675,591],{"class":108},[91,53677,28987],{"class":101},[91,53679,13348],{"class":97},[91,53681,795],{"class":101},[91,53683,1442],{"class":566},[91,53685,11369],{"class":101},[91,53687,53688,53690,53692,53694,53696],{"class":93,"line":105},[91,53689,29000],{"class":101},[91,53691,1583],{"class":108},[91,53693,28619],{"class":101},[91,53695,28718],{"class":169},[91,53697,15376],{"class":101},[91,53699,53700,53702,53704,53706,53708],{"class":93,"line":121},[91,53701,29000],{"class":101},[91,53703,591],{"class":108},[91,53705,28619],{"class":101},[91,53707,28718],{"class":169},[91,53709,15376],{"class":101},[91,53711,53712],{"class":93,"line":134},[91,53713,29025],{"class":101},[91,53715,53716,53718,53720,53722,53724,53726,53728,53730],{"class":93,"line":228},[91,53717,11782],{"class":108},[91,53719,29032],{"class":101},[91,53721,29035],{"class":97},[91,53723,795],{"class":101},[91,53725,591],{"class":108},[91,53727,64],{"class":101},[91,53729,1583],{"class":108},[91,53731,29046],{"class":101},[91,53733,53734,53736,53738,53740,53742],{"class":93,"line":250},[91,53735,29000],{"class":101},[91,53737,1583],{"class":108},[91,53739,28619],{"class":101},[91,53741,28718],{"class":169},[91,53743,15376],{"class":101},[91,53745,53746,53748,53750,53752,53754],{"class":93,"line":260},[91,53747,29000],{"class":101},[91,53749,591],{"class":108},[91,53751,28619],{"class":101},[91,53753,28718],{"class":169},[91,53755,15376],{"class":101},[91,53757,53758],{"class":93,"line":274},[91,53759,19380],{"class":101},[24,53761,53762,53764],{},[27,53763,29079],{},[27,53765,53766,29084],{},[31,53767,29035],{},[16,53769,29087],{},[757,53771,29091],{"id":29090},[16,53773,29094,53774,29098],{},[792,53775,29097],{},[82,53777,53778],{"className":11559,"code":29101,"language":11561,"meta":87,"style":87},[31,53779,53780,53790,53796,53806,53810,53816,53826,53838,53852,53866,53880,53884,53888],{"__ignoreMap":87},[91,53781,53782,53784,53786,53788],{"class":93,"line":94},[91,53783,2118],{"class":97},[91,53785,112],{"class":101},[91,53787,29112],{"class":169},[91,53789,7560],{"class":101},[91,53791,53792,53794],{"class":93,"line":105},[91,53793,29119],{"class":97},[91,53795,8789],{"class":101},[91,53797,53798,53800,53802,53804],{"class":93,"line":121},[91,53799,29126],{"class":97},[91,53801,112],{"class":101},[91,53803,29131],{"class":169},[91,53805,7560],{"class":101},[91,53807,53808],{"class":93,"line":134},[91,53809,137],{"class":101},[91,53811,53812,53814],{"class":93,"line":228},[91,53813,29142],{"class":97},[91,53815,8789],{"class":101},[91,53817,53818,53820,53822,53824],{"class":93,"line":250},[91,53819,29149],{"class":97},[91,53821,24747],{"class":101},[91,53823,1179],{"class":566},[91,53825,102],{"class":101},[91,53827,53828,53830,53832,53834,53836],{"class":93,"line":260},[91,53829,26712],{"class":108},[91,53831,29162],{"class":101},[91,53833,166],{"class":566},[91,53835,29167],{"class":169},[91,53837,118],{"class":101},[91,53839,53840,53842,53844,53846,53848,53850],{"class":93,"line":274},[91,53841,2454],{"class":101},[91,53843,1225],{"class":97},[91,53845,795],{"class":101},[91,53847,11782],{"class":108},[91,53849,29182],{"class":101},[91,53851,29185],{"class":1343},[91,53853,53854,53856,53858,53860,53862,53864],{"class":93,"line":284},[91,53855,11922],{"class":108},[91,53857,1235],{"class":101},[91,53859,29194],{"class":97},[91,53861,795],{"class":101},[91,53863,7471],{"class":566},[91,53865,25921],{"class":101},[91,53867,53868,53870,53872,53874,53876,53878],{"class":93,"line":299},[91,53869,13900],{"class":101},[91,53871,1225],{"class":97},[91,53873,795],{"class":101},[91,53875,11782],{"class":108},[91,53877,29182],{"class":101},[91,53879,29215],{"class":1343},[91,53881,53882],{"class":93,"line":319},[91,53883,23766],{"class":101},[91,53885,53886],{"class":93,"line":334},[91,53887,1693],{"class":101},[91,53889,53890],{"class":93,"line":355},[91,53891,137],{"class":101},[16,53893,29230,53894,29234,53896,29238,53898,29241],{},[31,53895,29233],{},[31,53897,29237],{},[792,53899,29097],{},[757,53901,29245],{"id":29244},[16,53903,29248],{},[82,53905,53906],{"className":11559,"code":29251,"language":11561,"meta":87,"style":87},[31,53907,53908,53916,53920,53924,53928,53934,53940,53962,53966,53972,53994,53998,54008,54014,54018,54030,54034,54038],{"__ignoreMap":87},[91,53909,53910,53912,53914],{"class":93,"line":94},[91,53911,2118],{"class":97},[91,53913,112],{"class":101},[91,53915,29262],{"class":169},[91,53917,53918],{"class":93,"line":105},[91,53919,29267],{"class":169},[91,53921,53922],{"class":93,"line":121},[91,53923,29272],{"class":169},[91,53925,53926],{"class":93,"line":134},[91,53927,29277],{"class":169},[91,53929,53930,53932],{"class":93,"line":228},[91,53931,29282],{"class":169},[91,53933,7560],{"class":101},[91,53935,53936,53938],{"class":93,"line":250},[91,53937,28360],{"class":97},[91,53939,2007],{"class":101},[91,53941,53942,53944,53946,53948,53950,53952,53954,53956,53958,53960],{"class":93,"line":260},[91,53943,28741],{"class":108},[91,53945,29297],{"class":101},[91,53947,1583],{"class":108},[91,53949,28223],{"class":101},[91,53951,166],{"class":566},[91,53953,28378],{"class":101},[91,53955,591],{"class":108},[91,53957,28619],{"class":101},[91,53959,29312],{"class":169},[91,53961,20036],{"class":101},[91,53963,53964],{"class":93,"line":274},[91,53965,15376],{"class":101},[91,53967,53968,53970],{"class":93,"line":284},[91,53969,29323],{"class":97},[91,53971,2007],{"class":101},[91,53973,53974,53976,53978,53980,53982,53984,53986,53988,53990,53992],{"class":93,"line":299},[91,53975,28741],{"class":108},[91,53977,29297],{"class":101},[91,53979,591],{"class":108},[91,53981,28223],{"class":101},[91,53983,166],{"class":566},[91,53985,28378],{"class":101},[91,53987,28340],{"class":108},[91,53989,28619],{"class":101},[91,53991,29346],{"class":169},[91,53993,20036],{"class":101},[91,53995,53996],{"class":93,"line":319},[91,53997,15376],{"class":101},[91,53999,54000,54002,54004,54006],{"class":93,"line":334},[91,54001,7901],{"class":97},[91,54003,24747],{"class":101},[91,54005,1179],{"class":566},[91,54007,102],{"class":101},[91,54009,54010,54012],{"class":93,"line":355},[91,54011,2695],{"class":566},[91,54013,102],{"class":101},[91,54015,54016],{"class":93,"line":364},[91,54017,29373],{"class":101},[91,54019,54020,54022,54024,54026,54028],{"class":93,"line":378},[91,54021,29378],{"class":101},[91,54023,1583],{"class":108},[91,54025,28619],{"class":101},[91,54027,29385],{"class":169},[91,54029,15376],{"class":101},[91,54031,54032],{"class":93,"line":387},[91,54033,10681],{"class":101},[91,54035,54036],{"class":93,"line":402},[91,54037,1698],{"class":101},[91,54039,54040],{"class":93,"line":422},[91,54041,137],{"class":101},[16,54043,29402,54044,29406,54046,29410],{},[31,54045,29405],{},[31,54047,29409],{},[82,54049,54050],{"className":11559,"code":29413,"language":11561,"meta":87,"style":87},[31,54051,54052,54058,54064,54068,54072,54090,54118,54136,54154,54158],{"__ignoreMap":87},[91,54053,54054,54056],{"class":93,"line":94},[91,54055,29142],{"class":97},[91,54057,8789],{"class":101},[91,54059,54060,54062],{"class":93,"line":105},[91,54061,29426],{"class":97},[91,54063,2007],{"class":101},[91,54065,54066],{"class":93,"line":121},[91,54067,29433],{"class":1343},[91,54069,54070],{"class":93,"line":134},[91,54071,29438],{"class":1343},[91,54073,54074,54076,54078,54080,54082,54084,54086,54088],{"class":93,"line":228},[91,54075,11922],{"class":108},[91,54077,29297],{"class":101},[91,54079,1578],{"class":108},[91,54081,28887],{"class":101},[91,54083,166],{"class":566},[91,54085,29453],{"class":169},[91,54087,20231],{"class":101},[91,54089,29458],{"class":1343},[91,54091,54092,54094,54096,54098,54100,54102,54104,54106,54108,54110,54112,54114,54116],{"class":93,"line":250},[91,54093,26712],{"class":108},[91,54095,1235],{"class":101},[91,54097,28037],{"class":97},[91,54099,795],{"class":101},[91,54101,11782],{"class":108},[91,54103,29297],{"class":101},[91,54105,1583],{"class":108},[91,54107,22817],{"class":101},[91,54109,28317],{"class":169},[91,54111,64],{"class":101},[91,54113,29483],{"class":169},[91,54115,1176],{"class":101},[91,54117,28513],{"class":1343},[91,54119,54120,54122,54124,54126,54128,54130,54132,54134],{"class":93,"line":260},[91,54121,11922],{"class":108},[91,54123,29297],{"class":101},[91,54125,1583],{"class":108},[91,54127,28887],{"class":101},[91,54129,166],{"class":566},[91,54131,29453],{"class":169},[91,54133,20231],{"class":101},[91,54135,28513],{"class":1343},[91,54137,54138,54140,54142,54144,54146,54148,54150,54152],{"class":93,"line":274},[91,54139,11922],{"class":108},[91,54141,29297],{"class":101},[91,54143,591],{"class":108},[91,54145,28887],{"class":101},[91,54147,166],{"class":566},[91,54149,29453],{"class":169},[91,54151,20231],{"class":101},[91,54153,28513],{"class":1343},[91,54155,54156],{"class":93,"line":284},[91,54157,1698],{"class":101},[91,54159,54160],{"class":93,"line":299},[91,54161,15376],{"class":101},[16,54163,29534],{},[829,54165,29537],{},{"title":87,"searchDepth":105,"depth":105,"links":54167},[54168,54169,54173],{"id":25178,"depth":105,"text":25179},{"id":25191,"depth":105,"text":25192,"children":54170},[54171,54172],{"id":25213,"depth":121,"text":25214},{"id":25890,"depth":121,"text":25891},{"id":27957,"depth":105,"text":27958,"children":54174},[54175,54176,54177,54178,54179],{"id":27969,"depth":121,"text":27970},{"id":28061,"depth":121,"text":28062},{"id":28149,"depth":121,"text":28150},{"id":29090,"depth":121,"text":29091},{"id":29244,"depth":121,"text":29245},{},{"title":25173,"description":29553},{"loc":29556},[15042,25166,29561,25178,29562],{"id":29565,"title":29566,"body":54185,"created":29955,"description":29956,"extension":843,"filename":29957,"meta":54508,"navigation":846,"path":29959,"seo":54509,"sitemap":54510,"stem":29962,"subject":15043,"tags":54511,"updated":29955,"volume":853,"__hash__":29966},{"type":8,"value":54186,"toc":54503},[54187,54189,54193,54195,54199,54203,54213,54269,54273,54279,54281,54283,54383,54387,54393,54485,54491,54493,54495,54497,54499,54501],[16,54188,29571],{},[16,54190,29574,54191,29578],{},[31,54192,29577],{},[49,54194,29582],{"id":29581},[16,54196,29585,54197,29589],{},[31,54198,29588],{},[16,54200,54201],{},[19,54202],{"alt":29594,"src":29595},[16,54204,54205,6301,54207,29604,54209,29608,54211,29611],{},[31,54206,29600],{},[31,54208,29603],{},[31,54210,29607],{},[31,54212,29577],{},[82,54214,54215],{"className":1154,"code":29614,"language":1156,"meta":87,"style":87},[31,54216,54217,54227,54231,54243,54255,54259,54265],{"__ignoreMap":87},[91,54218,54219,54221,54223,54225],{"class":93,"line":94},[91,54220,2499],{"class":566},[91,54222,29623],{"class":101},[91,54224,2505],{"class":566},[91,54226,29628],{"class":169},[91,54228,54229],{"class":93,"line":105},[91,54230,1450],{"emptyLinePlaceholder":846},[91,54232,54233,54235,54237,54239,54241],{"class":93,"line":121},[91,54234,29637],{"class":97},[91,54236,795],{"class":101},[91,54238,23700],{"class":1172},[91,54240,11859],{"class":566},[91,54242,102],{"class":101},[91,54244,54245,54247,54249,54251,54253],{"class":93,"line":134},[91,54246,2641],{"class":566},[91,54248,29652],{"class":108},[91,54250,1366],{"class":566},[91,54252,7916],{"class":97},[91,54254,29659],{"class":101},[91,54256,54257],{"class":93,"line":228},[91,54258,1450],{"emptyLinePlaceholder":846},[91,54260,54261,54263],{"class":93,"line":250},[91,54262,29668],{"class":97},[91,54264,29671],{"class":101},[91,54266,54267],{"class":93,"line":260},[91,54268,9444],{"class":101},[16,54270,29678,54271,29681],{},[31,54272,29637],{},[16,54274,29684,54275,29687,54277,29690],{},[31,54276,1884],{},[31,54278,1884],{},[49,54280,29694],{"id":29693},[16,54282,29697],{},[82,54284,54285],{"className":1154,"code":29700,"language":1156,"meta":87,"style":87},[31,54286,54287,54297,54305,54313,54329,54333,54337,54347,54355,54363,54379],{"__ignoreMap":87},[91,54288,54289,54291,54293,54295],{"class":93,"line":94},[91,54290,1968],{"class":566},[91,54292,29709],{"class":108},[91,54294,1366],{"class":566},[91,54296,102],{"class":101},[91,54298,54299,54301,54303],{"class":93,"line":105},[91,54300,24725],{"class":101},[91,54302,29720],{"class":169},[91,54304,7560],{"class":101},[91,54306,54307,54309,54311],{"class":93,"line":121},[91,54308,24735],{"class":101},[91,54310,29729],{"class":169},[91,54312,7560],{"class":101},[91,54314,54315,54317,54319,54321,54323,54325,54327],{"class":93,"line":134},[91,54316,22214],{"class":97},[91,54318,24747],{"class":101},[91,54320,1179],{"class":566},[91,54322,24752],{"class":566},[91,54324,795],{"class":101},[91,54326,29746],{"class":169},[91,54328,8037],{"class":101},[91,54330,54331],{"class":93,"line":228},[91,54332,137],{"class":101},[91,54334,54335],{"class":93,"line":250},[91,54336,1450],{"emptyLinePlaceholder":846},[91,54338,54339,54341,54343,54345],{"class":93,"line":260},[91,54340,1968],{"class":566},[91,54342,29763],{"class":108},[91,54344,1366],{"class":566},[91,54346,102],{"class":101},[91,54348,54349,54351,54353],{"class":93,"line":274},[91,54350,24725],{"class":101},[91,54352,29774],{"class":169},[91,54354,7560],{"class":101},[91,54356,54357,54359,54361],{"class":93,"line":284},[91,54358,24735],{"class":101},[91,54360,29783],{"class":169},[91,54362,7560],{"class":101},[91,54364,54365,54367,54369,54371,54373,54375,54377],{"class":93,"line":299},[91,54366,22214],{"class":97},[91,54368,24747],{"class":101},[91,54370,1179],{"class":566},[91,54372,24752],{"class":566},[91,54374,795],{"class":101},[91,54376,29746],{"class":169},[91,54378,8037],{"class":101},[91,54380,54381],{"class":93,"line":319},[91,54382,137],{"class":101},[16,54384,29808,54385,29812],{},[31,54386,29811],{},[16,54388,29815,54389,29818,54391,29821],{},[31,54390,23507],{},[31,54392,9452],{},[82,54394,54395],{"className":1934,"code":29824,"language":1936,"meta":87,"style":87},[31,54396,54397,54401,54417,54427,54431,54443,54451,54455,54463,54477],{"__ignoreMap":87},[91,54398,54399],{"class":93,"line":94},[91,54400,29831],{"class":1343},[91,54402,54403,54405,54407,54409,54411,54413,54415],{"class":93,"line":105},[91,54404,156],{"class":101},[91,54406,1945],{"class":159},[91,54408,1948],{"class":97},[91,54410,1951],{"class":97},[91,54412,166],{"class":101},[91,54414,1956],{"class":169},[91,54416,173],{"class":101},[91,54418,54419,54421,54423,54425],{"class":93,"line":121},[91,54420,2499],{"class":566},[91,54422,12217],{"class":101},[91,54424,2505],{"class":566},[91,54426,29628],{"class":169},[91,54428,54429],{"class":93,"line":134},[91,54430,1450],{"emptyLinePlaceholder":846},[91,54432,54433,54435,54437,54439,54441],{"class":93,"line":228},[91,54434,1968],{"class":566},[91,54436,12259],{"class":108},[91,54438,1366],{"class":566},[91,54440,12264],{"class":97},[91,54442,9313],{"class":101},[91,54444,54445,54447,54449],{"class":93,"line":250},[91,54446,493],{"class":101},[91,54448,1945],{"class":159},[91,54450,173],{"class":101},[91,54452,54453],{"class":93,"line":260},[91,54454,1450],{"emptyLinePlaceholder":846},[91,54456,54457,54459,54461],{"class":93,"line":274},[91,54458,156],{"class":101},[91,54460,2118],{"class":159},[91,54462,173],{"class":101},[91,54464,54465,54467,54469,54471,54473,54475],{"class":93,"line":284},[91,54466,2125],{"class":101},[91,54468,23507],{"class":159},[91,54470,29902],{"class":97},[91,54472,166],{"class":101},[91,54474,29907],{"class":169},[91,54476,2147],{"class":101},[91,54478,54479,54481,54483],{"class":93,"line":299},[91,54480,493],{"class":101},[91,54482,2118],{"class":159},[91,54484,173],{"class":101},[16,54486,54487,29923,54489,29926],{},[31,54488,29922],{},[31,54490,29577],{},[16,54492,29929],{},[49,54494,6005],{"id":6004},[1112,54496],{"description":29934,"favicon":29935,"host":29936,"title":29937,"url":29938},[1112,54498],{"description":29934,"favicon":29935,"host":29936,"title":29941,"url":29942},[1112,54500],{"description":29934,"favicon":29935,"host":29936,"title":29945,"url":29946},[829,54502,29949],{},{"title":87,"searchDepth":105,"depth":105,"links":54504},[54505,54506,54507],{"id":29581,"depth":105,"text":29582},{"id":29693,"depth":105,"text":29694},{"id":6004,"depth":105,"text":6005},{},{"title":29566,"description":29956},{"loc":29959},[16324,21680,29964,29965],{"id":29968,"title":29969,"body":54513,"created":30430,"description":30431,"extension":843,"filename":30432,"meta":54853,"navigation":846,"path":30434,"seo":54854,"sitemap":54855,"stem":30437,"subject":7200,"tags":54856,"updated":30430,"volume":853,"__hash__":30442},{"type":8,"value":54514,"toc":54844},[54515,54521,54523,54525,54591,54593,54595,54597,54599,54604,54614,54619,54621,54633,54643,54645,54651,54656,54666,54668,54680,54682,54684,54696,54698,54700,54730,54732,54734,54736,54738,54754,54756,54762,54764,54766,54772,54804,54806,54832,54834,54836,54838,54840,54842],[16,54516,29974,54517,5321,54519,29981],{},[31,54518,29977],{},[31,54520,29980],{},[49,54522,29985],{"id":29984},[16,54524,29988],{},[812,54526,54527,54537],{},[3001,54528,54529],{},[3004,54530,54531,54533,54535],{},[3007,54532,29997],{},[3007,54534,30000],{},[3007,54536,30003],{},[3017,54538,54539,54547,54559,54567,54575,54583],{},[3004,54540,54541,54543,54545],{},[3022,54542,30010],{},[3022,54544,30013],{},[3022,54546,30016],{},[3004,54548,54549,54555,54557],{},[3022,54550,30021,54551,64,54553,30028],{},[31,54552,30024],{},[31,54554,30027],{},[3022,54556,30013],{},[3022,54558,30033],{},[3004,54560,54561,54563,54565],{},[3022,54562,30038],{},[3022,54564,30013],{},[3022,54566,30043],{},[3004,54568,54569,54571,54573],{},[3022,54570,30048],{},[3022,54572,30051],{},[3022,54574,30054],{},[3004,54576,54577,54579,54581],{},[3022,54578,30059],{},[3022,54580,30051],{},[3022,54582,30064],{},[3004,54584,54585,54587,54589],{},[3022,54586,30069],{},[3022,54588,30051],{},[3022,54590,30074],{},[16,54592,30077],{},[16,54594,30080],{},[49,54596,30084],{"id":30083},[16,54598,30087],{},[82,54600,54602],{"className":54601,"code":30091,"language":1099,"meta":87},[1097],[31,54603,30091],{"__ignoreMap":87},[16,54605,54606,64,54608,64,54610,30104,54612,30108],{},[31,54607,30098],{},[31,54609,12660],{},[31,54611,30103],{},[31,54613,30107],{},[82,54615,54617],{"className":54616,"code":30112,"language":1099,"meta":87},[1097],[31,54618,30112],{"__ignoreMap":87},[16,54620,30117],{},[82,54622,54623],{"className":6839,"code":30120,"language":6841,"meta":87,"style":87},[31,54624,54625],{"__ignoreMap":87},[91,54626,54627,54629,54631],{"class":93,"line":94},[91,54628,7202],{"class":97},[91,54630,30129],{"class":169},[91,54632,30132],{"class":169},[16,54634,20150,54635,64,54637,64,54639,30141,54641,30145],{},[31,54636,30098],{},[31,54638,12660],{},[31,54640,30103],{},[31,54642,30144],{},[49,54644,30149],{"id":30148},[16,54646,30152,54647,30155,54649,30159],{},[31,54648,29977],{},[31,54650,30158],{},[82,54652,54654],{"className":54653,"code":30163,"language":1099,"meta":87},[1097],[31,54655,30163],{"__ignoreMap":87},[16,54657,54658,30170,54660,64,54662,64,54664,30177],{},[31,54659,30158],{},[31,54661,30098],{},[31,54663,12660],{},[31,54665,30103],{},[16,54667,30180],{},[24,54669,54670,54672,54676,54678],{},[27,54671,30185],{},[27,54673,30188,54674,30191],{},[31,54675,30144],{},[27,54677,30194],{},[27,54679,30197],{},[16,54681,30200],{},[49,54683,30204],{"id":30203},[16,54685,30207,54686,30210,54688,64,54690,64,54692,30217,54694,3512],{},[31,54687,30107],{},[31,54689,30098],{},[31,54691,12660],{},[31,54693,30103],{},[31,54695,30220],{},[16,54697,30223],{},[16,54699,30226],{},[82,54701,54702],{"className":6839,"code":30229,"language":6841,"meta":87,"style":87},[31,54703,54704,54712,54720],{"__ignoreMap":87},[91,54705,54706,54708,54710],{"class":93,"line":94},[91,54707,7202],{"class":97},[91,54709,30238],{"class":169},[91,54711,30241],{"class":169},[91,54713,54714,54716,54718],{"class":93,"line":105},[91,54715,7202],{"class":97},[91,54717,30248],{"class":169},[91,54719,30251],{"class":108},[91,54721,54722,54724,54726,54728],{"class":93,"line":121},[91,54723,7202],{"class":97},[91,54725,30238],{"class":169},[91,54727,30260],{"class":108},[91,54729,30263],{"class":169},[16,54731,30266],{},[49,54733,30270],{"id":30269},[16,54735,30273],{},[16,54737,30276],{},[82,54739,54740],{"className":6839,"code":30279,"language":6841,"meta":87,"style":87},[31,54741,54742],{"__ignoreMap":87},[91,54743,54744,54746,54748,54750,54752],{"class":93,"line":94},[91,54745,7202],{"class":97},[91,54747,30129],{"class":169},[91,54749,30290],{"class":108},[91,54751,6594],{"class":108},[91,54753,30295],{"class":169},[16,54755,30298],{},[24,54757,54758,54760],{},[27,54759,30303],{},[27,54761,30306],{},[49,54763,30310],{"id":30309},[16,54765,30313],{},[16,54767,30316,54768,30320,54770,30324],{},[31,54769,30319],{},[31,54771,30323],{},[82,54773,54774],{"className":6839,"code":30327,"language":6841,"meta":87,"style":87},[31,54775,54776,54784,54794],{"__ignoreMap":87},[91,54777,54778,54780,54782],{"class":93,"line":94},[91,54779,7202],{"class":97},[91,54781,30238],{"class":169},[91,54783,30241],{"class":169},[91,54785,54786,54788,54790,54792],{"class":93,"line":105},[91,54787,7202],{"class":97},[91,54789,30344],{"class":169},[91,54791,30347],{"class":108},[91,54793,30350],{"class":169},[91,54795,54796,54798,54800,54802],{"class":93,"line":121},[91,54797,7202],{"class":97},[91,54799,30357],{"class":169},[91,54801,30290],{"class":108},[91,54803,30362],{"class":169},[16,54805,30365],{},[82,54807,54808],{"className":6839,"code":30368,"language":6841,"meta":87,"style":87},[31,54809,54810,54822],{"__ignoreMap":87},[91,54811,54812,54814,54816,54818,54820],{"class":93,"line":94},[91,54813,7202],{"class":97},[91,54815,30377],{"class":169},[91,54817,30380],{"class":108},[91,54819,30383],{"class":169},[91,54821,30241],{"class":169},[91,54823,54824,54826,54828,54830],{"class":93,"line":105},[91,54825,7202],{"class":97},[91,54827,30392],{"class":169},[91,54829,30395],{"class":108},[91,54831,30241],{"class":169},[16,54833,30400],{},[49,54835,6005],{"id":6004},[1112,54837],{"description":30405,"host":7154,"title":30406,"url":30407},[1112,54839],{"description":30410,"host":7154,"title":30411,"url":30412},[1112,54841],{"description":30415,"host":7170,"title":30416,"url":30417},[829,54843,30420],{},{"title":87,"searchDepth":105,"depth":105,"links":54845},[54846,54847,54848,54849,54850,54851,54852],{"id":29984,"depth":105,"text":29985},{"id":30083,"depth":105,"text":30084},{"id":30148,"depth":105,"text":30149},{"id":30203,"depth":105,"text":30204},{"id":30269,"depth":105,"text":30270},{"id":30309,"depth":105,"text":30310},{"id":6004,"depth":105,"text":6005},{},{"title":29969,"description":30431},{"loc":30434},[7202,7203,30439,30440,30441],{"id":30444,"title":30445,"body":54858,"created":4430,"description":30493,"extension":843,"filename":30494,"meta":54890,"navigation":846,"path":30498,"seo":54892,"sitemap":54893,"stem":30501,"subject":851,"tags":54894,"updated":4430,"volume":1863,"__hash__":30503},{"type":8,"value":54859,"toc":54888},[54860,54864,54868,54870,54882],[16,54861,54862],{},[19,54863],{"alt":21,"src":30452},[16,54865,30455,54866,30459],{},[31,54867,30458],{},[1112,54869],{"description":30462,"favicon":9248,"host":5541,"title":30463,"url":30464},[1722,54871,54872],{},[16,54873,54874,30471,54876,30475,54878,30478,54880,30481],{},[91,54875,1728],{},[31,54877,30474],{},[31,54879,30458],{},[31,54881,30474],{},[16,54883,30484,54884,30487,54886,30490],{},[31,54885,30458],{},[31,54887,30474],{},{"title":87,"searchDepth":105,"depth":105,"links":54889},[],{"references":54891},[30497],{"title":30445,"description":30493},{"loc":30498},[86],[54896,55552,56028,56317,57139,58357,58451,58724,58966,59057,59262,59483,60077,60339,60490,61443,61827,62646,63192,66670,66848,66939,67680,68346,68677,68777,69066,69349,69438,69657,70219,70328,70450,71222,71820,74222,74379,74814,78575,78903,79248],{"id":5,"title":6,"body":54897,"created":841,"description":842,"extension":843,"filename":844,"meta":55548,"navigation":846,"path":847,"seo":55549,"sitemap":55550,"stem":850,"subject":851,"tags":55551,"updated":841,"volume":853,"__hash__":854},{"type":8,"value":54898,"toc":55539},[54899,54901,54905,54919,54921,54939,54941,54975,54979,55281,55285,55291,55293,55297,55303,55305,55307,55385,55387,55475,55479,55487,55489,55491,55493,55495,55501,55503,55525,55527,55529,55533,55537],[11,54900,14],{"id":13},[16,54902,54903],{},[19,54904],{"alt":21,"src":22},[24,54906,54907,54913,54915,54917],{},[27,54908,29,54909,34,54911,38],{},[31,54910,33],{},[31,54912,37],{},[27,54914,41],{},[27,54916,44],{},[27,54918,47],{},[49,54920,51],{"id":51},[24,54922,54923,54933],{},[27,54924,56,54925],{},[24,54926,54927],{},[27,54928,54929,64,54931,68],{},[31,54930,63],{},[31,54932,67],{},[27,54934,71,54935],{},[24,54936,54937],{},[27,54938,76],{},[11,54940,80],{"id":79},[82,54942,54943],{"className":84,"code":85,"language":86,"meta":87,"style":87},[31,54944,54945,54951,54961,54971],{"__ignoreMap":87},[91,54946,54947,54949],{"class":93,"line":94},[91,54948,98],{"class":97},[91,54950,102],{"class":101},[91,54952,54953,54955,54957,54959],{"class":93,"line":105},[91,54954,109],{"class":108},[91,54956,112],{"class":101},[91,54958,115],{"class":108},[91,54960,118],{"class":101},[91,54962,54963,54965,54967,54969],{"class":93,"line":121},[91,54964,124],{"class":108},[91,54966,112],{"class":101},[91,54968,129],{"class":108},[91,54970,118],{"class":101},[91,54972,54973],{"class":93,"line":134},[91,54974,137],{"class":101},[16,54976,140,54977,144],{},[31,54978,143],{},[82,54980,54981],{"className":147,"code":148,"language":149,"meta":87,"style":87},[31,54982,54983,54997,55011,55029,55043,55061,55069,55081,55089,55103,55121,55135,55153,55161,55173,55181,55195,55213,55227,55245,55253,55265,55273],{"__ignoreMap":87},[91,54984,54985,54987,54989,54991,54993,54995],{"class":93,"line":94},[91,54986,156],{"class":101},[91,54988,160],{"class":159},[91,54990,163],{"class":97},[91,54992,166],{"class":101},[91,54994,170],{"class":169},[91,54996,173],{"class":101},[91,54998,54999,55001,55003,55005,55007,55009],{"class":93,"line":105},[91,55000,178],{"class":101},[91,55002,160],{"class":159},[91,55004,163],{"class":97},[91,55006,166],{"class":101},[91,55008,187],{"class":169},[91,55010,173],{"class":101},[91,55012,55013,55015,55017,55019,55021,55023,55025,55027],{"class":93,"line":121},[91,55014,194],{"class":101},[91,55016,160],{"class":159},[91,55018,163],{"class":97},[91,55020,166],{"class":101},[91,55022,203],{"class":169},[91,55024,206],{"class":101},[91,55026,160],{"class":159},[91,55028,173],{"class":101},[91,55030,55031,55033,55035,55037,55039,55041],{"class":93,"line":134},[91,55032,194],{"class":101},[91,55034,160],{"class":159},[91,55036,163],{"class":97},[91,55038,166],{"class":101},[91,55040,223],{"class":169},[91,55042,173],{"class":101},[91,55044,55045,55047,55049,55051,55053,55055,55057,55059],{"class":93,"line":228},[91,55046,231],{"class":101},[91,55048,160],{"class":159},[91,55050,163],{"class":97},[91,55052,166],{"class":101},[91,55054,240],{"class":169},[91,55056,243],{"class":101},[91,55058,160],{"class":159},[91,55060,173],{"class":101},[91,55062,55063,55065,55067],{"class":93,"line":250},[91,55064,253],{"class":101},[91,55066,160],{"class":159},[91,55068,173],{"class":101},[91,55070,55071,55073,55075,55077,55079],{"class":93,"line":260},[91,55072,194],{"class":101},[91,55074,160],{"class":159},[91,55076,267],{"class":101},[91,55078,160],{"class":159},[91,55080,173],{"class":101},[91,55082,55083,55085,55087],{"class":93,"line":274},[91,55084,277],{"class":101},[91,55086,160],{"class":159},[91,55088,173],{"class":101},[91,55090,55091,55093,55095,55097,55099,55101],{"class":93,"line":284},[91,55092,178],{"class":101},[91,55094,160],{"class":159},[91,55096,163],{"class":97},[91,55098,166],{"class":101},[91,55100,187],{"class":169},[91,55102,173],{"class":101},[91,55104,55105,55107,55109,55111,55113,55115,55117,55119],{"class":93,"line":299},[91,55106,194],{"class":101},[91,55108,160],{"class":159},[91,55110,163],{"class":97},[91,55112,166],{"class":101},[91,55114,203],{"class":169},[91,55116,312],{"class":101},[91,55118,160],{"class":159},[91,55120,173],{"class":101},[91,55122,55123,55125,55127,55129,55131,55133],{"class":93,"line":319},[91,55124,194],{"class":101},[91,55126,160],{"class":159},[91,55128,163],{"class":97},[91,55130,166],{"class":101},[91,55132,223],{"class":169},[91,55134,173],{"class":101},[91,55136,55137,55139,55141,55143,55145,55147,55149,55151],{"class":93,"line":334},[91,55138,231],{"class":101},[91,55140,160],{"class":159},[91,55142,163],{"class":97},[91,55144,166],{"class":101},[91,55146,345],{"class":169},[91,55148,348],{"class":101},[91,55150,160],{"class":159},[91,55152,173],{"class":101},[91,55154,55155,55157,55159],{"class":93,"line":355},[91,55156,253],{"class":101},[91,55158,160],{"class":159},[91,55160,173],{"class":101},[91,55162,55163,55165,55167,55169,55171],{"class":93,"line":364},[91,55164,194],{"class":101},[91,55166,160],{"class":159},[91,55168,371],{"class":101},[91,55170,160],{"class":159},[91,55172,173],{"class":101},[91,55174,55175,55177,55179],{"class":93,"line":378},[91,55176,277],{"class":101},[91,55178,160],{"class":159},[91,55180,173],{"class":101},[91,55182,55183,55185,55187,55189,55191,55193],{"class":93,"line":387},[91,55184,178],{"class":101},[91,55186,160],{"class":159},[91,55188,163],{"class":97},[91,55190,166],{"class":101},[91,55192,187],{"class":169},[91,55194,173],{"class":101},[91,55196,55197,55199,55201,55203,55205,55207,55209,55211],{"class":93,"line":402},[91,55198,194],{"class":101},[91,55200,160],{"class":159},[91,55202,163],{"class":97},[91,55204,166],{"class":101},[91,55206,203],{"class":169},[91,55208,415],{"class":101},[91,55210,160],{"class":159},[91,55212,173],{"class":101},[91,55214,55215,55217,55219,55221,55223,55225],{"class":93,"line":422},[91,55216,194],{"class":101},[91,55218,160],{"class":159},[91,55220,163],{"class":97},[91,55222,166],{"class":101},[91,55224,433],{"class":169},[91,55226,173],{"class":101},[91,55228,55229,55231,55233,55235,55237,55239,55241,55243],{"class":93,"line":438},[91,55230,231],{"class":101},[91,55232,160],{"class":159},[91,55234,163],{"class":97},[91,55236,166],{"class":101},[91,55238,345],{"class":169},[91,55240,451],{"class":101},[91,55242,160],{"class":159},[91,55244,173],{"class":101},[91,55246,55247,55249,55251],{"class":93,"line":458},[91,55248,253],{"class":101},[91,55250,160],{"class":159},[91,55252,173],{"class":101},[91,55254,55255,55257,55259,55261,55263],{"class":93,"line":467},[91,55256,194],{"class":101},[91,55258,160],{"class":159},[91,55260,474],{"class":101},[91,55262,160],{"class":159},[91,55264,173],{"class":101},[91,55266,55267,55269,55271],{"class":93,"line":481},[91,55268,277],{"class":101},[91,55270,160],{"class":159},[91,55272,173],{"class":101},[91,55274,55275,55277,55279],{"class":93,"line":490},[91,55276,493],{"class":101},[91,55278,160],{"class":159},[91,55280,173],{"class":101},[16,55282,55283],{},[19,55284],{"alt":21,"src":502},[16,55286,505,55287,508,55289,512],{},[31,55288,143],{},[31,55290,511],{},[49,55292,515],{"id":515},[16,55294,55295],{},[19,55296],{"alt":21,"src":520},[16,55298,523,55299,527,55301,531],{},[31,55300,526],{},[31,55302,530],{},[16,55304,534],{},[49,55306,538],{"id":537},[82,55308,55309],{"className":84,"code":541,"language":86,"meta":87,"style":87},[31,55310,55311,55319,55331,55341,55351,55361,55371,55381],{"__ignoreMap":87},[91,55312,55313,55315,55317],{"class":93,"line":94},[91,55314,548],{"class":101},[91,55316,551],{"class":159},[91,55318,102],{"class":101},[91,55320,55321,55323,55325,55327,55329],{"class":93,"line":105},[91,55322,558],{"class":108},[91,55324,112],{"class":101},[91,55326,563],{"class":108},[91,55328,567],{"class":566},[91,55330,118],{"class":101},[91,55332,55333,55335,55337,55339],{"class":93,"line":121},[91,55334,574],{"class":108},[91,55336,112],{"class":101},[91,55338,579],{"class":108},[91,55340,118],{"class":101},[91,55342,55343,55345,55347,55349],{"class":93,"line":134},[91,55344,586],{"class":108},[91,55346,112],{"class":101},[91,55348,591],{"class":108},[91,55350,118],{"class":101},[91,55352,55353,55355,55357,55359],{"class":93,"line":228},[91,55354,598],{"class":108},[91,55356,112],{"class":101},[91,55358,603],{"class":108},[91,55360,118],{"class":101},[91,55362,55363,55365,55367,55369],{"class":93,"line":250},[91,55364,610],{"class":108},[91,55366,112],{"class":101},[91,55368,115],{"class":108},[91,55370,118],{"class":101},[91,55372,55373,55375,55377,55379],{"class":93,"line":260},[91,55374,621],{"class":108},[91,55376,112],{"class":101},[91,55378,129],{"class":108},[91,55380,118],{"class":101},[91,55382,55383],{"class":93,"line":274},[91,55384,137],{"class":101},[16,55386,634],{},[82,55388,55389],{"className":84,"code":637,"language":86,"meta":87,"style":87},[31,55390,55391,55397,55409,55419,55429,55439,55449,55459,55471],{"__ignoreMap":87},[91,55392,55393,55395],{"class":93,"line":94},[91,55394,644],{"class":97},[91,55396,102],{"class":101},[91,55398,55399,55401,55403,55405,55407],{"class":93,"line":105},[91,55400,558],{"class":108},[91,55402,112],{"class":101},[91,55404,563],{"class":108},[91,55406,567],{"class":566},[91,55408,118],{"class":101},[91,55410,55411,55413,55415,55417],{"class":93,"line":121},[91,55412,574],{"class":108},[91,55414,112],{"class":101},[91,55416,579],{"class":108},[91,55418,118],{"class":101},[91,55420,55421,55423,55425,55427],{"class":93,"line":134},[91,55422,586],{"class":108},[91,55424,112],{"class":101},[91,55426,591],{"class":108},[91,55428,118],{"class":101},[91,55430,55431,55433,55435,55437],{"class":93,"line":228},[91,55432,598],{"class":108},[91,55434,112],{"class":101},[91,55436,603],{"class":108},[91,55438,118],{"class":101},[91,55440,55441,55443,55445,55447],{"class":93,"line":250},[91,55442,610],{"class":108},[91,55444,112],{"class":101},[91,55446,115],{"class":108},[91,55448,118],{"class":101},[91,55450,55451,55453,55455,55457],{"class":93,"line":260},[91,55452,621],{"class":108},[91,55454,112],{"class":101},[91,55456,129],{"class":108},[91,55458,118],{"class":101},[91,55460,55461,55463,55465,55467,55469],{"class":93,"line":274},[91,55462,713],{"class":108},[91,55464,112],{"class":101},[91,55466,718],{"class":108},[91,55468,721],{"class":101},[91,55470,724],{"class":101},[91,55472,55473],{"class":93,"line":284},[91,55474,137],{"class":101},[16,55476,731,55477,735],{},[31,55478,734],{},[16,55480,55481,741,55483,744,55485,748],{},[31,55482,740],{},[31,55484,734],{},[31,55486,747],{},[49,55488,752],{"id":751},[16,55490,755],{},[757,55492,33],{"id":33},[16,55494,761],{},[24,55496,55497,55499],{},[27,55498,766],{},[27,55500,769],{},[771,55502,774],{"id":773},[24,55504,55505,55513],{},[27,55506,779,55507],{},[24,55508,55509],{},[27,55510,55511,787],{},[31,55512,786],{},[27,55514,790,55515,795,55517,799,55519,799,55521,799,55523,809],{},[792,55516,794],{},[31,55518,798],{},[31,55520,802],{},[31,55522,805],{},[31,55524,808],{},[757,55526,812],{"id":812},[771,55528,815],{"id":815},[16,55530,55531,821],{},[31,55532,820],{},[16,55534,55535,827],{},[31,55536,826],{},[829,55538,831],{},{"title":87,"searchDepth":105,"depth":105,"links":55540},[55541,55542,55543,55544],{"id":51,"depth":105,"text":51},{"id":515,"depth":105,"text":515},{"id":537,"depth":105,"text":538},{"id":751,"depth":105,"text":752,"children":55545},[55546,55547],{"id":33,"depth":121,"text":33},{"id":812,"depth":121,"text":812},{},{"title":6,"description":842},{"loc":847},[86],{"id":856,"title":857,"body":55553,"created":1501,"description":1502,"extension":843,"filename":1503,"meta":56024,"navigation":846,"path":1505,"seo":56025,"sitemap":56026,"stem":1508,"subject":1509,"tags":56027,"updated":1501,"volume":853,"__hash__":1513},{"type":8,"value":55554,"toc":56018},[55555,55557,55613,55615,55617,55621,55627,55639,55647,55723,55728,55732,55734,55736,55738,55742,55744,55746,55748,55750,55752,55754,55874,55878,55880,55882,55884,55890,56014,56016],[16,55556,862],{},[24,55558,55559,55573,55599],{},[27,55560,55561,870,55563],{},[792,55562,869],{},[24,55564,55565,55569],{},[27,55566,55567,878],{},[792,55568,877],{},[27,55570,55571,884],{},[792,55572,883],{},[27,55574,55575,890,55577],{},[792,55576,889],{},[24,55578,55579,55583,55587,55591],{},[27,55580,55581,898],{},[792,55582,897],{},[27,55584,55585,904],{},[792,55586,903],{},[27,55588,55589,910],{},[792,55590,909],{},[27,55592,55593,64,55595,64,55597,922],{},[792,55594,915],{},[792,55596,918],{},[792,55598,921],{},[27,55600,55601,928,55603],{},[792,55602,927],{},[24,55604,55605,55609],{},[27,55606,55607,936],{},[792,55608,935],{},[27,55610,55611,942],{},[792,55612,941],{},[16,55614,945],{},[11,55616,949],{"id":948},[16,55618,952,55619,956],{},[31,55620,955],{},[16,55622,959,55623,963,55625,967],{},[31,55624,962],{},[31,55626,966],{},[82,55628,55629],{"className":970,"code":971,"language":972,"meta":87,"style":87},[31,55630,55631,55635],{"__ignoreMap":87},[91,55632,55633],{"class":93,"line":94},[91,55634,979],{},[91,55636,55637],{"class":93,"line":105},[91,55638,984],{},[16,55640,55641,989,55643,993,55645,997],{},[31,55642,962],{},[31,55644,992],{},[31,55646,996],{},[82,55648,55649],{"className":1000,"code":1001,"language":1002,"meta":87,"style":87},[31,55650,55651,55655,55659,55663,55667,55671,55675,55679,55683,55687,55691,55695,55699,55703,55707,55711,55715,55719],{"__ignoreMap":87},[91,55652,55653],{"class":93,"line":94},[91,55654,1009],{},[91,55656,55657],{"class":93,"line":105},[91,55658,1014],{},[91,55660,55661],{"class":93,"line":121},[91,55662,1019],{},[91,55664,55665],{"class":93,"line":134},[91,55666,1024],{},[91,55668,55669],{"class":93,"line":228},[91,55670,1029],{},[91,55672,55673],{"class":93,"line":250},[91,55674,1034],{},[91,55676,55677],{"class":93,"line":260},[91,55678,1039],{},[91,55680,55681],{"class":93,"line":274},[91,55682,1044],{},[91,55684,55685],{"class":93,"line":284},[91,55686,1049],{},[91,55688,55689],{"class":93,"line":299},[91,55690,1054],{},[91,55692,55693],{"class":93,"line":319},[91,55694,1059],{},[91,55696,55697],{"class":93,"line":334},[91,55698,1064],{},[91,55700,55701],{"class":93,"line":355},[91,55702,1069],{},[91,55704,55705],{"class":93,"line":364},[91,55706,1074],{},[91,55708,55709],{"class":93,"line":378},[91,55710,1079],{},[91,55712,55713],{"class":93,"line":387},[91,55714,1084],{},[91,55716,55717],{"class":93,"line":402},[91,55718,1089],{},[91,55720,55721],{"class":93,"line":422},[91,55722,137],{},[82,55724,55726],{"className":55725,"code":1098,"language":1099},[1097],[31,55727,1098],{"__ignoreMap":87},[16,55729,55730,1106],{},[31,55731,966],{},[11,55733,1110],{"id":1109},[1112,55735],{"description":1114,"host":1115,"title":1116,"url":1117,"favicon":1118},[16,55737,1121],{},[16,55739,1124,55740,1128],{},[31,55741,1127],{},[49,55743,1132],{"id":1131},[16,55745,1135],{},[16,55747,1138],{},[1112,55749],{"description":1141,"host":1142,"title":1143,"url":1144},[16,55751,1147],{},[757,55753,1151],{"id":1150},[82,55755,55756],{"className":1154,"code":1155,"language":1156,"meta":87,"style":87},[31,55757,55758,55774,55782,55802,55822,55826,55846,55866,55870],{"__ignoreMap":87},[91,55759,55760,55762,55764,55766,55768,55770,55772],{"class":93,"line":94},[91,55761,1163],{"class":101},[91,55763,1166],{"class":97},[91,55765,1169],{"class":101},[91,55767,1173],{"class":1172},[91,55769,1176],{"class":101},[91,55771,1179],{"class":566},[91,55773,102],{"class":101},[91,55775,55776,55778,55780],{"class":93,"line":105},[91,55777,1186],{"class":101},[91,55779,1189],{"class":97},[91,55781,1192],{"class":101},[91,55783,55784,55786,55788,55790,55792,55794,55796,55798,55800],{"class":93,"line":121},[91,55785,1197],{"class":101},[91,55787,1200],{"class":97},[91,55789,1169],{"class":101},[91,55791,1205],{"class":1172},[91,55793,1208],{"class":566},[91,55795,1211],{"class":108},[91,55797,1176],{"class":101},[91,55799,1179],{"class":566},[91,55801,102],{"class":101},[91,55803,55804,55806,55808,55810,55812,55814,55816,55818,55820],{"class":93,"line":134},[91,55805,1222],{"class":101},[91,55807,1225],{"class":97},[91,55809,795],{"class":101},[91,55811,1230],{"class":169},[91,55813,1173],{"class":101},[91,55815,1235],{"class":169},[91,55817,1238],{"class":101},[91,55819,1241],{"class":169},[91,55821,1244],{"class":101},[91,55823,55824],{"class":93,"line":228},[91,55825,1249],{"class":101},[91,55827,55828,55830,55832,55834,55836,55838,55840,55842,55844],{"class":93,"line":250},[91,55829,1197],{"class":101},[91,55831,1256],{"class":97},[91,55833,1169],{"class":101},[91,55835,1261],{"class":1172},[91,55837,1208],{"class":566},[91,55839,1211],{"class":108},[91,55841,1176],{"class":101},[91,55843,1179],{"class":566},[91,55845,102],{"class":101},[91,55847,55848,55850,55852,55854,55856,55858,55860,55862,55864],{"class":93,"line":260},[91,55849,1222],{"class":101},[91,55851,1261],{"class":97},[91,55853,795],{"class":101},[91,55855,1282],{"class":169},[91,55857,1173],{"class":101},[91,55859,1235],{"class":169},[91,55861,1238],{"class":101},[91,55863,1241],{"class":169},[91,55865,1293],{"class":101},[91,55867,55868],{"class":93,"line":274},[91,55869,1298],{"class":101},[91,55871,55872],{"class":93,"line":284},[91,55873,1303],{"class":101},[16,55875,55876,1309],{},[31,55877,1308],{},[49,55879,1313],{"id":1312},[1112,55881],{"description":1316,"host":1317,"title":1318,"url":1319,"favicon":1320,"image":1321},[16,55883,1324],{},[16,55885,55886,1329,55888,1333],{},[31,55887,1308],{},[31,55889,1332],{},[82,55891,55892],{"className":1154,"code":1336,"language":1156,"meta":87,"style":87},[31,55893,55894,55898,55918,55924,55938,55952,55964,55976,55980,55984,55990,56002],{"__ignoreMap":87},[91,55895,55896],{"class":93,"line":94},[91,55897,1344],{"class":1343},[91,55899,55900,55902,55904,55906,55908,55910,55912,55914,55916],{"class":93,"line":105},[91,55901,1349],{"class":566},[91,55903,1352],{"class":101},[91,55905,1208],{"class":566},[91,55907,1357],{"class":108},[91,55909,1360],{"class":566},[91,55911,1363],{"class":108},[91,55913,1366],{"class":566},[91,55915,1363],{"class":108},[91,55917,118],{"class":101},[91,55919,55920,55922],{"class":93,"line":121},[91,55921,1375],{"class":566},[91,55923,102],{"class":101},[91,55925,55926,55928,55930,55932,55934,55936],{"class":93,"line":134},[91,55927,1382],{"class":566},[91,55929,1385],{"class":108},[91,55931,1366],{"class":566},[91,55933,1390],{"class":566},[91,55935,1393],{"class":97},[91,55937,1396],{"class":101},[91,55939,55940,55942,55944,55946,55948,55950],{"class":93,"line":228},[91,55941,1382],{"class":566},[91,55943,1403],{"class":108},[91,55945,1366],{"class":566},[91,55947,1408],{"class":101},[91,55949,1411],{"class":97},[91,55951,1414],{"class":101},[91,55953,55954,55956,55958,55960,55962],{"class":93,"line":250},[91,55955,1419],{"class":101},[91,55957,166],{"class":566},[91,55959,1408],{"class":101},[91,55961,1426],{"class":97},[91,55963,1429],{"class":101},[91,55965,55966,55968,55970,55972,55974],{"class":93,"line":260},[91,55967,1434],{"class":101},[91,55969,1256],{"class":566},[91,55971,1439],{"class":101},[91,55973,1442],{"class":566},[91,55975,1445],{"class":101},[91,55977,55978],{"class":93,"line":274},[91,55979,1450],{"emptyLinePlaceholder":846},[91,55981,55982],{"class":93,"line":284},[91,55983,1455],{"class":1343},[91,55985,55986,55988],{"class":93,"line":299},[91,55987,1375],{"class":566},[91,55989,102],{"class":101},[91,55991,55992,55994,55996,55998,56000],{"class":93,"line":319},[91,55993,1466],{"class":101},[91,55995,166],{"class":566},[91,55997,1408],{"class":101},[91,55999,1473],{"class":97},[91,56001,1476],{"class":101},[91,56003,56004,56006,56008,56010,56012],{"class":93,"line":334},[91,56005,1434],{"class":101},[91,56007,1256],{"class":566},[91,56009,1439],{"class":101},[91,56011,1442],{"class":566},[91,56013,1445],{"class":101},[16,56015,1491],{},[829,56017,1494],{},{"title":87,"searchDepth":105,"depth":105,"links":56019},[56020,56023],{"id":1131,"depth":105,"text":1132,"children":56021},[56022],{"id":1150,"depth":121,"text":1151},{"id":1312,"depth":105,"text":1313},{},{"title":857,"description":1502},{"loc":1505},[1511,1512],{"id":1515,"title":1516,"body":56029,"created":1854,"description":1855,"extension":843,"filename":1856,"meta":56313,"navigation":846,"path":1858,"seo":56314,"sitemap":56315,"stem":1861,"subject":851,"tags":56316,"updated":1854,"volume":1863,"__hash__":1864},{"type":8,"value":56030,"toc":56311},[56031,56185,56189,56191,56193,56195,56209,56307,56309],[82,56032,56033],{"className":84,"code":1521,"language":86,"meta":87,"style":87},[31,56034,56035,56041,56051,56063,56093,56103,56113,56119,56123,56131,56143,56157,56161,56165,56173,56177,56181],{"__ignoreMap":87},[91,56036,56037,56039],{"class":93,"line":94},[91,56038,1528],{"class":97},[91,56040,102],{"class":101},[91,56042,56043,56045,56047,56049],{"class":93,"line":105},[91,56044,1535],{"class":108},[91,56046,112],{"class":101},[91,56048,1540],{"class":108},[91,56050,118],{"class":101},[91,56052,56053,56055,56057,56059,56061],{"class":93,"line":121},[91,56054,1547],{"class":108},[91,56056,112],{"class":101},[91,56058,1552],{"class":108},[91,56060,567],{"class":566},[91,56062,118],{"class":101},[91,56064,56065,56067,56069,56071,56073,56075,56077,56079,56081,56083,56085,56087,56089,56091],{"class":93,"line":134},[91,56066,1561],{"class":108},[91,56068,1564],{"class":101},[91,56070,1567],{"class":108},[91,56072,1570],{"class":566},[91,56074,1573],{"class":108},[91,56076,795],{"class":101},[91,56078,1578],{"class":108},[91,56080,64],{"class":101},[91,56082,1583],{"class":108},[91,56084,64],{"class":101},[91,56086,1578],{"class":108},[91,56088,64],{"class":101},[91,56090,1583],{"class":108},[91,56092,1594],{"class":101},[91,56094,56095,56097,56099,56101],{"class":93,"line":228},[91,56096,109],{"class":108},[91,56098,112],{"class":101},[91,56100,115],{"class":108},[91,56102,118],{"class":101},[91,56104,56105,56107,56109,56111],{"class":93,"line":250},[91,56106,1609],{"class":108},[91,56108,112],{"class":101},[91,56110,1614],{"class":108},[91,56112,118],{"class":101},[91,56114,56115,56117],{"class":93,"line":260},[91,56116,1621],{"class":108},[91,56118,1624],{"class":101},[91,56120,56121],{"class":93,"line":274},[91,56122,1629],{"class":101},[91,56124,56125,56127,56129],{"class":93,"line":284},[91,56126,1634],{"class":101},[91,56128,1637],{"class":108},[91,56130,102],{"class":101},[91,56132,56133,56135,56137,56139,56141],{"class":93,"line":299},[91,56134,1644],{"class":108},[91,56136,112],{"class":101},[91,56138,1649],{"class":108},[91,56140,567],{"class":566},[91,56142,118],{"class":101},[91,56144,56145,56147,56149,56151,56153,56155],{"class":93,"line":319},[91,56146,1658],{"class":108},[91,56148,1564],{"class":101},[91,56150,1583],{"class":108},[91,56152,1570],{"class":566},[91,56154,1667],{"class":108},[91,56156,118],{"class":101},[91,56158,56159],{"class":93,"line":334},[91,56160,1674],{"class":101},[91,56162,56163],{"class":93,"line":355},[91,56164,1679],{"class":101},[91,56166,56167,56169,56171],{"class":93,"line":364},[91,56168,1684],{"class":101},[91,56170,1578],{"class":108},[91,56172,118],{"class":101},[91,56174,56175],{"class":93,"line":378},[91,56176,1693],{"class":101},[91,56178,56179],{"class":93,"line":387},[91,56180,1698],{"class":101},[91,56182,56183],{"class":93,"line":402},[91,56184,137],{"class":101},[16,56186,56187],{},[19,56188],{"alt":1516,"src":1707},[16,56190,1710],{},[1112,56192],{"description":1713,"host":1714,"image":1715,"title":1716,"url":1717},[16,56194,1720],{},[1722,56196,56197],{},[16,56198,56199,1729,56201,1732,56203,1736,56205,1740,56207,1744],{},[91,56200,1728],{},[31,56202,1578],{},[31,56204,1735],{},[31,56206,1739],{},[31,56208,1743],{},[82,56210,56211],{"className":84,"code":1747,"language":86,"meta":87,"style":87},[31,56212,56213,56219,56229,56239,56269,56277,56289,56303],{"__ignoreMap":87},[91,56214,56215,56217],{"class":93,"line":94},[91,56216,1754],{"class":97},[91,56218,102],{"class":101},[91,56220,56221,56223,56225,56227],{"class":93,"line":105},[91,56222,109],{"class":108},[91,56224,112],{"class":101},[91,56226,115],{"class":108},[91,56228,118],{"class":101},[91,56230,56231,56233,56235,56237],{"class":93,"line":121},[91,56232,1547],{"class":108},[91,56234,112],{"class":101},[91,56236,1578],{"class":108},[91,56238,118],{"class":101},[91,56240,56241,56243,56245,56247,56249,56251,56253,56255,56257,56259,56261,56263,56265,56267],{"class":93,"line":134},[91,56242,1561],{"class":108},[91,56244,1564],{"class":101},[91,56246,1567],{"class":108},[91,56248,1570],{"class":566},[91,56250,1573],{"class":108},[91,56252,795],{"class":101},[91,56254,1578],{"class":108},[91,56256,64],{"class":101},[91,56258,1583],{"class":108},[91,56260,64],{"class":101},[91,56262,1578],{"class":108},[91,56264,64],{"class":101},[91,56266,1583],{"class":108},[91,56268,1594],{"class":101},[91,56270,56271,56273,56275],{"class":93,"line":228},[91,56272,1634],{"class":101},[91,56274,1813],{"class":108},[91,56276,102],{"class":101},[91,56278,56279,56281,56283,56285,56287],{"class":93,"line":250},[91,56280,1644],{"class":108},[91,56282,112],{"class":101},[91,56284,1649],{"class":108},[91,56286,567],{"class":566},[91,56288,118],{"class":101},[91,56290,56291,56293,56295,56297,56299,56301],{"class":93,"line":260},[91,56292,1658],{"class":108},[91,56294,1564],{"class":101},[91,56296,1583],{"class":108},[91,56298,1570],{"class":566},[91,56300,1667],{"class":108},[91,56302,118],{"class":101},[91,56304,56305],{"class":93,"line":274},[91,56306,137],{"class":101},[16,56308,1848],{},[829,56310,1851],{},{"title":87,"searchDepth":105,"depth":105,"links":56312},[],{},{"title":1516,"description":1855},{"loc":1858},[86],{"id":1866,"title":1867,"body":56318,"created":2854,"description":2855,"extension":843,"filename":2856,"meta":57135,"navigation":846,"path":2858,"seo":57136,"sitemap":57137,"stem":2861,"subject":2862,"tags":57138,"updated":2854,"volume":1863,"__hash__":2866},{"type":8,"value":56319,"toc":57132},[56320,56324,56338,56340,56344,56348,56350,56358,56542,56550,56660,56664,56666,56676,56678,56684,56722,56726,56808,56814,56816,56820,56998,57006,57128,57130],[16,56321,1872,56322,1876],{},[792,56323,1875],{},[24,56325,56326,56330,56334],{},[27,56327,1881,56328,1885],{},[31,56329,1884],{},[27,56331,1888,56332,1892],{},[31,56333,1891],{},[27,56335,1895,56336,1898],{},[31,56337,1200],{},[16,56339,1901],{},[16,56341,1904,56342,1907],{},[31,56343,1884],{},[16,56345,1910,56346,1913],{},[31,56347,1891],{},[11,56349,1917],{"id":1916},[16,56351,1920,56352,1924,56354,1927,56356,1931],{},[31,56353,1923],{},[31,56355,1923],{},[31,56357,1930],{},[82,56359,56360],{"className":1934,"code":1935,"language":1936,"meta":87,"style":87},[31,56361,56362,56378,56382,56402,56406,56416,56422,56426,56434,56438,56442,56450,56458,56466,56470,56474,56478,56488,56494,56498,56506,56514,56534],{"__ignoreMap":87},[91,56363,56364,56366,56368,56370,56372,56374,56376],{"class":93,"line":94},[91,56365,156],{"class":101},[91,56367,1945],{"class":159},[91,56369,1948],{"class":97},[91,56371,1951],{"class":97},[91,56373,166],{"class":101},[91,56375,1956],{"class":169},[91,56377,173],{"class":101},[91,56379,56380],{"class":93,"line":105},[91,56381,1963],{"class":1343},[91,56383,56384,56386,56388,56390,56392,56394,56396,56398,56400],{"class":93,"line":121},[91,56385,1968],{"class":566},[91,56387,1971],{"class":108},[91,56389,1366],{"class":566},[91,56391,1976],{"class":108},[91,56393,1235],{"class":101},[91,56395,1981],{"class":97},[91,56397,156],{"class":101},[91,56399,1986],{"class":108},[91,56401,1989],{"class":101},[91,56403,56404],{"class":93,"line":134},[91,56405,1450],{"emptyLinePlaceholder":846},[91,56407,56408,56410,56412,56414],{"class":93,"line":228},[91,56409,1998],{"class":566},[91,56411,2001],{"class":566},[91,56413,2004],{"class":97},[91,56415,2007],{"class":101},[91,56417,56418,56420],{"class":93,"line":250},[91,56419,2012],{"class":566},[91,56421,102],{"class":101},[91,56423,56424],{"class":93,"line":260},[91,56425,2019],{"class":1343},[91,56427,56428,56430,56432],{"class":93,"line":274},[91,56429,2024],{"class":566},[91,56431,2027],{"class":97},[91,56433,2030],{"class":101},[91,56435,56436],{"class":93,"line":284},[91,56437,1674],{"class":101},[91,56439,56440],{"class":93,"line":299},[91,56441,2039],{"class":1343},[91,56443,56444,56446,56448],{"class":93,"line":319},[91,56445,2044],{"class":101},[91,56447,1930],{"class":97},[91,56449,2030],{"class":101},[91,56451,56452,56454,56456],{"class":93,"line":334},[91,56453,2053],{"class":101},[91,56455,1256],{"class":566},[91,56457,2058],{"class":101},[91,56459,56460,56462,56464],{"class":93,"line":355},[91,56461,2044],{"class":101},[91,56463,2065],{"class":97},[91,56465,2068],{"class":101},[91,56467,56468],{"class":93,"line":364},[91,56469,1698],{"class":101},[91,56471,56472],{"class":93,"line":378},[91,56473,137],{"class":101},[91,56475,56476],{"class":93,"line":387},[91,56477,1450],{"emptyLinePlaceholder":846},[91,56479,56480,56482,56484,56486],{"class":93,"line":402},[91,56481,2085],{"class":97},[91,56483,2088],{"class":101},[91,56485,1179],{"class":566},[91,56487,102],{"class":101},[91,56489,56490,56492],{"class":93,"line":422},[91,56491,2097],{"class":97},[91,56493,2030],{"class":101},[91,56495,56496],{"class":93,"line":438},[91,56497,1303],{"class":101},[91,56499,56500,56502,56504],{"class":93,"line":458},[91,56501,493],{"class":101},[91,56503,1945],{"class":159},[91,56505,173],{"class":101},[91,56507,56508,56510,56512],{"class":93,"line":467},[91,56509,156],{"class":101},[91,56511,2118],{"class":159},[91,56513,173],{"class":101},[91,56515,56516,56518,56520,56522,56524,56526,56528,56530,56532],{"class":93,"line":481},[91,56517,2125],{"class":101},[91,56519,2128],{"class":159},[91,56521,2131],{"class":101},[91,56523,2134],{"class":97},[91,56525,166],{"class":101},[91,56527,2139],{"class":169},[91,56529,2142],{"class":101},[91,56531,2139],{"class":169},[91,56533,2147],{"class":101},[91,56535,56536,56538,56540],{"class":93,"line":490},[91,56537,493],{"class":101},[91,56539,2118],{"class":159},[91,56541,173],{"class":101},[16,56543,2158,56544,2162,56546,2166,56548,2169],{},[31,56545,2161],{},[31,56547,2165],{},[31,56549,2142],{},[82,56551,56552],{"className":1934,"code":2172,"language":1936,"meta":87,"style":87},[31,56553,56554,56570,56582,56596,56600,56604,56618,56622,56628,56632,56636,56648,56652],{"__ignoreMap":87},[91,56555,56556,56558,56560,56562,56564,56566,56568],{"class":93,"line":94},[91,56557,156],{"class":101},[91,56559,1945],{"class":159},[91,56561,1948],{"class":97},[91,56563,1951],{"class":97},[91,56565,166],{"class":101},[91,56567,1956],{"class":169},[91,56569,173],{"class":101},[91,56571,56572,56574,56576,56578,56580],{"class":93,"line":105},[91,56573,1968],{"class":566},[91,56575,2197],{"class":108},[91,56577,1366],{"class":566},[91,56579,2202],{"class":97},[91,56581,2205],{"class":101},[91,56583,56584,56586,56588,56590,56592,56594],{"class":93,"line":121},[91,56585,2210],{"class":1172},[91,56587,1208],{"class":566},[91,56589,1976],{"class":97},[91,56591,156],{"class":101},[91,56593,1986],{"class":108},[91,56595,173],{"class":101},[91,56597,56598],{"class":93,"line":134},[91,56599,2225],{"class":101},[91,56601,56602],{"class":93,"line":228},[91,56603,1450],{"emptyLinePlaceholder":846},[91,56605,56606,56608,56610,56612,56614,56616],{"class":93,"line":250},[91,56607,2085],{"class":97},[91,56609,795],{"class":101},[91,56611,1998],{"class":566},[91,56613,2240],{"class":101},[91,56615,1179],{"class":566},[91,56617,102],{"class":101},[91,56619,56620],{"class":93,"line":260},[91,56621,2249],{"class":1343},[91,56623,56624,56626],{"class":93,"line":274},[91,56625,2254],{"class":566},[91,56627,2257],{"class":101},[91,56629,56630],{"class":93,"line":284},[91,56631,1629],{"class":101},[91,56633,56634],{"class":93,"line":299},[91,56635,2266],{"class":1343},[91,56637,56638,56640,56642,56644,56646],{"class":93,"line":319},[91,56639,2271],{"class":101},[91,56641,1225],{"class":97},[91,56643,795],{"class":101},[91,56645,2278],{"class":169},[91,56647,1594],{"class":101},[91,56649,56650],{"class":93,"line":334},[91,56651,1303],{"class":101},[91,56653,56654,56656,56658],{"class":93,"line":355},[91,56655,493],{"class":101},[91,56657,1945],{"class":159},[91,56659,173],{"class":101},[16,56661,56662,2298],{},[31,56663,2297],{},[11,56665,2302],{"id":2301},[16,56667,2305,56668,2309,56670,2312,56672,2315,56674,2318],{},[31,56669,2308],{},[31,56671,2161],{},[31,56673,1930],{},[31,56675,2297],{},[11,56677,2322],{"id":2321},[16,56679,2325,56680,34,56682,2332],{},[31,56681,2328],{},[31,56683,2331],{},[82,56685,56686],{"className":1154,"code":2335,"language":1156,"meta":87,"style":87},[31,56687,56688,56708,56712],{"__ignoreMap":87},[91,56689,56690,56692,56694,56696,56698,56700,56702,56704,56706],{"class":93,"line":94},[91,56691,1968],{"class":566},[91,56693,1971],{"class":108},[91,56695,1366],{"class":566},[91,56697,1976],{"class":108},[91,56699,1235],{"class":101},[91,56701,1981],{"class":97},[91,56703,156],{"class":101},[91,56705,1986],{"class":108},[91,56707,1989],{"class":101},[91,56709,56710],{"class":93,"line":105},[91,56711,2362],{"class":1343},[91,56713,56714,56716,56718,56720],{"class":93,"line":121},[91,56715,2328],{"class":97},[91,56717,795],{"class":101},[91,56719,2371],{"class":169},[91,56721,2374],{"class":101},[16,56723,2158,56724,2379],{},[31,56725,2328],{},[82,56727,56728],{"className":1154,"code":2382,"language":1156,"meta":87,"style":87},[31,56729,56730,56734,56758,56762,56776,56782,56788,56800,56804],{"__ignoreMap":87},[91,56731,56732],{"class":93,"line":94},[91,56733,2389],{"class":1343},[91,56735,56736,56738,56740,56742,56744,56746,56748,56750,56752,56754,56756],{"class":93,"line":105},[91,56737,1968],{"class":566},[91,56739,1971],{"class":108},[91,56741,1366],{"class":566},[91,56743,2400],{"class":97},[91,56745,156],{"class":101},[91,56747,2405],{"class":97},[91,56749,156],{"class":101},[91,56751,1986],{"class":108},[91,56753,2412],{"class":101},[91,56755,2371],{"class":169},[91,56757,1594],{"class":101},[91,56759,56760],{"class":93,"line":121},[91,56761,1450],{"emptyLinePlaceholder":846},[91,56763,56764,56766,56768,56770,56772,56774],{"class":93,"line":134},[91,56765,2085],{"class":97},[91,56767,795],{"class":101},[91,56769,1998],{"class":566},[91,56771,2240],{"class":101},[91,56773,1179],{"class":566},[91,56775,102],{"class":101},[91,56777,56778,56780],{"class":93,"line":228},[91,56779,2439],{"class":566},[91,56781,2442],{"class":101},[91,56783,56784,56786],{"class":93,"line":250},[91,56785,2024],{"class":566},[91,56787,2449],{"class":101},[91,56789,56790,56792,56794,56796,56798],{"class":93,"line":260},[91,56791,2454],{"class":101},[91,56793,1225],{"class":97},[91,56795,795],{"class":101},[91,56797,2461],{"class":169},[91,56799,1594],{"class":101},[91,56801,56802],{"class":93,"line":274},[91,56803,1698],{"class":101},[91,56805,56806],{"class":93,"line":284},[91,56807,1303],{"class":101},[16,56809,56810,2476,56812,2479],{},[31,56811,2331],{},[31,56813,2371],{},[49,56815,2483],{"id":2482},[16,56817,56818,2489],{},[31,56819,2488],{},[82,56821,56822],{"className":1154,"code":2492,"language":1156,"meta":87,"style":87},[31,56823,56824,56836,56840,56870,56874,56878,56882,56886,56908,56914,56918,56922,56926,56930,56934,56944,56956,56960,56970,56984,56988,56994],{"__ignoreMap":87},[91,56825,56826,56828,56830,56832,56834],{"class":93,"line":94},[91,56827,2499],{"class":566},[91,56829,2502],{"class":101},[91,56831,2505],{"class":566},[91,56833,2508],{"class":169},[91,56835,118],{"class":101},[91,56837,56838],{"class":93,"line":105},[91,56839,2515],{"class":1343},[91,56841,56842,56844,56846,56848,56850,56852,56854,56856,56858,56860,56862,56864,56866,56868],{"class":93,"line":121},[91,56843,1968],{"class":566},[91,56845,2522],{"class":108},[91,56847,1208],{"class":566},[91,56849,2527],{"class":97},[91,56851,156],{"class":101},[91,56853,2405],{"class":97},[91,56855,156],{"class":101},[91,56857,1986],{"class":108},[91,56859,2538],{"class":101},[91,56861,166],{"class":566},[91,56863,2543],{"class":97},[91,56865,795],{"class":101},[91,56867,2548],{"class":169},[91,56869,1594],{"class":101},[91,56871,56872],{"class":93,"line":134},[91,56873,1450],{"emptyLinePlaceholder":846},[91,56875,56876],{"class":93,"line":228},[91,56877,2559],{"class":1343},[91,56879,56880],{"class":93,"line":250},[91,56881,2564],{"class":1343},[91,56883,56884],{"class":93,"line":260},[91,56885,2569],{"class":1343},[91,56887,56888,56890,56892,56894,56896,56898,56900,56902,56904,56906],{"class":93,"line":274},[91,56889,2574],{"class":566},[91,56891,2001],{"class":566},[91,56893,2579],{"class":97},[91,56895,795],{"class":101},[91,56897,2584],{"class":1172},[91,56899,1208],{"class":566},[91,56901,1976],{"class":97},[91,56903,156],{"class":101},[91,56905,1986],{"class":108},[91,56907,2595],{"class":101},[91,56909,56910,56912],{"class":93,"line":284},[91,56911,2600],{"class":97},[91,56913,2603],{"class":101},[91,56915,56916],{"class":93,"line":299},[91,56917,137],{"class":101},[91,56919,56920],{"class":93,"line":319},[91,56921,1450],{"emptyLinePlaceholder":846},[91,56923,56924],{"class":93,"line":334},[91,56925,2616],{"class":1343},[91,56927,56928],{"class":93,"line":355},[91,56929,2621],{"class":1343},[91,56931,56932],{"class":93,"line":364},[91,56933,2569],{"class":1343},[91,56935,56936,56938,56940,56942],{"class":93,"line":378},[91,56937,2574],{"class":566},[91,56939,2001],{"class":566},[91,56941,2634],{"class":97},[91,56943,2007],{"class":101},[91,56945,56946,56948,56950,56952,56954],{"class":93,"line":387},[91,56947,2641],{"class":566},[91,56949,1971],{"class":108},[91,56951,1366],{"class":566},[91,56953,2400],{"class":97},[91,56955,2650],{"class":101},[91,56957,56958],{"class":93,"line":402},[91,56959,2655],{"class":1343},[91,56961,56962,56964,56966,56968],{"class":93,"line":422},[91,56963,2439],{"class":566},[91,56965,2662],{"class":101},[91,56967,2665],{"class":566},[91,56969,2668],{"class":101},[91,56971,56972,56974,56976,56978,56980,56982],{"class":93,"line":438},[91,56973,2673],{"class":566},[91,56975,2676],{"class":566},[91,56977,2679],{"class":97},[91,56979,795],{"class":101},[91,56981,2684],{"class":169},[91,56983,1594],{"class":101},[91,56985,56986],{"class":93,"line":458},[91,56987,1698],{"class":101},[91,56989,56990,56992],{"class":93,"line":467},[91,56991,2695],{"class":566},[91,56993,2449],{"class":101},[91,56995,56996],{"class":93,"line":481},[91,56997,137],{"class":101},[16,56999,2704,57000,34,57002,2709,57004,2713],{},[31,57001,2328],{},[31,57003,2331],{},[31,57005,2712],{},[82,57007,57008],{"className":1934,"code":2716,"language":1936,"meta":87,"style":87},[31,57009,57010,57026,57038,57058,57066,57074,57078,57094,57106,57120],{"__ignoreMap":87},[91,57011,57012,57014,57016,57018,57020,57022,57024],{"class":93,"line":94},[91,57013,156],{"class":101},[91,57015,1945],{"class":159},[91,57017,1948],{"class":97},[91,57019,1951],{"class":97},[91,57021,166],{"class":101},[91,57023,1956],{"class":169},[91,57025,173],{"class":101},[91,57027,57028,57030,57032,57034,57036],{"class":93,"line":105},[91,57029,2499],{"class":566},[91,57031,2741],{"class":101},[91,57033,2505],{"class":566},[91,57035,2746],{"class":169},[91,57037,118],{"class":101},[91,57039,57040,57042,57044,57046,57048,57050,57052,57054,57056],{"class":93,"line":121},[91,57041,1968],{"class":566},[91,57043,1971],{"class":108},[91,57045,1366],{"class":566},[91,57047,1976],{"class":108},[91,57049,1235],{"class":101},[91,57051,1981],{"class":97},[91,57053,156],{"class":101},[91,57055,1986],{"class":108},[91,57057,1989],{"class":101},[91,57059,57060,57062,57064],{"class":93,"line":134},[91,57061,2773],{"class":97},[91,57063,2776],{"class":101},[91,57065,2779],{"class":1343},[91,57067,57068,57070,57072],{"class":93,"line":228},[91,57069,493],{"class":101},[91,57071,1945],{"class":159},[91,57073,173],{"class":101},[91,57075,57076],{"class":93,"line":250},[91,57077,1450],{"emptyLinePlaceholder":846},[91,57079,57080,57082,57084,57086,57088,57090,57092],{"class":93,"line":260},[91,57081,156],{"class":101},[91,57083,1945],{"class":159},[91,57085,1948],{"class":97},[91,57087,1951],{"class":97},[91,57089,166],{"class":101},[91,57091,1956],{"class":169},[91,57093,173],{"class":101},[91,57095,57096,57098,57100,57102,57104],{"class":93,"line":274},[91,57097,2499],{"class":566},[91,57099,2814],{"class":101},[91,57101,2505],{"class":566},[91,57103,2746],{"class":169},[91,57105,118],{"class":101},[91,57107,57108,57110,57112,57114,57116,57118],{"class":93,"line":284},[91,57109,1968],{"class":566},[91,57111,1971],{"class":108},[91,57113,1366],{"class":566},[91,57115,2634],{"class":97},[91,57117,2833],{"class":101},[91,57119,2836],{"class":1343},[91,57121,57122,57124,57126],{"class":93,"line":299},[91,57123,493],{"class":101},[91,57125,1945],{"class":159},[91,57127,173],{"class":101},[16,57129,2847],{},[829,57131,2850],{},{"title":87,"searchDepth":105,"depth":105,"links":57133},[57134],{"id":2482,"depth":105,"text":2483},{},{"title":1867,"description":2855},{"loc":2858},[1936,2864,2865],{"id":2868,"title":2869,"body":57140,"created":4430,"description":4431,"extension":843,"filename":4432,"meta":58353,"navigation":846,"path":4434,"seo":58354,"sitemap":58355,"stem":4437,"subject":4438,"tags":58356,"updated":4430,"volume":4441,"__hash__":4442},{"type":8,"value":57141,"toc":58340},[57142,57144,57152,57154,57156,57158,57172,57176,57178,57180,57182,57187,57199,57203,57213,57215,57221,57257,57263,57271,57276,57286,57314,57316,57318,57322,57366,57372,57496,57498,57500,57506,57538,57542,57610,57616,57618,57624,57700,57704,57736,57740,57768,57770,57772,57774,57814,57822,57824,57884,57886,57954,57956,57958,57960,57988,57990,57992,57994,58036,58040,58104,58110,58130,58132,58134,58136,58141,58143,58148,58150,58242,58246,58251,58255,58268,58272,58278,58280,58282,58284,58316,58320,58336,58338],[16,57143,2874],{},[16,57145,2877,57146,34,57148,2884,57150,2888],{},[31,57147,2880],{},[31,57149,2883],{},[31,57151,2887],{},[49,57153,2892],{"id":2891},[16,57155,2895],{},[16,57157,2898],{},[24,57159,57160,57162,57164,57166,57168,57170],{},[27,57161,2903],{},[27,57163,2906],{},[27,57165,2909],{},[27,57167,2912],{},[27,57169,2915],{},[27,57171,2918],{},[16,57173,2921,57174,2925],{},[31,57175,2924],{},[49,57177,2929],{"id":2928},[16,57179,2932],{},[16,57181,2935],{},[82,57183,57185],{"className":57184,"code":2939,"language":1099,"meta":87},[1097],[31,57186,2939],{"__ignoreMap":87},[16,57188,57189,2947,57191,2951,57193,2955,57195,2959,57197,2963],{},[31,57190,2946],{},[31,57192,2950],{},[31,57194,2954],{},[31,57196,2958],{},[31,57198,2962],{},[16,57200,57201],{},[19,57202],{"alt":2968,"src":2969},[16,57204,2972,57205,2975,57207,2978,57209,2982,57211,2985],{},[31,57206,2883],{},[31,57208,2880],{},[31,57210,2981],{},[31,57212,2887],{},[49,57214,2989],{"id":2988},[16,57216,2992,57217,2978,57219,2997],{},[31,57218,2981],{},[31,57220,2880],{},[812,57222,57223,57233],{},[3001,57224,57225],{},[3004,57226,57227,57229,57231],{},[3007,57228,3009],{},[3007,57230,3012],{},[3007,57232,3015],{},[3017,57234,57235,57245],{},[3004,57236,57237,57241,57243],{},[3022,57238,57239],{},[31,57240,2981],{},[3022,57242,3028],{},[3022,57244,3031],{},[3004,57246,57247,57251,57253],{},[3022,57248,57249],{},[31,57250,2880],{},[3022,57252,3040],{},[3022,57254,57255,3045],{},[31,57256,2981],{},[16,57258,3048,57259,3051,57261,3054],{},[31,57260,2981],{},[31,57262,2880],{},[16,57264,57265,3059,57267,3063,57269,3066],{},[31,57266,2880],{},[31,57268,3062],{},[31,57270,2883],{},[82,57272,57274],{"className":57273,"code":3070,"language":1099,"meta":87},[1097],[31,57275,3070],{"__ignoreMap":87},[16,57277,3075,57278,3078,57280,3081,57282,3084,57284,3088],{},[31,57279,2880],{},[31,57281,2883],{},[31,57283,3062],{},[31,57285,3087],{},[82,57287,57288],{"className":1000,"code":3091,"language":1002,"meta":87,"style":87},[31,57289,57290,57294,57298,57302,57306,57310],{"__ignoreMap":87},[91,57291,57292],{"class":93,"line":94},[91,57293,3098],{},[91,57295,57296],{"class":93,"line":105},[91,57297,3103],{},[91,57299,57300],{"class":93,"line":121},[91,57301,3108],{},[91,57303,57304],{"class":93,"line":134},[91,57305,137],{},[91,57307,57308],{"class":93,"line":228},[91,57309,1450],{"emptyLinePlaceholder":846},[91,57311,57312],{"class":93,"line":250},[91,57313,3121],{},[16,57315,3124],{},[49,57317,3128],{"id":3127},[16,57319,3131,57320,3135],{},[31,57321,3134],{},[82,57323,57324],{"className":1000,"code":3138,"language":1002,"meta":87,"style":87},[31,57325,57326,57330,57334,57338,57342,57346,57350,57354,57358,57362],{"__ignoreMap":87},[91,57327,57328],{"class":93,"line":94},[91,57329,3145],{},[91,57331,57332],{"class":93,"line":105},[91,57333,3150],{},[91,57335,57336],{"class":93,"line":121},[91,57337,1450],{"emptyLinePlaceholder":846},[91,57339,57340],{"class":93,"line":134},[91,57341,3159],{},[91,57343,57344],{"class":93,"line":228},[91,57345,1450],{"emptyLinePlaceholder":846},[91,57347,57348],{"class":93,"line":250},[91,57349,3168],{},[91,57351,57352],{"class":93,"line":260},[91,57353,3173],{},[91,57355,57356],{"class":93,"line":274},[91,57357,137],{},[91,57359,57360],{"class":93,"line":284},[91,57361,1450],{"emptyLinePlaceholder":846},[91,57363,57364],{"class":93,"line":299},[91,57365,3186],{},[16,57367,57368,3191,57370,3194],{},[31,57369,2950],{},[31,57371,2954],{},[82,57373,57374],{"className":1000,"code":3197,"language":1002,"meta":87,"style":87},[31,57375,57376,57380,57384,57388,57392,57396,57400,57404,57408,57412,57416,57420,57424,57428,57432,57436,57440,57444,57448,57452,57456,57460,57464,57468,57472,57476,57480,57484,57488,57492],{"__ignoreMap":87},[91,57377,57378],{"class":93,"line":94},[91,57379,3204],{},[91,57381,57382],{"class":93,"line":105},[91,57383,3209],{},[91,57385,57386],{"class":93,"line":121},[91,57387,3214],{},[91,57389,57390],{"class":93,"line":134},[91,57391,3219],{},[91,57393,57394],{"class":93,"line":228},[91,57395,1693],{},[91,57397,57398],{"class":93,"line":250},[91,57399,1450],{"emptyLinePlaceholder":846},[91,57401,57402],{"class":93,"line":260},[91,57403,3232],{},[91,57405,57406],{"class":93,"line":274},[91,57407,3237],{},[91,57409,57410],{"class":93,"line":284},[91,57411,3242],{},[91,57413,57414],{"class":93,"line":299},[91,57415,1693],{},[91,57417,57418],{"class":93,"line":319},[91,57419,1450],{"emptyLinePlaceholder":846},[91,57421,57422],{"class":93,"line":334},[91,57423,3255],{},[91,57425,57426],{"class":93,"line":355},[91,57427,3237],{},[91,57429,57430],{"class":93,"line":364},[91,57431,3242],{},[91,57433,57434],{"class":93,"line":378},[91,57435,1450],{"emptyLinePlaceholder":846},[91,57437,57438],{"class":93,"line":387},[91,57439,3272],{},[91,57441,57442],{"class":93,"line":402},[91,57443,3277],{},[91,57445,57446],{"class":93,"line":422},[91,57447,3282],{},[91,57449,57450],{"class":93,"line":438},[91,57451,3287],{},[91,57453,57454],{"class":93,"line":458},[91,57455,3292],{},[91,57457,57458],{"class":93,"line":467},[91,57459,3297],{},[91,57461,57462],{"class":93,"line":481},[91,57463,3302],{},[91,57465,57466],{"class":93,"line":490},[91,57467,3307],{},[91,57469,57470],{"class":93,"line":3310},[91,57471,1450],{"emptyLinePlaceholder":846},[91,57473,57474],{"class":93,"line":3315},[91,57475,3318],{},[91,57477,57478],{"class":93,"line":3321},[91,57479,3324],{},[91,57481,57482],{"class":93,"line":3327},[91,57483,3330],{},[91,57485,57486],{"class":93,"line":3333},[91,57487,3307],{},[91,57489,57490],{"class":93,"line":3338},[91,57491,1693],{},[91,57493,57494],{"class":93,"line":3343},[91,57495,137],{},[16,57497,3348],{},[49,57499,3352],{"id":3351},[16,57501,3355,57502,3358,57504,3362],{},[31,57503,2880],{},[31,57505,3361],{},[82,57507,57508],{"className":1000,"code":3365,"language":1002,"meta":87,"style":87},[31,57509,57510,57514,57518,57522,57526,57530,57534],{"__ignoreMap":87},[91,57511,57512],{"class":93,"line":94},[91,57513,3372],{},[91,57515,57516],{"class":93,"line":105},[91,57517,3121],{},[91,57519,57520],{"class":93,"line":121},[91,57521,1450],{"emptyLinePlaceholder":846},[91,57523,57524],{"class":93,"line":134},[91,57525,3385],{},[91,57527,57528],{"class":93,"line":228},[91,57529,3390],{},[91,57531,57532],{"class":93,"line":250},[91,57533,1450],{"emptyLinePlaceholder":846},[91,57535,57536],{"class":93,"line":260},[91,57537,3399],{},[16,57539,3402,57540,3406],{},[31,57541,3405],{},[82,57543,57544],{"className":1000,"code":3409,"language":1002,"meta":87,"style":87},[31,57545,57546,57550,57554,57558,57562,57566,57570,57574,57578,57582,57586,57590,57594,57598,57602,57606],{"__ignoreMap":87},[91,57547,57548],{"class":93,"line":94},[91,57549,3416],{},[91,57551,57552],{"class":93,"line":105},[91,57553,3421],{},[91,57555,57556],{"class":93,"line":121},[91,57557,3426],{},[91,57559,57560],{"class":93,"line":134},[91,57561,3431],{},[91,57563,57564],{"class":93,"line":228},[91,57565,3436],{},[91,57567,57568],{"class":93,"line":250},[91,57569,1450],{"emptyLinePlaceholder":846},[91,57571,57572],{"class":93,"line":260},[91,57573,3445],{},[91,57575,57576],{"class":93,"line":274},[91,57577,3450],{},[91,57579,57580],{"class":93,"line":284},[91,57581,3307],{},[91,57583,57584],{"class":93,"line":299},[91,57585,1450],{"emptyLinePlaceholder":846},[91,57587,57588],{"class":93,"line":319},[91,57589,3463],{},[91,57591,57592],{"class":93,"line":334},[91,57593,3468],{},[91,57595,57596],{"class":93,"line":355},[91,57597,3307],{},[91,57599,57600],{"class":93,"line":364},[91,57601,3477],{},[91,57603,57604],{"class":93,"line":378},[91,57605,3482],{},[91,57607,57608],{"class":93,"line":387},[91,57609,3487],{},[16,57611,57612,3493,57614,3497],{},[31,57613,3492],{},[31,57615,3496],{},[49,57617,3501],{"id":3500},[16,57619,3504,57620,3508,57622,3512],{},[31,57621,3507],{},[31,57623,3511],{},[82,57625,57626],{"className":1000,"code":3515,"language":1002,"meta":87,"style":87},[31,57627,57628,57632,57636,57640,57644,57648,57652,57656,57660,57664,57668,57672,57676,57680,57684,57688,57692,57696],{"__ignoreMap":87},[91,57629,57630],{"class":93,"line":94},[91,57631,3522],{},[91,57633,57634],{"class":93,"line":105},[91,57635,3527],{},[91,57637,57638],{"class":93,"line":121},[91,57639,3532],{},[91,57641,57642],{"class":93,"line":134},[91,57643,1450],{"emptyLinePlaceholder":846},[91,57645,57646],{"class":93,"line":228},[91,57647,3541],{},[91,57649,57650],{"class":93,"line":250},[91,57651,3546],{},[91,57653,57654],{"class":93,"line":260},[91,57655,3551],{},[91,57657,57658],{"class":93,"line":274},[91,57659,3556],{},[91,57661,57662],{"class":93,"line":284},[91,57663,3561],{},[91,57665,57666],{"class":93,"line":299},[91,57667,3566],{},[91,57669,57670],{"class":93,"line":319},[91,57671,3571],{},[91,57673,57674],{"class":93,"line":334},[91,57675,1450],{"emptyLinePlaceholder":846},[91,57677,57678],{"class":93,"line":355},[91,57679,3580],{},[91,57681,57682],{"class":93,"line":364},[91,57683,3585],{},[91,57685,57686],{"class":93,"line":378},[91,57687,3590],{},[91,57689,57690],{"class":93,"line":387},[91,57691,3595],{},[91,57693,57694],{"class":93,"line":402},[91,57695,3561],{},[91,57697,57698],{"class":93,"line":422},[91,57699,137],{},[16,57701,3606,57702,3610],{},[31,57703,3609],{},[82,57705,57706],{"className":1000,"code":3613,"language":1002,"meta":87,"style":87},[31,57707,57708,57712,57716,57720,57724,57728,57732],{"__ignoreMap":87},[91,57709,57710],{"class":93,"line":94},[91,57711,3620],{},[91,57713,57714],{"class":93,"line":105},[91,57715,3625],{},[91,57717,57718],{"class":93,"line":121},[91,57719,1450],{"emptyLinePlaceholder":846},[91,57721,57722],{"class":93,"line":134},[91,57723,3634],{},[91,57725,57726],{"class":93,"line":228},[91,57727,3639],{},[91,57729,57730],{"class":93,"line":250},[91,57731,1693],{},[91,57733,57734],{"class":93,"line":260},[91,57735,137],{},[16,57737,3650,57738,3654],{},[31,57739,3653],{},[82,57741,57742],{"className":1000,"code":3657,"language":1002,"meta":87,"style":87},[31,57743,57744,57748,57752,57756,57760,57764],{"__ignoreMap":87},[91,57745,57746],{"class":93,"line":94},[91,57747,3664],{},[91,57749,57750],{"class":93,"line":105},[91,57751,3669],{},[91,57753,57754],{"class":93,"line":121},[91,57755,3674],{},[91,57757,57758],{"class":93,"line":134},[91,57759,3679],{},[91,57761,57762],{"class":93,"line":228},[91,57763,3684],{},[91,57765,57766],{"class":93,"line":250},[91,57767,137],{},[16,57769,3691],{},[49,57771,3695],{"id":3694},[16,57773,3698],{},[82,57775,57776],{"className":970,"code":3701,"language":972,"meta":87,"style":87},[31,57777,57778,57782,57786,57790,57794,57798,57802,57806,57810],{"__ignoreMap":87},[91,57779,57780],{"class":93,"line":94},[91,57781,3708],{},[91,57783,57784],{"class":93,"line":105},[91,57785,1450],{"emptyLinePlaceholder":846},[91,57787,57788],{"class":93,"line":121},[91,57789,3717],{},[91,57791,57792],{"class":93,"line":134},[91,57793,3722],{},[91,57795,57796],{"class":93,"line":228},[91,57797,3727],{},[91,57799,57800],{"class":93,"line":250},[91,57801,1450],{"emptyLinePlaceholder":846},[91,57803,57804],{"class":93,"line":260},[91,57805,3717],{},[91,57807,57808],{"class":93,"line":274},[91,57809,3740],{},[91,57811,57812],{"class":93,"line":284},[91,57813,3745],{},[16,57815,3748,57816,3752,57818,3756,57820,3760],{},[31,57817,3751],{},[31,57819,3755],{},[31,57821,3759],{},[16,57823,3763],{},[82,57825,57826],{"className":1000,"code":3766,"language":1002,"meta":87,"style":87},[31,57827,57828,57832,57836,57840,57844,57848,57852,57856,57860,57864,57868,57872,57876,57880],{"__ignoreMap":87},[91,57829,57830],{"class":93,"line":94},[91,57831,3773],{},[91,57833,57834],{"class":93,"line":105},[91,57835,3778],{},[91,57837,57838],{"class":93,"line":121},[91,57839,3783],{},[91,57841,57842],{"class":93,"line":134},[91,57843,3788],{},[91,57845,57846],{"class":93,"line":228},[91,57847,3793],{},[91,57849,57850],{"class":93,"line":250},[91,57851,137],{},[91,57853,57854],{"class":93,"line":260},[91,57855,1450],{"emptyLinePlaceholder":846},[91,57857,57858],{"class":93,"line":274},[91,57859,3806],{},[91,57861,57862],{"class":93,"line":284},[91,57863,3811],{},[91,57865,57866],{"class":93,"line":299},[91,57867,3783],{},[91,57869,57870],{"class":93,"line":319},[91,57871,3820],{},[91,57873,57874],{"class":93,"line":334},[91,57875,3825],{},[91,57877,57878],{"class":93,"line":355},[91,57879,3561],{},[91,57881,57882],{"class":93,"line":364},[91,57883,137],{},[16,57885,3836],{},[82,57887,57888],{"className":1000,"code":3839,"language":1002,"meta":87,"style":87},[31,57889,57890,57894,57898,57902,57906,57910,57914,57918,57922,57926,57930,57934,57938,57942,57946,57950],{"__ignoreMap":87},[91,57891,57892],{"class":93,"line":94},[91,57893,3846],{},[91,57895,57896],{"class":93,"line":105},[91,57897,3851],{},[91,57899,57900],{"class":93,"line":121},[91,57901,3856],{},[91,57903,57904],{"class":93,"line":134},[91,57905,3861],{},[91,57907,57908],{"class":93,"line":228},[91,57909,3866],{},[91,57911,57912],{"class":93,"line":250},[91,57913,3871],{},[91,57915,57916],{"class":93,"line":260},[91,57917,1450],{"emptyLinePlaceholder":846},[91,57919,57920],{"class":93,"line":274},[91,57921,3880],{},[91,57923,57924],{"class":93,"line":284},[91,57925,3885],{},[91,57927,57928],{"class":93,"line":299},[91,57929,3890],{},[91,57931,57932],{"class":93,"line":319},[91,57933,3895],{},[91,57935,57936],{"class":93,"line":334},[91,57937,3900],{},[91,57939,57940],{"class":93,"line":355},[91,57941,3330],{},[91,57943,57944],{"class":93,"line":364},[91,57945,3307],{},[91,57947,57948],{"class":93,"line":378},[91,57949,1693],{},[91,57951,57952],{"class":93,"line":387},[91,57953,137],{},[49,57955,3920],{"id":3919},[16,57957,3923],{},[16,57959,3926],{},[812,57961,57962,57970],{},[3001,57963,57964],{},[3004,57965,57966,57968],{},[3007,57967,3935],{},[3007,57969,3938],{},[3017,57971,57972,57982],{},[3004,57973,57974,57978],{},[3022,57975,57976],{},[19,57977],{"alt":3947,"src":3948},[3022,57979,57980],{},[19,57981],{"alt":3953,"src":3954},[3004,57983,57984,57986],{},[3022,57985,3959],{},[3022,57987,3962],{},[16,57989,3965],{},[49,57991,3969],{"id":3968},[16,57993,3972],{},[812,57995,57996,58006],{},[3001,57997,57998],{},[3004,57999,58000,58002,58004],{},[3007,58001,3009],{},[3007,58003,3983],{},[3007,58005,3986],{},[3017,58007,58008,58016,58028],{},[3004,58009,58010,58012,58014],{},[3022,58011,3993],{},[3022,58013,3996],{},[3022,58015,3999],{},[3004,58017,58018,58020,58024],{},[3022,58019,4004],{},[3022,58021,58022,4009],{},[31,58023,2880],{},[3022,58025,58026],{},[31,58027,4014],{},[3004,58029,58030,58032,58034],{},[3022,58031,4019],{},[3022,58033,4022],{},[3022,58035,4025],{},[16,58037,4028,58038,4032],{},[31,58039,4031],{},[82,58041,58042],{"className":1000,"code":4035,"language":1002,"meta":87,"style":87},[31,58043,58044,58048,58052,58056,58060,58064,58068,58072,58076,58080,58084,58088,58092,58096,58100],{"__ignoreMap":87},[91,58045,58046],{"class":93,"line":94},[91,58047,4042],{},[91,58049,58050],{"class":93,"line":105},[91,58051,4047],{},[91,58053,58054],{"class":93,"line":121},[91,58055,4052],{},[91,58057,58058],{"class":93,"line":134},[91,58059,4057],{},[91,58061,58062],{"class":93,"line":228},[91,58063,4062],{},[91,58065,58066],{"class":93,"line":250},[91,58067,4067],{},[91,58069,58070],{"class":93,"line":260},[91,58071,1450],{"emptyLinePlaceholder":846},[91,58073,58074],{"class":93,"line":274},[91,58075,4076],{},[91,58077,58078],{"class":93,"line":284},[91,58079,4081],{},[91,58081,58082],{"class":93,"line":299},[91,58083,4086],{},[91,58085,58086],{"class":93,"line":319},[91,58087,4091],{},[91,58089,58090],{"class":93,"line":334},[91,58091,1693],{},[91,58093,58094],{"class":93,"line":355},[91,58095,1450],{"emptyLinePlaceholder":846},[91,58097,58098],{"class":93,"line":364},[91,58099,4104],{},[91,58101,58102],{"class":93,"line":378},[91,58103,137],{},[16,58105,4111,58106,4115,58108,4119],{},[31,58107,4114],{},[31,58109,4118],{},[82,58111,58112],{"className":1000,"code":4122,"language":1002,"meta":87,"style":87},[31,58113,58114,58118,58122,58126],{"__ignoreMap":87},[91,58115,58116],{"class":93,"line":94},[91,58117,4129],{},[91,58119,58120],{"class":93,"line":105},[91,58121,4134],{},[91,58123,58124],{"class":93,"line":121},[91,58125,4139],{},[91,58127,58128],{"class":93,"line":134},[91,58129,3487],{},[16,58131,4146],{},[49,58133,4150],{"id":4149},[16,58135,4153],{},[82,58137,58139],{"className":58138,"code":4157,"language":1099,"meta":87},[1097],[31,58140,4157],{"__ignoreMap":87},[16,58142,4162],{},[82,58144,58146],{"className":58145,"code":4166,"language":1099,"meta":87},[1097],[31,58147,4166],{"__ignoreMap":87},[16,58149,4171],{},[82,58151,58152],{"className":1000,"code":4174,"language":1002,"meta":87,"style":87},[31,58153,58154,58158,58162,58166,58170,58174,58178,58182,58186,58190,58194,58198,58202,58206,58210,58214,58218,58222,58226,58230,58234,58238],{"__ignoreMap":87},[91,58155,58156],{"class":93,"line":94},[91,58157,4181],{},[91,58159,58160],{"class":93,"line":105},[91,58161,4186],{},[91,58163,58164],{"class":93,"line":121},[91,58165,4191],{},[91,58167,58168],{"class":93,"line":134},[91,58169,4196],{},[91,58171,58172],{"class":93,"line":228},[91,58173,4201],{},[91,58175,58176],{"class":93,"line":250},[91,58177,4206],{},[91,58179,58180],{"class":93,"line":260},[91,58181,1450],{"emptyLinePlaceholder":846},[91,58183,58184],{"class":93,"line":274},[91,58185,4215],{},[91,58187,58188],{"class":93,"line":284},[91,58189,4220],{},[91,58191,58192],{"class":93,"line":299},[91,58193,4225],{},[91,58195,58196],{"class":93,"line":319},[91,58197,4230],{},[91,58199,58200],{"class":93,"line":334},[91,58201,4235],{},[91,58203,58204],{"class":93,"line":355},[91,58205,1693],{},[91,58207,58208],{"class":93,"line":364},[91,58209,1450],{"emptyLinePlaceholder":846},[91,58211,58212],{"class":93,"line":378},[91,58213,4248],{},[91,58215,58216],{"class":93,"line":387},[91,58217,1450],{"emptyLinePlaceholder":846},[91,58219,58220],{"class":93,"line":402},[91,58221,4257],{},[91,58223,58224],{"class":93,"line":422},[91,58225,4262],{},[91,58227,58228],{"class":93,"line":438},[91,58229,4267],{},[91,58231,58232],{"class":93,"line":458},[91,58233,4272],{},[91,58235,58236],{"class":93,"line":467},[91,58237,1693],{},[91,58239,58240],{"class":93,"line":481},[91,58241,137],{},[16,58243,4283,58244,4287],{},[31,58245,4286],{},[82,58247,58249],{"className":58248,"code":4291,"language":1099,"meta":87},[1097],[31,58250,4291],{"__ignoreMap":87},[16,58252,4296,58253,4299],{},[31,58254,4118],{},[1112,58256,58257],{},[16,58258,4304,58259,4311,58262,4316,58265],{},[4306,58260,4308],{"href":4308,"rel":58261},[4310],[4306,58263,4314],{"href":4314,"rel":58264},[4310],[4306,58266,4319],{"href":4319,"rel":58267},[4310],[16,58269,58270],{},[19,58271],{"alt":4325,"src":4326},[16,58273,4329,58274,4332,58276,4336],{},[31,58275,4286],{},[31,58277,4335],{},[49,58279,4340],{"id":4339},[16,58281,4343],{},[16,58283,4346],{},[82,58285,58286],{"className":1000,"code":4349,"language":1002,"meta":87,"style":87},[31,58287,58288,58292,58296,58300,58304,58308,58312],{"__ignoreMap":87},[91,58289,58290],{"class":93,"line":94},[91,58291,4356],{},[91,58293,58294],{"class":93,"line":105},[91,58295,4361],{},[91,58297,58298],{"class":93,"line":121},[91,58299,4366],{},[91,58301,58302],{"class":93,"line":134},[91,58303,1693],{},[91,58305,58306],{"class":93,"line":228},[91,58307,4375],{},[91,58309,58310],{"class":93,"line":250},[91,58311,4380],{},[91,58313,58314],{"class":93,"line":260},[91,58315,1693],{},[16,58317,4387,58318,4391],{},[31,58319,4390],{},[82,58321,58322],{"className":1000,"code":4394,"language":1002,"meta":87,"style":87},[31,58323,58324,58328,58332],{"__ignoreMap":87},[91,58325,58326],{"class":93,"line":94},[91,58327,4401],{},[91,58329,58330],{"class":93,"line":105},[91,58331,4406],{},[91,58333,58334],{"class":93,"line":121},[91,58335,137],{},[16,58337,4413],{},[829,58339,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":58341},[58342,58343,58344,58345,58346,58347,58348,58349,58350,58351,58352],{"id":2891,"depth":105,"text":2892},{"id":2928,"depth":105,"text":2929},{"id":2988,"depth":105,"text":2989},{"id":3127,"depth":105,"text":3128},{"id":3351,"depth":105,"text":3352},{"id":3500,"depth":105,"text":3501},{"id":3694,"depth":105,"text":3695},{"id":3919,"depth":105,"text":3920},{"id":3968,"depth":105,"text":3969},{"id":4149,"depth":105,"text":4150},{"id":4339,"depth":105,"text":4340},{},{"title":2869,"description":4431},{"loc":4434},[1511,4440,1002,1503],{"id":4444,"title":4445,"body":58358,"created":4560,"description":4561,"extension":843,"filename":4562,"meta":58447,"navigation":846,"path":4564,"seo":58448,"sitemap":58449,"stem":4567,"subject":4438,"tags":58450,"updated":4560,"volume":1863,"__hash__":4570},{"type":8,"value":58359,"toc":58445},[58360,58408,58414,58416,58421,58423,58433,58441,58443],[82,58361,58362],{"className":1000,"code":4450,"language":1002,"meta":87,"style":87},[31,58363,58364,58368,58372,58376,58380,58384,58388,58392,58396,58400,58404],{"__ignoreMap":87},[91,58365,58366],{"class":93,"line":94},[91,58367,4457],{},[91,58369,58370],{"class":93,"line":105},[91,58371,4462],{},[91,58373,58374],{"class":93,"line":121},[91,58375,4467],{},[91,58377,58378],{"class":93,"line":134},[91,58379,4472],{},[91,58381,58382],{"class":93,"line":228},[91,58383,4477],{},[91,58385,58386],{"class":93,"line":250},[91,58387,3307],{},[91,58389,58390],{"class":93,"line":260},[91,58391,1693],{},[91,58393,58394],{"class":93,"line":274},[91,58395,4490],{},[91,58397,58398],{"class":93,"line":284},[91,58399,4495],{},[91,58401,58402],{"class":93,"line":299},[91,58403,4500],{},[91,58405,58406],{"class":93,"line":319},[91,58407,137],{},[16,58409,4507,58410,4511,58412,4515],{},[31,58411,4510],{},[31,58413,4514],{},[16,58415,4518],{},[16,58417,58418],{},[4306,58419,4525],{"href":4523,"rel":58420},[4310],[16,58422,4528],{},[4530,58424,58425,58429],{},[27,58426,58427,4537],{},[31,58428,4536],{},[27,58430,58431,4543],{},[31,58432,4542],{},[82,58434,58435],{"className":1000,"code":4546,"language":1002,"meta":87,"style":87},[31,58436,58437],{"__ignoreMap":87},[91,58438,58439],{"class":93,"line":94},[91,58440,4546],{},[16,58442,4555],{},[829,58444,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":58446},[],{},{"title":4445,"description":4561},{"loc":4564},[4438,4569],{"id":4572,"title":4573,"body":58452,"created":4945,"description":4946,"extension":843,"filename":4947,"meta":58720,"navigation":846,"path":4949,"seo":58721,"sitemap":58722,"stem":4952,"subject":4438,"tags":58723,"updated":4945,"volume":853,"__hash__":4955},{"type":8,"value":58453,"toc":58712},[58454,58456,58460,58464,58466,58468,58498,58502,58504,58506,58510,58514,58602,58604,58606,58608,58614,58620,58622,58626,58638,58642,58702,58710],[1112,58455],{"description":4578,"host":4579,"image":4580,"title":4581,"url":4582},[16,58457,58458],{},[19,58459],{"alt":87,"src":4587},[16,58461,4590,58462,4594],{},[31,58463,4593],{},[49,58465,4598],{"id":4597},[16,58467,4601],{},[24,58469,58470,58474,58480,58490,58494],{},[27,58471,58472,4609],{},[792,58473,4608],{},[27,58475,58476,4619],{},[792,58477,4614,58478,4618],{},[31,58479,4617],{},[27,58481,58482,112,58484,4628,58486,64,58488,4635],{},[792,58483,4624],{},[31,58485,4627],{},[31,58487,4631],{},[31,58489,4634],{},[27,58491,58492,4641],{},[792,58493,4640],{},[27,58495,58496,4647],{},[792,58497,4646],{},[16,58499,4650,58500,4654],{},[31,58501,4653],{},[49,58503,4658],{"id":4657},[1112,58505],{"description":4661,"host":4662,"image":4663,"title":4664,"url":4665,"favicon":4666},[16,58507,58508],{},[19,58509],{"alt":87,"src":4671},[16,58511,4674,58512,4678],{},[792,58513,4677],{},[82,58515,58516],{"className":1000,"code":4681,"language":1002,"meta":87,"style":87},[31,58517,58518,58522,58526,58530,58534,58538,58542,58546,58550,58554,58558,58562,58566,58570,58574,58578,58582,58586,58590,58594,58598],{"__ignoreMap":87},[91,58519,58520],{"class":93,"line":94},[91,58521,4688],{},[91,58523,58524],{"class":93,"line":105},[91,58525,4693],{},[91,58527,58528],{"class":93,"line":121},[91,58529,4698],{},[91,58531,58532],{"class":93,"line":134},[91,58533,4703],{},[91,58535,58536],{"class":93,"line":228},[91,58537,1674],{},[91,58539,58540],{"class":93,"line":250},[91,58541,4712],{},[91,58543,58544],{"class":93,"line":260},[91,58545,4717],{},[91,58547,58548],{"class":93,"line":274},[91,58549,4722],{},[91,58551,58552],{"class":93,"line":284},[91,58553,1674],{},[91,58555,58556],{"class":93,"line":299},[91,58557,4731],{},[91,58559,58560],{"class":93,"line":319},[91,58561,4736],{},[91,58563,58564],{"class":93,"line":334},[91,58565,4741],{},[91,58567,58568],{"class":93,"line":355},[91,58569,4746],{},[91,58571,58572],{"class":93,"line":364},[91,58573,4751],{},[91,58575,58576],{"class":93,"line":378},[91,58577,4756],{},[91,58579,58580],{"class":93,"line":387},[91,58581,4761],{},[91,58583,58584],{"class":93,"line":402},[91,58585,1674],{},[91,58587,58588],{"class":93,"line":422},[91,58589,4770],{},[91,58591,58592],{"class":93,"line":438},[91,58593,4775],{},[91,58595,58596],{"class":93,"line":458},[91,58597,1693],{},[91,58599,58600],{"class":93,"line":467},[91,58601,137],{},[49,58603,4787],{"id":4786},[16,58605,4790],{},[757,58607,4794],{"id":4793},[16,58609,4797,58610,4801,58612,4805],{},[31,58611,4800],{},[31,58613,4804],{},[16,58615,4808,58616,4812,58618,4816],{},[31,58617,4811],{},[31,58619,4815],{},[757,58621,4820],{"id":4819},[16,58623,4823,58624,4827],{},[31,58625,4826],{},[82,58627,58628],{"className":970,"code":4830,"language":972,"meta":87,"style":87},[31,58629,58630,58634],{"__ignoreMap":87},[91,58631,58632],{"class":93,"line":94},[91,58633,4837],{},[91,58635,58636],{"class":93,"line":105},[91,58637,4842],{},[16,58639,4845,58640,4848],{},[31,58641,4804],{},[82,58643,58644],{"className":1000,"code":4851,"language":1002,"meta":87,"style":87},[31,58645,58646,58650,58654,58658,58662,58666,58670,58674,58678,58682,58686,58690,58694,58698],{"__ignoreMap":87},[91,58647,58648],{"class":93,"line":94},[91,58649,4858],{},[91,58651,58652],{"class":93,"line":105},[91,58653,4863],{},[91,58655,58656],{"class":93,"line":121},[91,58657,4868],{},[91,58659,58660],{"class":93,"line":134},[91,58661,4873],{},[91,58663,58664],{"class":93,"line":228},[91,58665,1450],{"emptyLinePlaceholder":846},[91,58667,58668],{"class":93,"line":250},[91,58669,4882],{},[91,58671,58672],{"class":93,"line":260},[91,58673,4887],{},[91,58675,58676],{"class":93,"line":274},[91,58677,4892],{},[91,58679,58680],{"class":93,"line":284},[91,58681,4897],{},[91,58683,58684],{"class":93,"line":299},[91,58685,4902],{},[91,58687,58688],{"class":93,"line":319},[91,58689,4907],{},[91,58691,58692],{"class":93,"line":334},[91,58693,3561],{},[91,58695,58696],{"class":93,"line":355},[91,58697,4916],{},[91,58699,58700],{"class":93,"line":364},[91,58701,137],{},[16,58703,58704,4926,58706,4930,58708,4934],{},[31,58705,4925],{},[31,58707,4929],{},[31,58709,4933],{},[829,58711,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":58713},[58714,58715,58716],{"id":4597,"depth":105,"text":4598},{"id":4657,"depth":105,"text":4658},{"id":4786,"depth":105,"text":4787,"children":58717},[58718,58719],{"id":4793,"depth":121,"text":4794},{"id":4819,"depth":121,"text":4820},{},{"title":4573,"description":4946},{"loc":4949},[1511,1002,4954],{"id":4957,"title":4958,"body":58725,"created":5289,"description":5290,"extension":843,"filename":5291,"meta":58962,"navigation":846,"path":5293,"seo":58963,"sitemap":58964,"stem":5296,"subject":5297,"tags":58965,"updated":5289,"volume":1863,"__hash__":5299},{"type":8,"value":58726,"toc":58957},[58727,58737,58851,58855,58859,58865,58887,58891,58893,58899,58901,58903,58949,58955],[16,58728,4963,58729,4967,58731,4971,58733,4975,58735,4979],{},[31,58730,4966],{},[31,58732,4970],{},[31,58734,4974],{},[31,58736,4978],{},[82,58738,58739],{"className":4982,"code":4983,"language":2864,"meta":87,"style":87},[31,58740,58741,58745,58763,58781,58785,58801,58811,58823,58827,58835,58843],{"__ignoreMap":87},[91,58742,58743],{"class":93,"line":94},[91,58744,4990],{"class":1343},[91,58746,58747,58749,58751,58753,58755,58757,58759,58761],{"class":93,"line":105},[91,58748,1968],{"class":566},[91,58750,4997],{"class":108},[91,58752,1366],{"class":566},[91,58754,2676],{"class":566},[91,58756,5004],{"class":97},[91,58758,5007],{"class":101},[91,58760,5010],{"class":169},[91,58762,5013],{"class":101},[91,58764,58765,58767,58769,58771,58773,58775,58777,58779],{"class":93,"line":121},[91,58766,1968],{"class":566},[91,58768,5020],{"class":108},[91,58770,1366],{"class":566},[91,58772,5025],{"class":101},[91,58774,5028],{"class":97},[91,58776,795],{"class":101},[91,58778,5033],{"class":169},[91,58780,1594],{"class":101},[91,58782,58783],{"class":93,"line":134},[91,58784,1450],{"emptyLinePlaceholder":846},[91,58786,58787,58789,58791,58793,58795,58797,58799],{"class":93,"line":228},[91,58788,5044],{"class":101},[91,58790,166],{"class":566},[91,58792,5049],{"class":101},[91,58794,5052],{"class":108},[91,58796,1235],{"class":101},[91,58798,5057],{"class":97},[91,58800,5060],{"class":101},[91,58802,58803,58805,58807,58809],{"class":93,"line":250},[91,58804,5065],{"class":101},[91,58806,166],{"class":566},[91,58808,5070],{"class":169},[91,58810,118],{"class":101},[91,58812,58813,58815,58817,58819,58821],{"class":93,"line":260},[91,58814,5077],{"class":101},[91,58816,166],{"class":566},[91,58818,5082],{"class":97},[91,58820,5085],{"class":101},[91,58822,5088],{"class":1343},[91,58824,58825],{"class":93,"line":274},[91,58826,1450],{"emptyLinePlaceholder":846},[91,58828,58829,58831,58833],{"class":93,"line":284},[91,58830,5097],{"class":101},[91,58832,5100],{"class":97},[91,58834,5103],{"class":101},[91,58836,58837,58839,58841],{"class":93,"line":299},[91,58838,5108],{"class":101},[91,58840,5111],{"class":97},[91,58842,2030],{"class":101},[91,58844,58845,58847,58849],{"class":93,"line":319},[91,58846,5097],{"class":101},[91,58848,5120],{"class":97},[91,58850,5103],{"class":101},[16,58852,5125,58853,5129],{},[31,58854,5128],{},[16,58856,58857],{},[19,58858],{"alt":5134,"src":5135},[16,58860,5138,58861,5142,58863,5146],{},[31,58862,5141],{},[31,58864,5145],{},[4530,58866,58867,58873,58879],{},[27,58868,58869,5154,58871,5158],{},[792,58870,5153],{},[31,58872,5157],{},[27,58874,58875,5164,58877,5168],{},[792,58876,5163],{},[31,58878,5167],{},[27,58880,58881,5174,58883,5178,58885,5182],{},[792,58882,5173],{},[31,58884,5177],{},[31,58886,5181],{},[16,58888,5185,58889,5189],{},[31,58890,5188],{},[49,58892,5193],{"id":5192},[16,58894,5196,58895,5199,58897,5203],{},[31,58896,4974],{},[792,58898,5202],{},[757,58900,5207],{"id":5206},[16,58902,5210],{},[82,58904,58905],{"className":5213,"code":5214,"language":2865,"meta":87,"style":87},[31,58906,58907,58911,58921,58925,58933,58941,58945],{"__ignoreMap":87},[91,58908,58909],{"class":93,"line":94},[91,58910,5221],{"class":1343},[91,58912,58913,58915,58917,58919],{"class":93,"line":105},[91,58914,5226],{"class":566},[91,58916,5229],{"class":101},[91,58918,5232],{"class":566},[91,58920,5235],{"class":101},[91,58922,58923],{"class":93,"line":121},[91,58924,5240],{"class":1343},[91,58926,58927,58929,58931],{"class":93,"line":134},[91,58928,5245],{"class":101},[91,58930,5248],{"class":97},[91,58932,5251],{"class":101},[91,58934,58935,58937,58939],{"class":93,"line":228},[91,58936,1434],{"class":101},[91,58938,5258],{"class":566},[91,58940,102],{"class":101},[91,58942,58943],{"class":93,"line":250},[91,58944,5265],{"class":1343},[91,58946,58947],{"class":93,"line":260},[91,58948,137],{"class":101},[16,58950,5272,58951,5276,58953,5280],{},[31,58952,5275],{},[31,58954,5279],{},[829,58956,5283],{},{"title":87,"searchDepth":105,"depth":105,"links":58958},[58959],{"id":5192,"depth":105,"text":5193,"children":58960},[58961],{"id":5206,"depth":121,"text":5207},{},{"title":4958,"description":5290},{"loc":5293},[2865,1511,4954],{"id":5301,"title":5302,"body":58967,"created":5436,"description":5437,"extension":843,"filename":5438,"meta":59053,"navigation":846,"path":5440,"seo":59054,"sitemap":59055,"stem":5443,"subject":5444,"tags":59056,"updated":5436,"volume":1863,"__hash__":5448},{"type":8,"value":58968,"toc":59049},[58969,58973,58981,58987,58993,58995,59009,59011,59013,59043],[16,58970,5307,58971,5311],{},[31,58972,5310],{},[16,58974,5314,58975,5317,58977,5321,58979,5325],{},[31,58976,5310],{},[31,58978,5320],{},[31,58980,5324],{},[16,58982,5328,58983,5332,58985,5336],{},[31,58984,5331],{},[31,58986,5335],{},[16,58988,5339,58989,5343,58991,5347],{},[31,58990,5342],{},[31,58992,5346],{},[49,58994,5351],{"id":5350},[24,58996,58997,59001,59005],{},[27,58998,58999,5358],{},[31,59000,5320],{},[27,59002,59003,5363],{},[31,59004,5324],{},[27,59006,59007,5368],{},[31,59008,5331],{},[49,59010,5372],{"id":5371},[16,59012,5375],{},[4530,59014,59015,59027,59033,59037],{},[27,59016,59017,5383,59019,5387,59021,5391,59023,2978,59025,5398],{},[792,59018,5382],{},[31,59020,5386],{},[31,59022,5390],{},[31,59024,5394],{},[31,59026,5397],{},[27,59028,59029,112,59031,5407],{},[792,59030,5403],{},[31,59032,5406],{},[27,59034,59035,5413],{},[792,59036,5412],{},[27,59038,59039,5419,59041,5203],{},[792,59040,5418],{},[792,59042,5422],{},[16,59044,59045,5427,59047,5431],{},[31,59046,5390],{},[31,59048,5430],{},{"title":87,"searchDepth":105,"depth":105,"links":59050},[59051,59052],{"id":5350,"depth":105,"text":5351},{"id":5371,"depth":105,"text":5372},{},{"title":5302,"description":5437},{"loc":5440},[5446,2865,5447],{"id":5450,"title":5451,"body":59058,"created":5712,"description":5713,"extension":843,"filename":5714,"meta":59258,"navigation":846,"path":5716,"seo":59259,"sitemap":59260,"stem":5719,"subject":851,"tags":59261,"updated":5712,"volume":1863,"__hash__":5722},{"type":8,"value":59059,"toc":59254},[59060,59070,59072,59104,59106,59124,59126,59128,59130,59144,59146,59152,59154,59156,59160,59162,59164,59166,59248,59252],[82,59061,59062],{"className":84,"code":5456,"language":86,"meta":87,"style":87},[31,59063,59064],{"__ignoreMap":87},[91,59065,59066,59068],{"class":93,"line":94},[91,59067,5463],{"class":101},[91,59069,5467],{"class":5466},[16,59071,5470],{},[82,59073,59074],{"className":84,"code":5473,"language":86,"meta":87,"style":87},[31,59075,59076,59086,59096],{"__ignoreMap":87},[91,59077,59078,59080,59082,59084],{"class":93,"line":94},[91,59079,5480],{"class":159},[91,59081,5483],{"class":101},[91,59083,5486],{"class":97},[91,59085,1594],{"class":101},[91,59087,59088,59090,59092,59094],{"class":93,"line":105},[91,59089,5480],{"class":159},[91,59091,5495],{"class":101},[91,59093,5486],{"class":97},[91,59095,1594],{"class":101},[91,59097,59098,59100,59102],{"class":93,"line":121},[91,59099,5504],{"class":101},[91,59101,5486],{"class":97},[91,59103,1594],{"class":101},[16,59105,5511],{},[82,59107,59108],{"className":84,"code":5514,"language":86,"meta":87,"style":87},[31,59109,59110,59114],{"__ignoreMap":87},[91,59111,59112],{"class":93,"line":94},[91,59113,5521],{"class":101},[91,59115,59116,59118,59120,59122],{"class":93,"line":105},[91,59117,5480],{"class":159},[91,59119,5495],{"class":101},[91,59121,5486],{"class":97},[91,59123,1594],{"class":101},[16,59125,5534],{},[49,59127,5537],{"id":5537},[1112,59129],{"favicon":5540,"host":5541,"title":5542,"url":5543,"description":5544,"image":5545},[82,59131,59132],{"className":84,"code":5548,"language":86,"meta":87,"style":87},[31,59133,59134],{"__ignoreMap":87},[91,59135,59136,59138,59140,59142],{"class":93,"line":94},[91,59137,5480],{"class":159},[91,59139,5557],{"class":101},[91,59141,5560],{"class":5466},[91,59143,5563],{"class":101},[16,59145,5566],{},[4530,59147,59148,59150],{},[27,59149,5571],{},[27,59151,5574],{},[16,59153,5577],{},[1112,59155],{"favicon":5580,"host":5581,"title":5582,"url":5583},[16,59157,59158],{},[19,59159],{"alt":21,"src":5588},[16,59161,5591],{},[49,59163,5595],{"id":5594},[1112,59165],{"favicon":5598,"host":5599,"title":5600,"url":5601,"description":5602,"image":5603},[82,59167,59168],{"className":84,"code":5606,"language":86,"meta":87,"style":87},[31,59169,59170,59176,59196,59200,59204,59210,59244],{"__ignoreMap":87},[91,59171,59172,59174],{"class":93,"line":94},[91,59173,5613],{"class":97},[91,59175,102],{"class":101},[91,59177,59178,59180,59182,59184,59186,59188,59190,59192,59194],{"class":93,"line":105},[91,59179,5620],{"class":108},[91,59181,5623],{"class":101},[91,59183,5626],{"class":108},[91,59185,795],{"class":101},[91,59187,5631],{"class":1172},[91,59189,5634],{"class":101},[91,59191,5637],{"class":108},[91,59193,5640],{"class":566},[91,59195,1594],{"class":101},[91,59197,59198],{"class":93,"line":121},[91,59199,137],{"class":101},[91,59201,59202],{"class":93,"line":134},[91,59203,5651],{"class":1343},[91,59205,59206,59208],{"class":93,"line":228},[91,59207,5613],{"class":97},[91,59209,102],{"class":101},[91,59211,59212,59214,59216,59218,59220,59222,59224,59226,59228,59230,59232,59234,59236,59238,59240,59242],{"class":93,"line":250},[91,59213,5620],{"class":108},[91,59215,112],{"class":101},[91,59217,5537],{"class":108},[91,59219,795],{"class":101},[91,59221,5670],{"class":1172},[91,59223,5673],{"class":1172},[91,59225,64],{"class":101},[91,59227,5626],{"class":108},[91,59229,795],{"class":101},[91,59231,5631],{"class":1172},[91,59233,1176],{"class":101},[91,59235,5637],{"class":108},[91,59237,5640],{"class":566},[91,59239,64],{"class":101},[91,59241,5692],{"class":108},[91,59243,1594],{"class":101},[91,59245,59246],{"class":93,"line":260},[91,59247,137],{"class":101},[16,59249,5701,59250,5704],{},[31,59251,5537],{},[829,59253,5707],{},{"title":87,"searchDepth":105,"depth":105,"links":59255},[59256,59257],{"id":5537,"depth":105,"text":5537},{"id":5594,"depth":105,"text":5595},{},{"title":5451,"description":5713},{"loc":5716},[86,5721],{"id":5724,"title":5725,"body":59263,"created":6033,"description":6034,"extension":843,"filename":6035,"meta":59479,"navigation":846,"path":6037,"seo":59480,"sitemap":59481,"stem":6040,"subject":6041,"tags":59482,"updated":6033,"volume":853,"__hash__":6044},{"type":8,"value":59264,"toc":59471},[59265,59275,59277,59293,59299,59305,59311,59313,59325,59331,59339,59347,59349,59365,59371,59381,59383,59419,59425,59433,59439,59441,59449,59457,59459,59467,59469],[16,59266,59267,5733,59269,5737,59271,5321,59273,5743],{},[31,59268,5732],{},[31,59270,5736],{},[31,59272,5167],{},[31,59274,5742],{},[49,59276,5747],{"id":5746},[82,59278,59279],{"className":5750,"code":5751,"language":5752,"meta":87,"style":87},[31,59280,59281,59285,59289],{"__ignoreMap":87},[91,59282,59283],{"class":93,"line":94},[91,59284,5759],{},[91,59286,59287],{"class":93,"line":105},[91,59288,5764],{},[91,59290,59291],{"class":93,"line":121},[91,59292,5769],{},[16,59294,59295,5775,59297,5778],{},[31,59296,5774],{},[31,59298,5774],{},[16,59300,59301,5784,59303,5788],{},[31,59302,5783],{},[31,59304,5787],{},[16,59306,5791,59307,5794,59309,5797],{},[31,59308,5167],{},[31,59310,5742],{},[49,59312,5801],{"id":5800},[82,59314,59315],{"className":5750,"code":5804,"language":5752,"meta":87,"style":87},[31,59316,59317,59321],{"__ignoreMap":87},[91,59318,59319],{"class":93,"line":94},[91,59320,5811],{},[91,59322,59323],{"class":93,"line":105},[91,59324,5759],{},[16,59326,5818,59327,5733,59329,5823],{},[31,59328,5732],{},[31,59330,5736],{},[16,59332,5826,59333,5830,59335,5834,59337,5838],{},[31,59334,5829],{},[31,59336,5833],{},[31,59338,5837],{},[16,59340,5841,59341,5844,59343,5321,59345,5849],{},[31,59342,5732],{},[31,59344,5742],{},[31,59346,5167],{},[49,59348,5853],{"id":5852},[82,59350,59351],{"className":5750,"code":5856,"language":5752,"meta":87,"style":87},[31,59352,59353,59357,59361],{"__ignoreMap":87},[91,59354,59355],{"class":93,"line":94},[91,59356,5863],{},[91,59358,59359],{"class":93,"line":105},[91,59360,5868],{},[91,59362,59363],{"class":93,"line":121},[91,59364,5873],{},[16,59366,59367,5878,59369,5882],{},[31,59368,5787],{},[31,59370,5881],{},[16,59372,5885,59373,5888,59375,5891,59377,5894,59379,5897],{},[31,59374,5881],{},[31,59376,5787],{},[31,59378,5787],{},[31,59380,5881],{},[49,59382,5901],{"id":5900},[82,59384,59385],{"className":1154,"code":5904,"language":1156,"meta":87,"style":87},[31,59386,59387,59401],{"__ignoreMap":87},[91,59388,59389,59391,59393,59395,59397,59399],{"class":93,"line":94},[91,59390,1968],{"class":566},[91,59392,5913],{"class":108},[91,59394,1366],{"class":566},[91,59396,1390],{"class":566},[91,59398,5920],{"class":97},[91,59400,5923],{"class":101},[91,59402,59403,59405,59407,59409,59411,59413,59415,59417],{"class":93,"line":105},[91,59404,1968],{"class":566},[91,59406,5930],{"class":108},[91,59408,1366],{"class":566},[91,59410,5935],{"class":101},[91,59412,5938],{"class":97},[91,59414,795],{"class":101},[91,59416,5943],{"class":169},[91,59418,3487],{"class":101},[16,59420,5948,59421,5952,59423,5955],{},[31,59422,5951],{},[31,59424,5167],{},[82,59426,59427],{"className":5750,"code":5958,"language":5752,"meta":87,"style":87},[31,59428,59429],{"__ignoreMap":87},[91,59430,59431],{"class":93,"line":94},[91,59432,5958],{},[16,59434,5967,59435,5971,59437,5975],{},[31,59436,5970],{},[31,59438,5974],{},[49,59440,5979],{"id":5978},[82,59442,59443],{"className":5750,"code":5982,"language":5752,"meta":87,"style":87},[31,59444,59445],{"__ignoreMap":87},[91,59446,59447],{"class":93,"line":94},[91,59448,5982],{},[16,59450,5991,59451,5994,59453,5998,59455,6001],{},[31,59452,5167],{},[31,59454,5997],{},[31,59456,5167],{},[49,59458,6005],{"id":6004},[16,59460,59461,59464],{},[4306,59462,6010],{"href":6010,"rel":59463},[4310],[4306,59465,6014],{"href":6014,"rel":59466},[4310],[1112,59468],{"favicon":6018,"host":6019,"title":6020,"url":6021},[829,59470,6024],{},{"title":87,"searchDepth":105,"depth":105,"links":59472},[59473,59474,59475,59476,59477,59478],{"id":5746,"depth":105,"text":5747},{"id":5800,"depth":105,"text":5801},{"id":5852,"depth":105,"text":5853},{"id":5900,"depth":105,"text":5901},{"id":5978,"depth":105,"text":5979},{"id":6004,"depth":105,"text":6005},{},{"title":5725,"description":6034},{"loc":6037},[5752,6043,4978],{"id":6046,"title":6047,"body":59484,"created":6807,"description":6808,"extension":843,"filename":6809,"meta":60073,"navigation":846,"path":6811,"seo":60074,"sitemap":60075,"stem":6814,"subject":851,"tags":60076,"updated":6807,"volume":853,"__hash__":6817},{"type":8,"value":59485,"toc":60064},[59486,59488,59490,59498,59500,59504,59508,59512,59514,59536,59540,59544,59548,59552,59554,59559,59641,59645,59647,59659,59663,59669,59677,59681,59693,59695,59699,59705,59707,59711,59727,59731,59743,59749,59751,60017,60025,60039,60043,60045,60051,60053,60055,60062],[1112,59487],{"description":6052,"favicon":6053,"host":6054,"image":6055,"title":6056,"url":6057},[16,59489,6060],{},[16,59491,59492,34,59494,6069,59496,6073],{},[31,59493,6065],{},[31,59495,6068],{},[31,59497,6072],{},[49,59499,6077],{"id":6076},[16,59501,59502],{},[19,59503],{"alt":6082,"src":6083},[16,59505,6086,59506,6089],{},[31,59507,6072],{},[16,59509,59510],{},[19,59511],{"alt":6094,"src":6095},[16,59513,6098],{},[24,59515,59516,59520,59524,59528,59532],{},[27,59517,59518,6106],{},[792,59519,6105],{},[27,59521,59522,6112],{},[792,59523,6111],{},[27,59525,59526,6118],{},[792,59527,6117],{},[27,59529,59530,6124],{},[792,59531,6123],{},[27,59533,59534,6130],{},[792,59535,6129],{},[16,59537,6133,59538,6136],{},[31,59539,6072],{},[16,59541,59542],{},[19,59543],{"alt":6141,"src":6142},[16,59545,6145,59546,6149],{},[31,59547,6148],{},[16,59549,59550],{},[19,59551],{"alt":6154,"src":6155},[49,59553,6159],{"id":6158},[16,59555,59556],{},[4306,59557,6166],{"href":6164,"rel":59558},[4310],[82,59560,59561],{"className":147,"code":6169,"language":149,"meta":87,"style":87},[31,59562,59563,59571,59575,59593,59611,59629,59633],{"__ignoreMap":87},[91,59564,59565,59567,59569],{"class":93,"line":94},[91,59566,156],{"class":101},[91,59568,16],{"class":159},[91,59570,173],{"class":101},[91,59572,59573],{"class":93,"line":105},[91,59574,6184],{"class":101},[91,59576,59577,59579,59581,59583,59585,59587,59589,59591],{"class":93,"line":121},[91,59578,178],{"class":101},[91,59580,91],{"class":159},[91,59582,163],{"class":97},[91,59584,166],{"class":101},[91,59586,6197],{"class":169},[91,59588,6200],{"class":101},[91,59590,91],{"class":159},[91,59592,173],{"class":101},[91,59594,59595,59597,59599,59601,59603,59605,59607,59609],{"class":93,"line":134},[91,59596,178],{"class":101},[91,59598,91],{"class":159},[91,59600,163],{"class":97},[91,59602,166],{"class":101},[91,59604,6217],{"class":169},[91,59606,6200],{"class":101},[91,59608,91],{"class":159},[91,59610,173],{"class":101},[91,59612,59613,59615,59617,59619,59621,59623,59625,59627],{"class":93,"line":228},[91,59614,178],{"class":101},[91,59616,91],{"class":159},[91,59618,163],{"class":97},[91,59620,166],{"class":101},[91,59622,6236],{"class":169},[91,59624,6200],{"class":101},[91,59626,91],{"class":159},[91,59628,173],{"class":101},[91,59630,59631],{"class":93,"line":250},[91,59632,6247],{"class":101},[91,59634,59635,59637,59639],{"class":93,"line":260},[91,59636,493],{"class":101},[91,59638,16],{"class":159},[91,59640,173],{"class":101},[16,59642,59643],{},[19,59644],{"alt":6260,"src":6261},[16,59646,6264],{},[24,59648,59649,59653],{},[27,59650,59651,6272],{},[792,59652,6271],{},[27,59654,59655,112,59657,6280],{},[792,59656,6277],{},[31,59658,6065],{},[16,59660,59661],{},[19,59662],{"alt":6285,"src":6286},[16,59664,6289,59665,6292,59667,6296],{},[31,59666,6065],{},[31,59668,6295],{},[16,59670,59671,6301,59673,6305,59675,6308],{},[31,59672,6065],{},[31,59674,6304],{},[31,59676,6304],{},[16,59678,59679],{},[19,59680],{"alt":6313,"src":6314},[16,59682,6317,59683,64,59685,64,59687,6324,59689,6328,59691,6332],{},[31,59684,805],{},[31,59686,798],{},[31,59688,802],{},[31,59690,6327],{},[31,59692,6331],{},[757,59694,6336],{"id":6335},[16,59696,59697],{},[19,59698],{"alt":6341,"src":6342},[16,59700,59701,6347,59703,6350],{},[31,59702,6336],{},[31,59704,6304],{},[49,59706,6068],{"id":6068},[16,59708,59709],{},[19,59710],{"alt":6357,"src":6358},[16,59712,59713,6363,59715,6367,59717,64,59719,6373,59721,6377,59723,6380,59725,6383],{},[31,59714,6068],{},[31,59716,6366],{},[31,59718,6370],{},[31,59720,6072],{},[31,59722,6376],{},[31,59724,6065],{},[31,59726,6065],{},[16,59728,59729],{},[19,59730],{"alt":6388,"src":6389},[16,59732,6392,59733,6396,59735,6400,59737,6403,59739,6406,59741,6409],{},[31,59734,6395],{},[31,59736,6399],{},[31,59738,6366],{},[31,59740,6123],{},[31,59742,6123],{},[16,59744,6412,59745,6416,59747,6420],{},[31,59746,6415],{},[31,59748,6419],{},[49,59750,6424],{"id":6423},[82,59752,59753],{"className":84,"code":6427,"language":86,"meta":87,"style":87},[31,59754,59755,59761,59765,59771,59781,59791,59801,59811,59815,59819,59829,59843,59847,59851,59873,59899,59903,59907,59921,59943,59973,59977,59981,59987,60013],{"__ignoreMap":87},[91,59756,59757,59759],{"class":93,"line":94},[91,59758,16],{"class":159},[91,59760,102],{"class":101},[91,59762,59763],{"class":93,"line":105},[91,59764,6440],{"class":1343},[91,59766,59767,59769],{"class":93,"line":121},[91,59768,6445],{"class":1172},[91,59770,6448],{"class":101},[91,59772,59773,59775,59777,59779],{"class":93,"line":134},[91,59774,6453],{"class":1172},[91,59776,112],{"class":101},[91,59778,6458],{"class":108},[91,59780,118],{"class":101},[91,59782,59783,59785,59787,59789],{"class":93,"line":228},[91,59784,6465],{"class":1172},[91,59786,112],{"class":101},[91,59788,6470],{"class":108},[91,59790,118],{"class":101},[91,59792,59793,59795,59797,59799],{"class":93,"line":250},[91,59794,6477],{"class":1172},[91,59796,112],{"class":101},[91,59798,6482],{"class":108},[91,59800,118],{"class":101},[91,59802,59803,59805,59807,59809],{"class":93,"line":260},[91,59804,6489],{"class":1172},[91,59806,112],{"class":101},[91,59808,1578],{"class":108},[91,59810,118],{"class":101},[91,59812,59813],{"class":93,"line":274},[91,59814,1450],{"emptyLinePlaceholder":846},[91,59816,59817],{"class":93,"line":284},[91,59818,6504],{"class":1343},[91,59820,59821,59823,59825,59827],{"class":93,"line":299},[91,59822,6509],{"class":1172},[91,59824,112],{"class":101},[91,59826,6514],{"class":108},[91,59828,118],{"class":101},[91,59830,59831,59833,59835,59837,59839,59841],{"class":93,"line":319},[91,59832,6521],{"class":108},[91,59834,112],{"class":101},[91,59836,5626],{"class":108},[91,59838,795],{"class":101},[91,59840,6530],{"class":1172},[91,59842,1594],{"class":101},[91,59844,59845],{"class":93,"line":334},[91,59846,1450],{"emptyLinePlaceholder":846},[91,59848,59849],{"class":93,"line":355},[91,59850,6541],{"class":1343},[91,59852,59853,59855,59857,59859,59861,59863,59865,59867,59869,59871],{"class":93,"line":364},[91,59854,6546],{"class":1172},[91,59856,6549],{"class":101},[91,59858,5626],{"class":108},[91,59860,795],{"class":101},[91,59862,6556],{"class":1172},[91,59864,5634],{"class":101},[91,59866,5626],{"class":108},[91,59868,795],{"class":101},[91,59870,6565],{"class":1172},[91,59872,6568],{"class":101},[91,59874,59875,59877,59879,59881,59883,59885,59887,59889,59891,59893,59895,59897],{"class":93,"line":378},[91,59876,6573],{"class":108},[91,59878,112],{"class":101},[91,59880,6415],{"class":108},[91,59882,795],{"class":101},[91,59884,5626],{"class":108},[91,59886,795],{"class":101},[91,59888,6586],{"class":1172},[91,59890,1176],{"class":101},[91,59892,6591],{"class":566},[91,59894,6594],{"class":108},[91,59896,567],{"class":566},[91,59898,1594],{"class":101},[91,59900,59901],{"class":93,"line":387},[91,59902,1450],{"emptyLinePlaceholder":846},[91,59904,59905],{"class":93,"line":402},[91,59906,6607],{"class":1343},[91,59908,59909,59911,59913,59915,59917,59919],{"class":93,"line":422},[91,59910,6612],{"class":1172},[91,59912,112],{"class":101},[91,59914,5626],{"class":108},[91,59916,795],{"class":101},[91,59918,6621],{"class":1172},[91,59920,1594],{"class":101},[91,59922,59923,59925,59927,59929,59931,59933,59935,59937,59939,59941],{"class":93,"line":438},[91,59924,6628],{"class":1172},[91,59926,6549],{"class":101},[91,59928,5626],{"class":108},[91,59930,795],{"class":101},[91,59932,6637],{"class":1172},[91,59934,6640],{"class":101},[91,59936,5626],{"class":108},[91,59938,795],{"class":101},[91,59940,6565],{"class":1172},[91,59942,6568],{"class":101},[91,59944,59945,59947,59949,59951,59953,59955,59957,59959,59961,59963,59965,59967,59969,59971],{"class":93,"line":458},[91,59946,6653],{"class":1172},[91,59948,6656],{"class":101},[91,59950,5626],{"class":108},[91,59952,795],{"class":101},[91,59954,6663],{"class":1172},[91,59956,6640],{"class":101},[91,59958,5626],{"class":108},[91,59960,795],{"class":101},[91,59962,6672],{"class":1172},[91,59964,6675],{"class":101},[91,59966,5626],{"class":108},[91,59968,795],{"class":101},[91,59970,6586],{"class":1172},[91,59972,6568],{"class":101},[91,59974,59975],{"class":93,"line":467},[91,59976,137],{"class":101},[91,59978,59979],{"class":93,"line":481},[91,59980,1450],{"emptyLinePlaceholder":846},[91,59982,59983,59985],{"class":93,"line":490},[91,59984,91],{"class":159},[91,59986,102],{"class":101},[91,59988,59989,59991,59993,59995,59997,59999,60001,60003,60005,60007,60009,60011],{"class":93,"line":3310},[91,59990,6702],{"class":108},[91,59992,112],{"class":101},[91,59994,6415],{"class":108},[91,59996,795],{"class":101},[91,59998,5626],{"class":108},[91,60000,795],{"class":101},[91,60002,6715],{"class":1172},[91,60004,1176],{"class":101},[91,60006,6591],{"class":566},[91,60008,6722],{"class":108},[91,60010,567],{"class":566},[91,60012,1594],{"class":101},[91,60014,60015],{"class":93,"line":3315},[91,60016,137],{"class":101},[16,60018,6733,60019,6737,60021,6740,60023,6743],{},[31,60020,6736],{},[31,60022,6117],{},[31,60024,6072],{},[16,60026,60027,6748,60029,6751,60031,6754,60033,5321,60035,6759,60037,6762],{},[31,60028,6556],{},[31,60030,6565],{},[31,60032,6072],{},[31,60034,6663],{},[31,60036,6672],{},[31,60038,6068],{},[16,60040,60041],{},[19,60042],{"alt":6767,"src":6768},[16,60044,6771],{},[24,60046,60047,60049],{},[27,60048,6776],{},[27,60050,6779],{},[16,60052,6782],{},[49,60054,6786],{"id":6785},[24,60056,60057],{},[27,60058,60059],{},[4306,60060,6794],{"href":6057,"rel":60061},[4310],[829,60063,6797],{},{"title":87,"searchDepth":105,"depth":105,"links":60065},[60066,60067,60070,60071,60072],{"id":6076,"depth":105,"text":6077},{"id":6158,"depth":105,"text":6159,"children":60068},[60069],{"id":6335,"depth":121,"text":6336},{"id":6068,"depth":105,"text":6068},{"id":6423,"depth":105,"text":6424},{"id":6785,"depth":105,"text":6786},{},{"title":6047,"description":6808},{"loc":6811},[86,6816,149],{"id":6819,"title":6820,"body":60078,"created":7192,"description":7193,"extension":843,"filename":7194,"meta":60335,"navigation":846,"path":7196,"seo":60336,"sitemap":60337,"stem":7199,"subject":7200,"tags":60338,"updated":7192,"volume":853,"__hash__":7206},{"type":8,"value":60079,"toc":60328},[60080,60082,60084,60088,60100,60104,60110,60115,60119,60139,60141,60153,60155,60157,60159,60195,60201,60205,60217,60225,60227,60231,60233,60257,60261,60266,60274,60276,60280,60288,60294,60310,60312,60314,60316,60318,60320,60322,60324,60326],[16,60081,6825],{},[49,60083,6829],{"id":6828},[16,60085,6832,60086,6836],{},[31,60087,6835],{},[82,60089,60090],{"className":6839,"code":6840,"language":6841,"meta":87,"style":87},[31,60091,60092,60096],{"__ignoreMap":87},[91,60093,60094],{"class":93,"line":94},[91,60095,6848],{},[91,60097,60098],{"class":93,"line":105},[91,60099,6853],{},[16,60101,60102],{},[19,60103],{"alt":6858,"src":6859},[16,60105,6862,60106,6866,60108,6870],{},[31,60107,6865],{},[31,60109,6869],{},[82,60111,60113],{"className":60112,"code":6874,"language":1099,"meta":87},[1097],[31,60114,6874],{"__ignoreMap":87},[16,60116,60117,6882],{},[31,60118,6881],{},[82,60120,60121],{"className":6839,"code":6885,"language":6841,"meta":87,"style":87},[31,60122,60123,60127,60131,60135],{"__ignoreMap":87},[91,60124,60125],{"class":93,"line":94},[91,60126,6892],{},[91,60128,60129],{"class":93,"line":105},[91,60130,1450],{"emptyLinePlaceholder":846},[91,60132,60133],{"class":93,"line":121},[91,60134,6901],{},[91,60136,60137],{"class":93,"line":134},[91,60138,6906],{},[16,60140,6909],{},[82,60142,60143],{"className":6839,"code":6912,"language":6841,"meta":87,"style":87},[31,60144,60145,60149],{"__ignoreMap":87},[91,60146,60147],{"class":93,"line":94},[91,60148,6919],{},[91,60150,60151],{"class":93,"line":105},[91,60152,6924],{},[16,60154,6927],{},[49,60156,6931],{"id":6930},[16,60158,6934],{},[82,60160,60161],{"className":6839,"code":6937,"language":6841,"meta":87,"style":87},[31,60162,60163,60167,60171,60175,60179,60183,60187,60191],{"__ignoreMap":87},[91,60164,60165],{"class":93,"line":94},[91,60166,6944],{},[91,60168,60169],{"class":93,"line":105},[91,60170,6949],{},[91,60172,60173],{"class":93,"line":121},[91,60174,6954],{},[91,60176,60177],{"class":93,"line":134},[91,60178,1450],{"emptyLinePlaceholder":846},[91,60180,60181],{"class":93,"line":228},[91,60182,6963],{},[91,60184,60185],{"class":93,"line":250},[91,60186,6968],{},[91,60188,60189],{"class":93,"line":260},[91,60190,6973],{},[91,60192,60193],{"class":93,"line":274},[91,60194,6978],{},[16,60196,6981,60197,6985,60199,6988],{},[31,60198,6984],{},[31,60200,6984],{},[16,60202,6991,60203,6995],{},[31,60204,6994],{},[82,60206,60207],{"className":6998,"code":6999,"language":7000,"meta":87,"style":87},[31,60208,60209,60213],{"__ignoreMap":87},[91,60210,60211],{"class":93,"line":94},[91,60212,7007],{},[91,60214,60215],{"class":93,"line":105},[91,60216,7012],{},[16,60218,7015,60219,7019,60221,64,60223,7026],{},[31,60220,7018],{},[31,60222,7022],{},[31,60224,7025],{},[49,60226,7030],{"id":7029},[16,60228,7033,60229,7037],{},[31,60230,7036],{},[16,60232,7040],{},[82,60234,60235],{"className":6839,"code":7043,"language":6841,"meta":87,"style":87},[31,60236,60237,60241,60245,60249,60253],{"__ignoreMap":87},[91,60238,60239],{"class":93,"line":94},[91,60240,7050],{},[91,60242,60243],{"class":93,"line":105},[91,60244,7055],{},[91,60246,60247],{"class":93,"line":121},[91,60248,1450],{"emptyLinePlaceholder":846},[91,60250,60251],{"class":93,"line":134},[91,60252,7064],{},[91,60254,60255],{"class":93,"line":228},[91,60256,7069],{},[16,60258,7072,60259,7075],{},[31,60260,6869],{},[82,60262,60264],{"className":60263,"code":7079,"language":1099,"meta":87},[1097],[31,60265,7079],{"__ignoreMap":87},[16,60267,7084,60268,7088,60270,7092,60272,7096],{},[31,60269,7087],{},[31,60271,7091],{},[31,60273,7095],{},[49,60275,7100],{"id":7099},[16,60277,60278,7106],{},[31,60279,7105],{},[82,60281,60282],{"className":6839,"code":7109,"language":6841,"meta":87,"style":87},[31,60283,60284],{"__ignoreMap":87},[91,60285,60286],{"class":93,"line":94},[91,60287,7109],{},[16,60289,60290,7121,60292,7125],{},[31,60291,7120],{},[31,60293,7124],{},[82,60295,60296],{"className":6839,"code":7128,"language":6841,"meta":87,"style":87},[31,60297,60298,60302,60306],{"__ignoreMap":87},[91,60299,60300],{"class":93,"line":94},[91,60301,7135],{},[91,60303,60304],{"class":93,"line":105},[91,60305,7140],{},[91,60307,60308],{"class":93,"line":121},[91,60309,7145],{},[16,60311,7148],{},[49,60313,6005],{"id":6004},[1112,60315],{"description":7153,"host":7154,"title":7155,"url":7156},[1112,60317],{"description":7159,"host":7154,"title":7160,"url":7161},[1112,60319],{"description":7164,"host":7154,"title":7165,"url":7166},[1112,60321],{"description":7169,"host":7170,"title":7171,"url":7172},[1112,60323],{"description":7175,"host":1317,"title":7176,"url":7177},[1112,60325],{"description":7180,"host":1317,"title":7181,"url":7182},[829,60327,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":60329},[60330,60331,60332,60333,60334],{"id":6828,"depth":105,"text":6829},{"id":6930,"depth":105,"text":6931},{"id":7029,"depth":105,"text":7030},{"id":7099,"depth":105,"text":7100},{"id":6004,"depth":105,"text":6005},{},{"title":6820,"description":7193},{"loc":7196},[7202,7203,7204,7205,1511],{"id":7208,"title":7209,"body":60340,"created":7400,"description":7401,"extension":843,"filename":7402,"meta":60486,"navigation":846,"path":7404,"seo":60487,"sitemap":60488,"stem":7407,"subject":7200,"tags":60489,"updated":7400,"volume":1863,"__hash__":7410},{"type":8,"value":60341,"toc":60484},[60342,60344,60350,60354,60356,60362,60434,60438,60472,60476,60480,60482],[16,60343,7214],{},[24,60345,60346,60348],{},[27,60347,7219],{},[27,60349,7222],{},[16,60351,60352],{},[19,60353],{"alt":87,"src":7227},[16,60355,7230],{},[24,60357,60358,60360],{},[27,60359,7235],{},[27,60361,7238],{},[82,60363,60364],{"className":7241,"code":7242,"language":7243,"meta":87,"style":87},[31,60365,60366,60376,60382,60390,60398,60406,60414,60422,60430],{"__ignoreMap":87},[91,60367,60368,60370,60372,60374],{"class":93,"line":94},[91,60369,7250],{"class":101},[91,60371,1238],{"class":159},[91,60373,112],{"class":101},[91,60375,7257],{"class":169},[91,60377,60378,60380],{"class":93,"line":105},[91,60379,7262],{"class":159},[91,60381,7265],{"class":101},[91,60383,60384,60386,60388],{"class":93,"line":121},[91,60385,7270],{"class":159},[91,60387,112],{"class":101},[91,60389,7275],{"class":169},[91,60391,60392,60394,60396],{"class":93,"line":134},[91,60393,7280],{"class":159},[91,60395,112],{"class":101},[91,60397,7285],{"class":169},[91,60399,60400,60402,60404],{"class":93,"line":228},[91,60401,7290],{"class":159},[91,60403,112],{"class":101},[91,60405,7295],{"class":169},[91,60407,60408,60410,60412],{"class":93,"line":250},[91,60409,7300],{"class":159},[91,60411,112],{"class":101},[91,60413,7305],{"class":169},[91,60415,60416,60418,60420],{"class":93,"line":260},[91,60417,7310],{"class":159},[91,60419,112],{"class":101},[91,60421,7315],{"class":169},[91,60423,60424,60426,60428],{"class":93,"line":274},[91,60425,7320],{"class":159},[91,60427,112],{"class":101},[91,60429,7325],{"class":566},[91,60431,60432],{"class":93,"line":284},[91,60433,7330],{"class":169},[16,60435,7333,60436,7337],{},[31,60437,7336],{},[82,60439,60440],{"className":7241,"code":7340,"language":7243,"meta":87,"style":87},[31,60441,60442,60448,60454,60464],{"__ignoreMap":87},[91,60443,60444,60446],{"class":93,"line":94},[91,60445,7347],{"class":159},[91,60447,7265],{"class":101},[91,60449,60450,60452],{"class":93,"line":105},[91,60451,7354],{"class":159},[91,60453,7265],{"class":101},[91,60455,60456,60458,60460,60462],{"class":93,"line":121},[91,60457,7361],{"class":159},[91,60459,112],{"class":101},[91,60461,7366],{"class":169},[91,60463,7369],{"class":1343},[91,60465,60466,60468,60470],{"class":93,"line":134},[91,60467,7374],{"class":159},[91,60469,112],{"class":101},[91,60471,7379],{"class":169},[16,60473,7382,60474,7386],{},[31,60475,7385],{},[16,60477,60478],{},[19,60479],{"alt":87,"src":7391},[16,60481,7394],{},[829,60483,7397],{},{"title":87,"searchDepth":105,"depth":105,"links":60485},[],{},{"title":7209,"description":7401},{"loc":7404},[7409,7203],{"id":7412,"title":7413,"body":60491,"created":8606,"description":8607,"extension":843,"filename":8608,"meta":61439,"navigation":846,"path":8610,"seo":61440,"sitemap":61441,"stem":8613,"subject":8614,"tags":61442,"updated":8606,"volume":853,"__hash__":8619},{"type":8,"value":60492,"toc":61431},[60493,60499,60501,60511,60519,60617,60621,60623,60627,60631,60633,60635,61043,61045,61049,61053,61291,61297,61307,61309,61313,61345,61349,61379,61385,61387,61391,61395,61397,61399,61407,61413,61419,61421,61423,61425,61427,61429],[16,60494,7418,60495,5321,60497,7425],{},[31,60496,7421],{},[31,60498,7424],{},[49,60500,7429],{"id":7428},[16,60502,7432,60503,2978,60505,7439,60507,7442,60509,7445],{},[31,60504,7435],{},[31,60506,7438],{},[31,60508,7421],{},[31,60510,7424],{},[16,60512,7448,60513,2978,60515,7455,60517,7459],{},[31,60514,7451],{},[31,60516,7454],{},[31,60518,7458],{},[82,60520,60521],{"className":7462,"code":7463,"language":7464,"meta":87,"style":87},[31,60522,60523,60535,60541,60557,60569,60573,60577,60585,60593,60601,60609,60613],{"__ignoreMap":87},[91,60524,60525,60527,60529,60531,60533],{"class":93,"line":94},[91,60526,7471],{"class":566},[91,60528,7474],{"class":97},[91,60530,795],{"class":101},[91,60532,7479],{"class":1172},[91,60534,3866],{"class":101},[91,60536,60537,60539],{"class":93,"line":105},[91,60538,2695],{"class":566},[91,60540,7488],{"class":101},[91,60542,60543,60545,60547,60549,60551,60553,60555],{"class":93,"line":121},[91,60544,7493],{"class":101},[91,60546,7496],{"class":97},[91,60548,795],{"class":101},[91,60550,7501],{"class":108},[91,60552,1235],{"class":101},[91,60554,7506],{"class":97},[91,60556,7509],{"class":101},[91,60558,60559,60561,60563,60565,60567],{"class":93,"line":134},[91,60560,7493],{"class":101},[91,60562,7516],{"class":97},[91,60564,7519],{"class":101},[91,60566,7501],{"class":108},[91,60568,1594],{"class":101},[91,60570,60571],{"class":93,"line":228},[91,60572,137],{"class":101},[91,60574,60575],{"class":93,"line":250},[91,60576,1450],{"emptyLinePlaceholder":846},[91,60578,60579,60581,60583],{"class":93,"line":260},[91,60580,7471],{"class":566},[91,60582,7538],{"class":97},[91,60584,2007],{"class":101},[91,60586,60587,60589,60591],{"class":93,"line":274},[91,60588,2695],{"class":566},[91,60590,7474],{"class":97},[91,60592,7549],{"class":101},[91,60594,60595,60597,60599],{"class":93,"line":284},[91,60596,7554],{"class":101},[91,60598,7557],{"class":108},[91,60600,7560],{"class":101},[91,60602,60603,60605,60607],{"class":93,"line":299},[91,60604,7565],{"class":101},[91,60606,7568],{"class":169},[91,60608,7560],{"class":101},[91,60610,60611],{"class":93,"line":319},[91,60612,7575],{"class":101},[91,60614,60615],{"class":93,"line":334},[91,60616,137],{"class":101},[16,60618,7582,60619,7586],{},[31,60620,7585],{},[49,60622,7590],{"id":7589},[16,60624,7593,60625,7597],{},[31,60626,7596],{},[16,60628,60629],{},[19,60630],{"alt":7590,"src":7602},[16,60632,7605],{},[49,60634,7609],{"id":7608},[82,60636,60637],{"className":7462,"code":7612,"language":7464,"meta":87,"style":87},[31,60638,60639,60651,60663,60667,60679,60685,60697,60709,60713,60719,60723,60731,60739,60747,60751,60759,60767,60771,60779,60787,60791,60795,60799,60803,60807,60819,60841,60855,60859,60863,60875,60879,60883,60895,60907,60911,60943,60957,60961,60965,60971,61001,61005,61035,61039],{"__ignoreMap":87},[91,60640,60641,60643,60645,60647,60649],{"class":93,"line":94},[91,60642,1968],{"class":566},[91,60644,7621],{"class":108},[91,60646,1366],{"class":566},[91,60648,7626],{"class":169},[91,60650,118],{"class":101},[91,60652,60653,60655,60657,60659,60661],{"class":93,"line":105},[91,60654,1968],{"class":566},[91,60656,7635],{"class":108},[91,60658,1366],{"class":566},[91,60660,7640],{"class":169},[91,60662,118],{"class":101},[91,60664,60665],{"class":93,"line":121},[91,60666,1450],{"emptyLinePlaceholder":846},[91,60668,60669,60671,60673,60675,60677],{"class":93,"line":134},[91,60670,7471],{"class":566},[91,60672,7653],{"class":97},[91,60674,795],{"class":101},[91,60676,7658],{"class":1172},[91,60678,3866],{"class":101},[91,60680,60681,60683],{"class":93,"line":228},[91,60682,2012],{"class":566},[91,60684,102],{"class":101},[91,60686,60687,60689,60691,60693,60695],{"class":93,"line":250},[91,60688,1382],{"class":566},[91,60690,7673],{"class":108},[91,60692,1366],{"class":566},[91,60694,7678],{"class":97},[91,60696,7681],{"class":101},[91,60698,60699,60701,60703,60705,60707],{"class":93,"line":260},[91,60700,1382],{"class":566},[91,60702,7688],{"class":108},[91,60704,1366],{"class":566},[91,60706,7693],{"class":97},[91,60708,7696],{"class":101},[91,60710,60711],{"class":93,"line":274},[91,60712,1450],{"emptyLinePlaceholder":846},[91,60714,60715,60717],{"class":93,"line":284},[91,60716,7705],{"class":97},[91,60718,7708],{"class":101},[91,60720,60721],{"class":93,"line":299},[91,60722,1450],{"emptyLinePlaceholder":846},[91,60724,60725,60727,60729],{"class":93,"line":319},[91,60726,7717],{"class":566},[91,60728,7474],{"class":97},[91,60730,7549],{"class":101},[91,60732,60733,60735,60737],{"class":93,"line":334},[91,60734,7726],{"class":101},[91,60736,7557],{"class":108},[91,60738,7560],{"class":101},[91,60740,60741,60743,60745],{"class":93,"line":355},[91,60742,7735],{"class":101},[91,60744,7738],{"class":169},[91,60746,7560],{"class":101},[91,60748,60749],{"class":93,"line":364},[91,60750,7745],{"class":101},[91,60752,60753,60755,60757],{"class":93,"line":378},[91,60754,2053],{"class":101},[91,60756,1256],{"class":566},[91,60758,2058],{"class":101},[91,60760,60761,60763,60765],{"class":93,"line":387},[91,60762,2454],{"class":101},[91,60764,1261],{"class":97},[91,60766,2068],{"class":101},[91,60768,60769],{"class":93,"line":402},[91,60770,1450],{"emptyLinePlaceholder":846},[91,60772,60773,60775,60777],{"class":93,"line":422},[91,60774,7717],{"class":566},[91,60776,7474],{"class":97},[91,60778,7549],{"class":101},[91,60780,60781,60783,60785],{"class":93,"line":438},[91,60782,7726],{"class":101},[91,60784,7780],{"class":108},[91,60786,7560],{"class":101},[91,60788,60789],{"class":93,"line":458},[91,60790,7787],{"class":101},[91,60792,60793],{"class":93,"line":467},[91,60794,7745],{"class":101},[91,60796,60797],{"class":93,"line":481},[91,60798,1698],{"class":101},[91,60800,60801],{"class":93,"line":490},[91,60802,137],{"class":101},[91,60804,60805],{"class":93,"line":3310},[91,60806,1450],{"emptyLinePlaceholder":846},[91,60808,60809,60811,60813,60815,60817],{"class":93,"line":3315},[91,60810,7471],{"class":566},[91,60812,7678],{"class":97},[91,60814,795],{"class":101},[91,60816,7658],{"class":1172},[91,60818,3866],{"class":101},[91,60820,60821,60823,60825,60827,60829,60831,60833,60835,60837,60839],{"class":93,"line":3321},[91,60822,2439],{"class":566},[91,60824,2662],{"class":101},[91,60826,2665],{"class":566},[91,60828,7826],{"class":101},[91,60830,7829],{"class":566},[91,60832,7832],{"class":566},[91,60834,7835],{"class":101},[91,60836,7829],{"class":566},[91,60838,7832],{"class":566},[91,60840,7842],{"class":101},[91,60842,60843,60845,60847,60849,60851,60853],{"class":93,"line":3327},[91,60844,2673],{"class":566},[91,60846,2676],{"class":566},[91,60848,2679],{"class":97},[91,60850,795],{"class":101},[91,60852,7855],{"class":169},[91,60854,1594],{"class":101},[91,60856,60857],{"class":93,"line":3333},[91,60858,1698],{"class":101},[91,60860,60861],{"class":93,"line":3338},[91,60862,1450],{"emptyLinePlaceholder":846},[91,60864,60865,60867,60869,60871,60873],{"class":93,"line":3343},[91,60866,2695],{"class":566},[91,60868,7872],{"class":108},[91,60870,1235],{"class":101},[91,60872,1189],{"class":97},[91,60874,7879],{"class":101},[91,60876,60877],{"class":93,"line":7882},[91,60878,137],{"class":101},[91,60880,60881],{"class":93,"line":7887},[91,60882,1450],{"emptyLinePlaceholder":846},[91,60884,60885,60887,60889,60891,60893],{"class":93,"line":7892},[91,60886,7471],{"class":566},[91,60888,7693],{"class":97},[91,60890,795],{"class":101},[91,60892,7901],{"class":1172},[91,60894,3866],{"class":101},[91,60896,60897,60899,60901,60903,60905],{"class":93,"line":7906},[91,60898,2641],{"class":566},[91,60900,7911],{"class":108},[91,60902,1366],{"class":566},[91,60904,7916],{"class":97},[91,60906,7919],{"class":101},[91,60908,60909],{"class":93,"line":7922},[91,60910,1450],{"emptyLinePlaceholder":846},[91,60912,60913,60915,60917,60919,60921,60923,60925,60927,60929,60931,60933,60935,60937,60939,60941],{"class":93,"line":7927},[91,60914,2439],{"class":566},[91,60916,2662],{"class":101},[91,60918,2665],{"class":566},[91,60920,7936],{"class":101},[91,60922,7939],{"class":97},[91,60924,7942],{"class":101},[91,60926,7829],{"class":566},[91,60928,7947],{"class":101},[91,60930,156],{"class":566},[91,60932,6594],{"class":108},[91,60934,7954],{"class":566},[91,60936,7947],{"class":101},[91,60938,7959],{"class":566},[91,60940,7962],{"class":108},[91,60942,3866],{"class":101},[91,60944,60945,60947,60949,60951,60953,60955],{"class":93,"line":7967},[91,60946,2673],{"class":566},[91,60948,2676],{"class":566},[91,60950,2679],{"class":97},[91,60952,795],{"class":101},[91,60954,7978],{"class":169},[91,60956,1594],{"class":101},[91,60958,60959],{"class":93,"line":7983},[91,60960,1698],{"class":101},[91,60962,60963],{"class":93,"line":7988},[91,60964,1450],{"emptyLinePlaceholder":846},[91,60966,60967,60969],{"class":93,"line":7993},[91,60968,2695],{"class":566},[91,60970,102],{"class":101},[91,60972,60973,60975,60977,60979,60981,60983,60985,60987,60989,60991,60993,60995,60997,60999],{"class":93,"line":8000},[91,60974,8003],{"class":101},[91,60976,8006],{"class":97},[91,60978,8009],{"class":101},[91,60980,7829],{"class":566},[91,60982,8014],{"class":169},[91,60984,8017],{"class":101},[91,60986,8020],{"class":97},[91,60988,8023],{"class":101},[91,60990,8026],{"class":97},[91,60992,795],{"class":101},[91,60994,1578],{"class":108},[91,60996,64],{"class":101},[91,60998,5637],{"class":108},[91,61000,8037],{"class":101},[91,61002,61003],{"class":93,"line":8040},[91,61004,8043],{"class":101},[91,61006,61007,61009,61011,61013,61015,61017,61019,61021,61023,61025,61027,61029,61031,61033],{"class":93,"line":8046},[91,61008,8049],{"class":101},[91,61010,8006],{"class":97},[91,61012,8054],{"class":101},[91,61014,7829],{"class":566},[91,61016,8014],{"class":169},[91,61018,8017],{"class":101},[91,61020,8020],{"class":97},[91,61022,8023],{"class":101},[91,61024,8026],{"class":97},[91,61026,795],{"class":101},[91,61028,1578],{"class":108},[91,61030,64],{"class":101},[91,61032,8075],{"class":108},[91,61034,8037],{"class":101},[91,61036,61037],{"class":93,"line":8080},[91,61038,8083],{"class":101},[91,61040,61041],{"class":93,"line":8086},[91,61042,137],{"class":101},[16,61044,8091],{},[16,61046,61047,8097],{},[31,61048,8096],{},[16,61050,8100,61051,8104],{},[31,61052,8103],{},[82,61054,61055],{"className":7462,"code":8107,"language":7464,"meta":87,"style":87},[31,61056,61057,61069,61083,61095,61099,61105,61123,61141,61145,61155,61173,61177,61181,61189,61197,61203,61207,61213,61217,61225,61233,61237,61241,61245,61257,61287],{"__ignoreMap":87},[91,61058,61059,61061,61063,61065,61067],{"class":93,"line":94},[91,61060,7471],{"class":566},[91,61062,8116],{"class":97},[91,61064,795],{"class":101},[91,61066,8121],{"class":1172},[91,61068,3866],{"class":101},[91,61070,61071,61073,61075,61077,61079,61081],{"class":93,"line":105},[91,61072,2641],{"class":566},[91,61074,8130],{"class":108},[91,61076,1366],{"class":566},[91,61078,8135],{"class":101},[91,61080,8138],{"class":97},[91,61082,2030],{"class":101},[91,61084,61085,61087,61089,61091,61093],{"class":93,"line":121},[91,61086,8145],{"class":101},[91,61088,8148],{"class":97},[91,61090,795],{"class":101},[91,61092,8153],{"class":108},[91,61094,1594],{"class":101},[91,61096,61097],{"class":93,"line":134},[91,61098,1450],{"emptyLinePlaceholder":846},[91,61100,61101,61103],{"class":93,"line":228},[91,61102,2012],{"class":566},[91,61104,102],{"class":101},[91,61106,61107,61109,61111,61113,61115,61117,61119,61121],{"class":93,"line":250},[91,61108,1382],{"class":566},[91,61110,8172],{"class":108},[91,61112,1366],{"class":566},[91,61114,8177],{"class":101},[91,61116,8180],{"class":97},[91,61118,795],{"class":101},[91,61120,8185],{"class":108},[91,61122,1594],{"class":101},[91,61124,61125,61127,61129,61131,61133,61135,61137,61139],{"class":93,"line":260},[91,61126,1382],{"class":566},[91,61128,8194],{"class":108},[91,61130,1366],{"class":566},[91,61132,8199],{"class":101},[91,61134,8202],{"class":97},[91,61136,795],{"class":101},[91,61138,8207],{"class":108},[91,61140,1594],{"class":101},[91,61142,61143],{"class":93,"line":274},[91,61144,1450],{"emptyLinePlaceholder":846},[91,61146,61147,61149,61151,61153],{"class":93,"line":284},[91,61148,8218],{"class":566},[91,61150,2662],{"class":101},[91,61152,2665],{"class":566},[91,61154,8225],{"class":101},[91,61156,61157,61159,61161,61163,61165,61167,61169,61171],{"class":93,"line":299},[91,61158,8230],{"class":566},[91,61160,2676],{"class":566},[91,61162,2679],{"class":97},[91,61164,795],{"class":101},[91,61166,8239],{"class":169},[91,61168,8207],{"class":108},[91,61170,1241],{"class":169},[91,61172,1594],{"class":101},[91,61174,61175],{"class":93,"line":319},[91,61176,1693],{"class":101},[91,61178,61179],{"class":93,"line":334},[91,61180,1450],{"emptyLinePlaceholder":846},[91,61182,61183,61185,61187],{"class":93,"line":355},[91,61184,8258],{"class":101},[91,61186,8261],{"class":97},[91,61188,8264],{"class":101},[91,61190,61191,61193,61195],{"class":93,"line":364},[91,61192,8269],{"class":566},[91,61194,8272],{"class":97},[91,61196,8275],{"class":101},[91,61198,61199,61201],{"class":93,"line":378},[91,61200,8280],{"class":97},[91,61202,8283],{"class":101},[91,61204,61205],{"class":93,"line":387},[91,61206,8288],{"class":101},[91,61208,61209,61211],{"class":93,"line":402},[91,61210,8280],{"class":97},[91,61212,8295],{"class":101},[91,61214,61215],{"class":93,"line":422},[91,61216,8300],{"class":101},[91,61218,61219,61221,61223],{"class":93,"line":438},[91,61220,2053],{"class":101},[91,61222,8307],{"class":566},[91,61224,102],{"class":101},[91,61226,61227,61229,61231],{"class":93,"line":458},[91,61228,8314],{"class":101},[91,61230,8317],{"class":97},[91,61232,2030],{"class":101},[91,61234,61235],{"class":93,"line":467},[91,61236,1698],{"class":101},[91,61238,61239],{"class":93,"line":481},[91,61240,137],{"class":101},[91,61242,61243],{"class":93,"line":490},[91,61244,1450],{"emptyLinePlaceholder":846},[91,61246,61247,61249,61251,61253,61255],{"class":93,"line":3310},[91,61248,7471],{"class":566},[91,61250,8338],{"class":97},[91,61252,795],{"class":101},[91,61254,8343],{"class":1172},[91,61256,3866],{"class":101},[91,61258,61259,61261,61263,61265,61267,61269,61271,61273,61275,61277,61279,61281,61283,61285],{"class":93,"line":3315},[91,61260,2695],{"class":566},[91,61262,8352],{"class":169},[91,61264,8355],{"class":566},[91,61266,8358],{"class":108},[91,61268,8361],{"class":169},[91,61270,1235],{"class":101},[91,61272,8366],{"class":97},[91,61274,8369],{"class":101},[91,61276,8372],{"class":566},[91,61278,8375],{"class":169},[91,61280,8343],{"class":101},[91,61282,1241],{"class":169},[91,61284,2131],{"class":566},[91,61286,8384],{"class":101},[91,61288,61289],{"class":93,"line":3321},[91,61290,137],{"class":101},[16,61292,8391,61293,8395,61295,8398],{},[31,61294,8394],{},[31,61296,8307],{},[16,61298,8401,61299,64,61301,64,61303,64,61305,8413],{},[31,61300,166],{},[31,61302,8406],{},[31,61304,8409],{},[31,61306,8412],{},[49,61308,8417],{"id":8416},[16,61310,8420,61311,8424],{},[31,61312,8423],{},[82,61314,61315],{"className":8427,"code":8428,"language":8429,"meta":87,"style":87},[31,61316,61317,61325,61333,61341],{"__ignoreMap":87},[91,61318,61319,61321,61323],{"class":93,"line":94},[91,61320,8436],{"class":97},[91,61322,8439],{"class":108},[91,61324,8442],{"class":108},[91,61326,61327,61329,61331],{"class":93,"line":105},[91,61328,8447],{"class":108},[91,61330,8450],{"class":169},[91,61332,8442],{"class":108},[91,61334,61335,61337,61339],{"class":93,"line":121},[91,61336,8457],{"class":108},[91,61338,8460],{"class":169},[91,61340,8442],{"class":108},[91,61342,61343],{"class":93,"line":134},[91,61344,8467],{"class":169},[16,61346,8470,61347,8474],{},[31,61348,8473],{},[82,61350,61351],{"className":8477,"code":8478,"language":8479,"meta":87,"style":87},[31,61352,61353,61357,61367,61375],{"__ignoreMap":87},[91,61354,61355],{"class":93,"line":94},[91,61356,8486],{"class":101},[91,61358,61359,61361,61363,61365],{"class":93,"line":105},[91,61360,8491],{"class":108},[91,61362,112],{"class":101},[91,61364,7557],{"class":108},[91,61366,7560],{"class":101},[91,61368,61369,61371,61373],{"class":93,"line":121},[91,61370,8502],{"class":108},[91,61372,112],{"class":101},[91,61374,8507],{"class":169},[91,61376,61377],{"class":93,"line":134},[91,61378,137],{"class":101},[16,61380,61381,4115,61383,8519],{},[31,61382,8436],{},[31,61384,8518],{},[49,61386,8523],{"id":8522},[16,61388,61389],{},[19,61390],{"alt":8528,"src":8529},[16,61392,8532,61393,8536],{},[31,61394,8535],{},[16,61396,8539],{},[16,61398,8542],{},[24,61400,61401,61403,61405],{},[27,61402,8547],{},[27,61404,8550],{},[27,61406,8553],{},[1722,61408,61409],{},[16,61410,61411,8561],{},[91,61412,8560],{},[16,61414,8564,61415,8567,61417,8571],{},[31,61416,8423],{},[31,61418,8570],{},[49,61420,6005],{"id":6004},[1112,61422],{"description":8576,"host":8577,"title":8578,"url":8579},[1112,61424],{"description":8582,"host":8577,"title":8583,"url":8584},[1112,61426],{"description":8587,"host":8577,"title":8588,"url":8589},[1112,61428],{"description":8592,"host":8577,"title":8593,"url":8594},[829,61430,8597],{},{"title":87,"searchDepth":105,"depth":105,"links":61432},[61433,61434,61435,61436,61437,61438],{"id":7428,"depth":105,"text":7429},{"id":7589,"depth":105,"text":7590},{"id":7608,"depth":105,"text":7609},{"id":8416,"depth":105,"text":8417},{"id":8522,"depth":105,"text":8523},{"id":6004,"depth":105,"text":6005},{},{"title":7413,"description":8607},{"loc":8610},[8616,8617,8618,2865],{"id":8621,"title":8622,"body":61444,"created":9114,"description":9115,"extension":843,"filename":9116,"meta":61823,"navigation":846,"path":9118,"seo":61824,"sitemap":61825,"stem":9121,"subject":9122,"tags":61826,"updated":9114,"volume":853,"__hash__":9126},{"type":8,"value":61445,"toc":61811},[61446,61448,61450,61452,61454,61478,61480,61498,61500,61502,61540,61544,61546,61550,61555,61557,61757,61759,61771,61773,61777,61781,61783,61785,61787,61793,61795,61797,61799,61801,61803,61805,61807,61809],[1112,61447],{"description":8627,"favicon":1320,"host":1317,"image":8628,"title":8629,"url":8630},[16,61449,8633],{},[16,61451,8636],{},[49,61453,8640],{"id":8639},[82,61455,61456],{"className":6839,"code":8643,"language":6841,"meta":87,"style":87},[31,61457,61458,61468],{"__ignoreMap":87},[91,61459,61460,61462,61464,61466],{"class":93,"line":94},[91,61461,8650],{"class":97},[91,61463,8653],{"class":169},[91,61465,8656],{"class":169},[91,61467,8659],{"class":169},[91,61469,61470,61472,61474,61476],{"class":93,"line":105},[91,61471,8664],{"class":97},[91,61473,8667],{"class":169},[91,61475,8670],{"class":108},[91,61477,8673],{"class":108},[16,61479,8676],{},[82,61481,61482],{"className":6839,"code":8679,"language":6841,"meta":87,"style":87},[31,61483,61484,61494],{"__ignoreMap":87},[91,61485,61486,61488,61490,61492],{"class":93,"line":94},[91,61487,2574],{"class":566},[91,61489,8688],{"class":101},[91,61491,166],{"class":566},[91,61493,8693],{"class":101},[91,61495,61496],{"class":93,"line":105},[91,61497,8698],{"class":97},[16,61499,8701],{},[49,61501,8705],{"id":8704},[82,61503,61504],{"className":6839,"code":8708,"language":6841,"meta":87,"style":87},[31,61505,61506,61512,61516,61520,61530,61534],{"__ignoreMap":87},[91,61507,61508,61510],{"class":93,"line":94},[91,61509,8715],{"class":97},[91,61511,8718],{"class":169},[91,61513,61514],{"class":93,"line":105},[91,61515,8723],{"class":101},[91,61517,61518],{"class":93,"line":121},[91,61519,8728],{"class":1343},[91,61521,61522,61524,61526,61528],{"class":93,"line":134},[91,61523,2574],{"class":566},[91,61525,8688],{"class":101},[91,61527,166],{"class":566},[91,61529,8693],{"class":101},[91,61531,61532],{"class":93,"line":228},[91,61533,8723],{"class":101},[91,61535,61536,61538],{"class":93,"line":250},[91,61537,8747],{"class":108},[91,61539,8718],{"class":169},[16,61541,8752,61542,8756],{},[31,61543,8755],{},[49,61545,8760],{"id":8759},[16,61547,8763,61548,8767],{},[31,61549,8766],{},[82,61551,61553],{"className":61552,"code":8771,"language":1099},[1097],[31,61554,8771],{"__ignoreMap":87},[16,61556,8776],{},[82,61558,61559],{"className":8477,"code":8779,"language":8479,"meta":87,"style":87},[31,61560,61561,61567,61577,61587,61597,61603,61613,61623,61633,61643,61653,61663,61671,61675,61681,61691,61701,61711,61721,61727,61737,61745,61749,61753],{"__ignoreMap":87},[91,61562,61563,61565],{"class":93,"line":94},[91,61564,8786],{"class":169},[91,61566,8789],{"class":101},[91,61568,61569,61571,61573,61575],{"class":93,"line":105},[91,61570,8794],{"class":108},[91,61572,112],{"class":101},[91,61574,8799],{"class":169},[91,61576,7560],{"class":101},[91,61578,61579,61581,61583,61585],{"class":93,"line":121},[91,61580,8806],{"class":108},[91,61582,112],{"class":101},[91,61584,8811],{"class":108},[91,61586,7560],{"class":101},[91,61588,61589,61591,61593,61595],{"class":93,"line":134},[91,61590,8818],{"class":108},[91,61592,112],{"class":101},[91,61594,8823],{"class":169},[91,61596,7560],{"class":101},[91,61598,61599,61601],{"class":93,"line":228},[91,61600,8830],{"class":108},[91,61602,8789],{"class":101},[91,61604,61605,61607,61609,61611],{"class":93,"line":250},[91,61606,8837],{"class":108},[91,61608,112],{"class":101},[91,61610,8842],{"class":108},[91,61612,7560],{"class":101},[91,61614,61615,61617,61619,61621],{"class":93,"line":260},[91,61616,8849],{"class":108},[91,61618,112],{"class":101},[91,61620,8854],{"class":108},[91,61622,7560],{"class":101},[91,61624,61625,61627,61629,61631],{"class":93,"line":274},[91,61626,8861],{"class":108},[91,61628,112],{"class":101},[91,61630,8866],{"class":108},[91,61632,7560],{"class":101},[91,61634,61635,61637,61639,61641],{"class":93,"line":284},[91,61636,8873],{"class":108},[91,61638,112],{"class":101},[91,61640,8878],{"class":169},[91,61642,7560],{"class":101},[91,61644,61645,61647,61649,61651],{"class":93,"line":299},[91,61646,8885],{"class":108},[91,61648,112],{"class":101},[91,61650,8890],{"class":108},[91,61652,7560],{"class":101},[91,61654,61655,61657,61659,61661],{"class":93,"line":319},[91,61656,8897],{"class":108},[91,61658,112],{"class":101},[91,61660,8890],{"class":108},[91,61662,7560],{"class":101},[91,61664,61665,61667,61669],{"class":93,"line":334},[91,61666,8908],{"class":108},[91,61668,112],{"class":101},[91,61670,8913],{"class":108},[91,61672,61673],{"class":93,"line":355},[91,61674,3477],{"class":101},[91,61676,61677,61679],{"class":93,"line":364},[91,61678,8922],{"class":108},[91,61680,8789],{"class":101},[91,61682,61683,61685,61687,61689],{"class":93,"line":378},[91,61684,8929],{"class":108},[91,61686,112],{"class":101},[91,61688,8934],{"class":108},[91,61690,7560],{"class":101},[91,61692,61693,61695,61697,61699],{"class":93,"line":387},[91,61694,8941],{"class":108},[91,61696,112],{"class":101},[91,61698,8946],{"class":108},[91,61700,7560],{"class":101},[91,61702,61703,61705,61707,61709],{"class":93,"line":402},[91,61704,8953],{"class":108},[91,61706,112],{"class":101},[91,61708,8958],{"class":108},[91,61710,7560],{"class":101},[91,61712,61713,61715,61717,61719],{"class":93,"line":422},[91,61714,8965],{"class":108},[91,61716,112],{"class":101},[91,61718,8970],{"class":108},[91,61720,7560],{"class":101},[91,61722,61723,61725],{"class":93,"line":438},[91,61724,8977],{"class":108},[91,61726,8789],{"class":101},[91,61728,61729,61731,61733,61735],{"class":93,"line":458},[91,61730,8984],{"class":108},[91,61732,112],{"class":101},[91,61734,8989],{"class":108},[91,61736,7560],{"class":101},[91,61738,61739,61741,61743],{"class":93,"line":467},[91,61740,8996],{"class":108},[91,61742,112],{"class":101},[91,61744,9001],{"class":108},[91,61746,61747],{"class":93,"line":481},[91,61748,3307],{"class":101},[91,61750,61751],{"class":93,"line":490},[91,61752,1693],{"class":101},[91,61754,61755],{"class":93,"line":3310},[91,61756,137],{"class":101},[16,61758,9016],{},[24,61760,61761,61767,61769],{},[27,61762,61763,9024,61765,9028],{},[31,61764,9023],{},[31,61766,9027],{},[27,61768,9031],{},[27,61770,9034],{},[16,61772,9037],{},[16,61774,61775],{},[19,61776],{"alt":87,"src":9042},[16,61778,9045,61779,9049],{},[31,61780,9048],{},[49,61782,9053],{"id":9052},[16,61784,9056],{},[757,61786,9060],{"id":9059},[16,61788,9063,61789,64,61791,9070],{},[31,61790,9066],{},[31,61792,9069],{},[757,61794,9074],{"id":9073},[16,61796,9077],{},[757,61798,9081],{"id":9080},[16,61800,9084],{},[757,61802,9088],{"id":9087},[16,61804,9091],{},[757,61806,9095],{"id":9094},[16,61808,9098],{},[829,61810,9101],{},{"title":87,"searchDepth":105,"depth":105,"links":61812},[61813,61814,61815,61816],{"id":8639,"depth":105,"text":8640},{"id":8704,"depth":105,"text":8705},{"id":8759,"depth":105,"text":8760},{"id":9052,"depth":105,"text":9053,"children":61817},[61818,61819,61820,61821,61822],{"id":9059,"depth":121,"text":9060},{"id":9073,"depth":121,"text":9074},{"id":9080,"depth":121,"text":9081},{"id":9087,"depth":121,"text":9088},{"id":9094,"depth":121,"text":9095},{},{"title":8622,"description":9115},{"loc":9118},[9124,8755,9125,8664],{"id":9128,"title":9129,"body":61828,"created":6033,"description":10132,"extension":843,"filename":10133,"meta":62642,"navigation":846,"path":10135,"seo":62643,"sitemap":62644,"stem":10138,"subject":10139,"tags":62645,"updated":6033,"volume":853,"__hash__":10143},{"type":8,"value":61829,"toc":62636},[61830,61838,61912,61914,61916,61966,61968,62076,62090,62092,62094,62228,62230,62234,62240,62242,62294,62298,62376,62386,62388,62394,62400,62402,62404,62406,62492,62496,62626,62632,62634],[16,61831,9134,61832,9138,61834,9142,61836,9146],{},[31,61833,9137],{},[31,61835,9141],{},[31,61837,9145],{},[812,61839,61840,61854],{},[3001,61841,61842],{},[3004,61843,61844,61846,61848,61850,61852],{},[3007,61845,9155],{},[3007,61847,9158],{},[3007,61849,9161],{},[3007,61851,9164],{},[3007,61853,9167],{},[3017,61855,61856,61872,61886,61900],{},[3004,61857,61858,61862,61864,61866,61870],{},[3022,61859,61860,9176],{},[31,61861,9137],{},[3022,61863,9179],{},[3022,61865,9182],{},[3022,61867,61868,9188],{},[31,61869,9187],{},[3022,61871,9191],{},[3004,61873,61874,61878,61880,61882,61884],{},[3022,61875,61876],{},[31,61877,9141],{},[3022,61879,9200],{},[3022,61881,9182],{},[3022,61883,9205],{},[3022,61885,9191],{},[3004,61887,61888,61892,61894,61896,61898],{},[3022,61889,61890],{},[31,61891,9145],{},[3022,61893,9216],{},[3022,61895,9219],{},[3022,61897,9205],{},[3022,61899,9224],{},[3004,61901,61902,61904,61906,61908,61910],{},[3022,61903,9229],{},[3022,61905,9232],{},[3022,61907,9235],{},[3022,61909,9205],{},[3022,61911,9240],{},[49,61913,9244],{"id":9243},[1112,61915],{"description":9247,"favicon":9248,"host":5541,"title":9249,"url":9250},[82,61917,61918],{"className":1154,"code":9253,"language":1156,"meta":87,"style":87},[31,61919,61920,61928,61934,61952,61956,61960],{"__ignoreMap":87},[91,61921,61922,61924,61926],{"class":93,"line":94},[91,61923,9260],{"class":101},[91,61925,9263],{"class":97},[91,61927,9266],{"class":101},[91,61929,61930,61932],{"class":93,"line":105},[91,61931,9271],{"class":169},[91,61933,7560],{"class":101},[91,61935,61936,61938,61940,61942,61944,61946,61948,61950],{"class":93,"line":121},[91,61937,9278],{"class":108},[91,61939,1235],{"class":101},[91,61941,7506],{"class":97},[91,61943,9285],{"class":101},[91,61945,9288],{"class":169},[91,61947,9291],{"class":101},[91,61949,9294],{"class":97},[91,61951,9297],{"class":101},[91,61953,61954],{"class":93,"line":134},[91,61955,3487],{"class":101},[91,61957,61958],{"class":93,"line":228},[91,61959,1450],{"emptyLinePlaceholder":846},[91,61961,61962,61964],{"class":93,"line":250},[91,61963,9310],{"class":97},[91,61965,9313],{"class":101},[16,61967,9316],{},[82,61969,61970],{"className":1154,"code":9319,"language":1156,"meta":87,"style":87},[31,61971,61972,61992,62004,62026,62030,62046,62050,62062,62068,62072],{"__ignoreMap":87},[91,61973,61974,61976,61978,61980,61982,61984,61986,61988,61990],{"class":93,"line":94},[91,61975,9326],{"class":101},[91,61977,9329],{"class":97},[91,61979,795],{"class":101},[91,61981,9334],{"class":169},[91,61983,9337],{"class":101},[91,61985,9340],{"class":1172},[91,61987,1176],{"class":101},[91,61989,1179],{"class":566},[91,61991,102],{"class":101},[91,61993,61994,61996,61998,62000,62002],{"class":93,"line":105},[91,61995,2439],{"class":566},[91,61997,9353],{"class":101},[91,61999,9356],{"class":566},[91,62001,9359],{"class":101},[91,62003,9362],{"class":566},[91,62005,62006,62008,62010,62012,62014,62016,62018,62020,62022,62024],{"class":93,"line":121},[91,62007,2439],{"class":566},[91,62009,9369],{"class":101},[91,62011,9356],{"class":566},[91,62013,9374],{"class":169},[91,62015,7954],{"class":566},[91,62017,9379],{"class":101},[91,62019,9382],{"class":566},[91,62021,1363],{"class":108},[91,62023,1176],{"class":101},[91,62025,9362],{"class":566},[91,62027,62028],{"class":93,"line":134},[91,62029,1450],{"emptyLinePlaceholder":846},[91,62031,62032,62034,62036,62038,62040,62042,62044],{"class":93,"line":228},[91,62033,2641],{"class":566},[91,62035,9399],{"class":108},[91,62037,1366],{"class":566},[91,62039,7872],{"class":108},[91,62041,1235],{"class":101},[91,62043,1189],{"class":97},[91,62045,9410],{"class":101},[91,62047,62048],{"class":93,"line":250},[91,62049,1450],{"emptyLinePlaceholder":846},[91,62051,62052,62054,62056,62058,62060],{"class":93,"line":260},[91,62053,2439],{"class":566},[91,62055,9421],{"class":101},[91,62057,9382],{"class":566},[91,62059,9426],{"class":169},[91,62061,3866],{"class":101},[91,62063,62064,62066],{"class":93,"line":274},[91,62065,9433],{"class":97},[91,62067,9313],{"class":101},[91,62069,62070],{"class":93,"line":284},[91,62071,1698],{"class":101},[91,62073,62074],{"class":93,"line":299},[91,62075,9444],{"class":101},[16,62077,62078,9449,62080,64,62082,64,62084,64,62086,9462,62088,9465],{},[31,62079,9137],{},[31,62081,9452],{},[31,62083,9455],{},[31,62085,9458],{},[31,62087,9461],{},[31,62089,5177],{},[49,62091,9141],{"id":9468},[1112,62093],{"description":9471,"favicon":9248,"host":5541,"title":9472,"url":9473},[82,62095,62096],{"className":1154,"code":9476,"language":1156,"meta":87,"style":87},[31,62097,62098,62116,62120,62140,62152,62158,62162,62166,62170,62178,62184,62196,62200,62204],{"__ignoreMap":87},[91,62099,62100,62102,62104,62106,62108,62110,62112,62114],{"class":93,"line":94},[91,62101,1968],{"class":566},[91,62103,9485],{"class":108},[91,62105,1366],{"class":566},[91,62107,2676],{"class":566},[91,62109,9492],{"class":97},[91,62111,795],{"class":101},[91,62113,9497],{"class":169},[91,62115,3487],{"class":101},[91,62117,62118],{"class":93,"line":105},[91,62119,1450],{"emptyLinePlaceholder":846},[91,62121,62122,62124,62126,62128,62130,62132,62134,62136,62138],{"class":93,"line":121},[91,62123,9508],{"class":101},[91,62125,9329],{"class":97},[91,62127,795],{"class":101},[91,62129,9515],{"class":169},[91,62131,9337],{"class":101},[91,62133,9340],{"class":1172},[91,62135,1176],{"class":101},[91,62137,1179],{"class":566},[91,62139,102],{"class":101},[91,62141,62142,62144,62146,62148,62150],{"class":93,"line":134},[91,62143,2439],{"class":566},[91,62145,9532],{"class":101},[91,62147,9382],{"class":566},[91,62149,9537],{"class":169},[91,62151,3866],{"class":101},[91,62153,62154,62156],{"class":93,"line":228},[91,62155,9433],{"class":97},[91,62157,9313],{"class":101},[91,62159,62160],{"class":93,"line":250},[91,62161,1698],{"class":101},[91,62163,62164],{"class":93,"line":260},[91,62165,9444],{"class":101},[91,62167,62168],{"class":93,"line":274},[91,62169,1450],{"emptyLinePlaceholder":846},[91,62171,62172,62174,62176],{"class":93,"line":284},[91,62173,7471],{"class":566},[91,62175,9564],{"class":97},[91,62177,2007],{"class":101},[91,62179,62180,62182],{"class":93,"line":299},[91,62181,9571],{"class":97},[91,62183,9313],{"class":101},[91,62185,62186,62188,62190,62192,62194],{"class":93,"line":319},[91,62187,9578],{"class":101},[91,62189,9581],{"class":97},[91,62191,9584],{"class":101},[91,62193,9587],{"class":169},[91,62195,9590],{"class":101},[91,62197,62198],{"class":93,"line":334},[91,62199,137],{"class":101},[91,62201,62202],{"class":93,"line":355},[91,62203,1450],{"emptyLinePlaceholder":846},[91,62205,62206,62208,62210,62212,62214,62216,62218,62220,62222,62224,62226],{"class":93,"line":364},[91,62207,9326],{"class":101},[91,62209,9329],{"class":97},[91,62211,795],{"class":101},[91,62213,9609],{"class":169},[91,62215,9612],{"class":101},[91,62217,1179],{"class":566},[91,62219,9617],{"class":101},[91,62221,9620],{"class":97},[91,62223,9623],{"class":101},[91,62225,7557],{"class":108},[91,62227,9590],{"class":101},[16,62229,9630],{},[16,62231,62232],{},[19,62233],{"alt":9635,"src":9636},[16,62235,9639,62236,9642,62238,9646],{},[31,62237,9141],{},[31,62239,9645],{},[49,62241,9650],{"id":9649},[82,62243,62244],{"className":1154,"code":9653,"language":1156,"meta":87,"style":87},[31,62245,62246,62264,62268,62276,62284,62290],{"__ignoreMap":87},[91,62247,62248,62250,62252,62254,62256,62258,62260,62262],{"class":93,"line":94},[91,62249,1968],{"class":566},[91,62251,9662],{"class":108},[91,62253,1366],{"class":566},[91,62255,5049],{"class":101},[91,62257,9669],{"class":97},[91,62259,795],{"class":101},[91,62261,9674],{"class":169},[91,62263,3487],{"class":101},[91,62265,62266],{"class":93,"line":105},[91,62267,1450],{"emptyLinePlaceholder":846},[91,62269,62270,62272,62274],{"class":93,"line":121},[91,62271,9685],{"class":101},[91,62273,9581],{"class":97},[91,62275,9266],{"class":101},[91,62277,62278,62280,62282],{"class":93,"line":134},[91,62279,9694],{"class":101},[91,62281,9697],{"class":169},[91,62283,9700],{"class":101},[91,62285,62286,62288],{"class":93,"line":228},[91,62287,9705],{"class":169},[91,62289,7560],{"class":101},[91,62291,62292],{"class":93,"line":250},[91,62293,3487],{"class":101},[16,62295,62296,9717],{},[31,62297,9716],{},[82,62299,62300],{"className":1154,"code":9720,"language":1156,"meta":87,"style":87},[31,62301,62302,62322,62336,62348,62362,62366,62372],{"__ignoreMap":87},[91,62303,62304,62306,62308,62310,62312,62314,62316,62318,62320],{"class":93,"line":94},[91,62305,9326],{"class":101},[91,62307,9329],{"class":97},[91,62309,795],{"class":101},[91,62311,9515],{"class":169},[91,62313,9337],{"class":101},[91,62315,9340],{"class":1172},[91,62317,1176],{"class":101},[91,62319,1179],{"class":566},[91,62321,102],{"class":101},[91,62323,62324,62326,62328,62330,62332,62334],{"class":93,"line":105},[91,62325,2439],{"class":566},[91,62327,9749],{"class":101},[91,62329,9356],{"class":566},[91,62331,9754],{"class":169},[91,62333,1176],{"class":101},[91,62335,9362],{"class":566},[91,62337,62338,62340,62342,62344,62346],{"class":93,"line":121},[91,62339,2439],{"class":566},[91,62341,9765],{"class":101},[91,62343,9356],{"class":566},[91,62345,9770],{"class":101},[91,62347,9362],{"class":566},[91,62349,62350,62352,62354,62356,62358,62360],{"class":93,"line":134},[91,62351,2439],{"class":566},[91,62353,9532],{"class":101},[91,62355,9356],{"class":566},[91,62357,9783],{"class":169},[91,62359,1176],{"class":101},[91,62361,9362],{"class":566},[91,62363,62364],{"class":93,"line":228},[91,62365,1450],{"emptyLinePlaceholder":846},[91,62367,62368,62370],{"class":93,"line":250},[91,62369,9796],{"class":97},[91,62371,9799],{"class":101},[91,62373,62374],{"class":93,"line":260},[91,62375,9444],{"class":101},[16,62377,62378,9809,62380,9812,62382,9816,62384,9819],{},[31,62379,9808],{},[31,62381,9141],{},[31,62383,9815],{},[31,62385,8747],{},[1112,62387],{"description":9822,"favicon":9248,"host":5541,"title":9823,"url":9824},[16,62389,9827,62390,9831,62392,9834],{},[31,62391,9830],{},[31,62393,6591],{},[16,62395,9837,62396,5427,62398,9842],{},[31,62397,9141],{},[31,62399,9137],{},[49,62401,9846],{"id":9845},[1112,62403],{"description":9849,"favicon":9248,"host":5541,"title":9850,"url":9851},[16,62405,9854],{},[82,62407,62408],{"className":1154,"code":9857,"language":1156,"meta":87,"style":87},[31,62409,62410,62414,62422,62430,62438,62442,62446,62466,62478,62484,62488],{"__ignoreMap":87},[91,62411,62412],{"class":93,"line":94},[91,62413,9864],{"class":1343},[91,62415,62416,62418,62420],{"class":93,"line":105},[91,62417,9869],{"class":101},[91,62419,9581],{"class":97},[91,62421,7549],{"class":101},[91,62423,62424,62426,62428],{"class":93,"line":121},[91,62425,9878],{"class":101},[91,62427,9881],{"class":169},[91,62429,7560],{"class":101},[91,62431,62432,62434,62436],{"class":93,"line":134},[91,62433,9888],{"class":101},[91,62435,9891],{"class":169},[91,62437,9700],{"class":101},[91,62439,62440],{"class":93,"line":228},[91,62441,9444],{"class":101},[91,62443,62444],{"class":93,"line":250},[91,62445,1450],{"emptyLinePlaceholder":846},[91,62447,62448,62450,62452,62454,62456,62458,62460,62462,62464],{"class":93,"line":260},[91,62449,9906],{"class":101},[91,62451,9329],{"class":97},[91,62453,795],{"class":101},[91,62455,9515],{"class":169},[91,62457,9337],{"class":101},[91,62459,9340],{"class":1172},[91,62461,1176],{"class":101},[91,62463,1179],{"class":566},[91,62465,102],{"class":101},[91,62467,62468,62470,62472,62474,62476],{"class":93,"line":274},[91,62469,2439],{"class":566},[91,62471,9532],{"class":101},[91,62473,9382],{"class":566},[91,62475,9933],{"class":169},[91,62477,3866],{"class":101},[91,62479,62480,62482],{"class":93,"line":284},[91,62481,9940],{"class":97},[91,62483,9313],{"class":101},[91,62485,62486],{"class":93,"line":299},[91,62487,1698],{"class":101},[91,62489,62490],{"class":93,"line":319},[91,62491,9444],{"class":101},[16,62493,9953,62494,9956],{},[31,62495,9808],{},[82,62497,62498],{"className":7462,"code":9959,"language":7464,"meta":87,"style":87},[31,62499,62500,62504,62524,62538,62542,62550,62574,62588,62598,62606,62610,62614,62618,62622],{"__ignoreMap":87},[91,62501,62502],{"class":93,"line":94},[91,62503,9966],{"class":1343},[91,62505,62506,62508,62510,62512,62514,62516,62518,62520,62522],{"class":93,"line":105},[91,62507,9971],{"class":101},[91,62509,9329],{"class":97},[91,62511,795],{"class":101},[91,62513,9515],{"class":169},[91,62515,9337],{"class":101},[91,62517,9340],{"class":1172},[91,62519,1176],{"class":101},[91,62521,1179],{"class":566},[91,62523,102],{"class":101},[91,62525,62526,62528,62530,62532,62534,62536],{"class":93,"line":121},[91,62527,2439],{"class":566},[91,62529,9532],{"class":101},[91,62531,9356],{"class":566},[91,62533,9998],{"class":169},[91,62535,1176],{"class":101},[91,62537,9362],{"class":566},[91,62539,62540],{"class":93,"line":134},[91,62541,1450],{"emptyLinePlaceholder":846},[91,62543,62544,62546,62548],{"class":93,"line":228},[91,62545,10011],{"class":101},[91,62547,10014],{"class":97},[91,62549,9266],{"class":101},[91,62551,62552,62554,62556,62558,62560,62562,62564,62566,62568,62570,62572],{"class":93,"line":250},[91,62553,10021],{"class":101},[91,62555,10024],{"class":97},[91,62557,9584],{"class":101},[91,62559,10029],{"class":169},[91,62561,10032],{"class":101},[91,62563,1200],{"class":97},[91,62565,1169],{"class":101},[91,62567,10039],{"class":1172},[91,62569,1176],{"class":101},[91,62571,1179],{"class":566},[91,62573,102],{"class":101},[91,62575,62576,62578,62580,62582,62584,62586],{"class":93,"line":260},[91,62577,10050],{"class":566},[91,62579,2662],{"class":101},[91,62581,1968],{"class":566},[91,62583,10057],{"class":108},[91,62585,10060],{"class":566},[91,62587,10063],{"class":101},[91,62589,62590,62592,62594,62596],{"class":93,"line":274},[91,62591,10068],{"class":566},[91,62593,10071],{"class":101},[91,62595,9356],{"class":566},[91,62597,10076],{"class":101},[91,62599,62600,62602,62604],{"class":93,"line":284},[91,62601,10081],{"class":101},[91,62603,9581],{"class":97},[91,62605,10086],{"class":101},[91,62607,62608],{"class":93,"line":299},[91,62609,3307],{"class":101},[91,62611,62612],{"class":93,"line":319},[91,62613,10095],{"class":101},[91,62615,62616],{"class":93,"line":334},[91,62617,10100],{"class":101},[91,62619,62620],{"class":93,"line":355},[91,62621,10105],{"class":101},[91,62623,62624],{"class":93,"line":364},[91,62625,9444],{"class":101},[16,62627,62628,10115,62630,10119],{},[31,62629,10114],{},[31,62631,10118],{},[16,62633,10122],{},[829,62635,10125],{},{"title":87,"searchDepth":105,"depth":105,"links":62637},[62638,62639,62640,62641],{"id":9243,"depth":105,"text":9244},{"id":9468,"depth":105,"text":9141},{"id":9649,"depth":105,"text":9650},{"id":9845,"depth":105,"text":9846},{},{"title":9129,"description":10132},{"loc":10135},[2865,10141,8618,10142],{"id":10145,"title":10146,"body":62647,"created":10831,"description":10832,"extension":843,"filename":10833,"meta":63188,"navigation":846,"path":10835,"seo":63189,"sitemap":63190,"stem":10838,"subject":9122,"tags":63191,"updated":10831,"volume":853,"__hash__":10842},{"type":8,"value":62648,"toc":63180},[62649,62651,62653,62655,62657,62663,62665,62677,62679,62681,62807,62875,62877,63091,63093,63099,63101,63147,63151,63153,63155,63160,63166,63168,63170,63172,63174,63176,63178],[16,62650,10151],{},[49,62652,10155],{"id":10154},[16,62654,10158],{},[16,62656,10161],{},[24,62658,62659,62661],{},[27,62660,10166],{},[27,62662,10169],{},[49,62664,10173],{"id":10172},[82,62666,62667],{"className":6839,"code":10176,"language":6841,"meta":87,"style":87},[31,62668,62669],{"__ignoreMap":87},[91,62670,62671,62673,62675],{"class":93,"line":94},[91,62672,10183],{"class":97},[91,62674,8653],{"class":169},[91,62676,10188],{"class":169},[16,62678,10191],{},[16,62680,10194],{},[82,62682,62683],{"className":6839,"code":10197,"language":6841,"meta":87,"style":87},[31,62684,62685,62691,62699,62707,62715,62723,62731,62739,62747,62753,62761,62769,62777,62783,62789,62797,62803],{"__ignoreMap":87},[91,62686,62687,62689],{"class":93,"line":94},[91,62688,10204],{"class":97},[91,62690,8442],{"class":108},[91,62692,62693,62695,62697],{"class":93,"line":105},[91,62694,10211],{"class":108},[91,62696,10214],{"class":169},[91,62698,8442],{"class":108},[91,62700,62701,62703,62705],{"class":93,"line":121},[91,62702,10221],{"class":108},[91,62704,10224],{"class":108},[91,62706,8442],{"class":108},[91,62708,62709,62711,62713],{"class":93,"line":134},[91,62710,10231],{"class":108},[91,62712,10234],{"class":108},[91,62714,8442],{"class":108},[91,62716,62717,62719,62721],{"class":93,"line":228},[91,62718,10241],{"class":108},[91,62720,10244],{"class":108},[91,62722,8442],{"class":108},[91,62724,62725,62727,62729],{"class":93,"line":250},[91,62726,10251],{"class":108},[91,62728,10254],{"class":108},[91,62730,8442],{"class":108},[91,62732,62733,62735,62737],{"class":93,"line":260},[91,62734,10261],{"class":108},[91,62736,6594],{"class":108},[91,62738,8442],{"class":108},[91,62740,62741,62743,62745],{"class":93,"line":274},[91,62742,10270],{"class":108},[91,62744,10273],{"class":169},[91,62746,8442],{"class":108},[91,62748,62749,62751],{"class":93,"line":284},[91,62750,10280],{"class":108},[91,62752,8442],{"class":108},[91,62754,62755,62757,62759],{"class":93,"line":299},[91,62756,10287],{"class":108},[91,62758,10254],{"class":108},[91,62760,8442],{"class":108},[91,62762,62763,62765,62767],{"class":93,"line":319},[91,62764,10296],{"class":108},[91,62766,10299],{"class":169},[91,62768,8442],{"class":108},[91,62770,62771,62773,62775],{"class":93,"line":334},[91,62772,10306],{"class":108},[91,62774,10299],{"class":169},[91,62776,8442],{"class":108},[91,62778,62779,62781],{"class":93,"line":355},[91,62780,10315],{"class":108},[91,62782,8442],{"class":108},[91,62784,62785,62787],{"class":93,"line":364},[91,62786,10322],{"class":108},[91,62788,8442],{"class":108},[91,62790,62791,62793,62795],{"class":93,"line":378},[91,62792,10329],{"class":108},[91,62794,10332],{"class":169},[91,62796,8442],{"class":108},[91,62798,62799,62801],{"class":93,"line":387},[91,62800,10339],{"class":108},[91,62802,8442],{"class":108},[91,62804,62805],{"class":93,"line":402},[91,62806,10346],{"class":108},[812,62808,62809,62817],{},[3001,62810,62811],{},[3004,62812,62813,62815],{},[3007,62814,10356],{"align":10355},[3007,62816,10359],{"align":10355},[3017,62818,62819,62827,62835,62843,62851,62859,62867],{},[3004,62820,62821,62825],{},[3022,62822,62823],{"align":10355},[31,62824,10368],{},[3022,62826,10371],{"align":10355},[3004,62828,62829,62833],{},[3022,62830,62831],{"align":10355},[31,62832,10378],{},[3022,62834,10381],{"align":10355},[3004,62836,62837,62841],{},[3022,62838,62839],{"align":10355},[31,62840,10388],{},[3022,62842,10391],{"align":10355},[3004,62844,62845,62849],{},[3022,62846,62847],{"align":10355},[31,62848,10398],{},[3022,62850,10401],{"align":10355},[3004,62852,62853,62857],{},[3022,62854,62855],{"align":10355},[31,62856,10408],{},[3022,62858,10411],{"align":10355},[3004,62860,62861,62865],{},[3022,62862,62863],{"align":10355},[31,62864,10418],{},[3022,62866,10421],{"align":10355},[3004,62868,62869,62873],{},[3022,62870,62871],{"align":10355},[31,62872,10428],{},[3022,62874,10431],{"align":10355},[49,62876,10435],{"id":10434},[82,62878,62879],{"className":8477,"code":10438,"language":8479,"meta":87,"style":87},[31,62880,62881,62885,62891,62901,62911,62921,62931,62941,62951,62961,62971,62981,62991,62999,63003,63009,63015,63037,63059,63079,63083,63087],{"__ignoreMap":87},[91,62882,62883],{"class":93,"line":94},[91,62884,8486],{"class":101},[91,62886,62887,62889],{"class":93,"line":105},[91,62888,10449],{"class":108},[91,62890,8789],{"class":101},[91,62892,62893,62895,62897,62899],{"class":93,"line":121},[91,62894,10456],{"class":108},[91,62896,112],{"class":101},[91,62898,10461],{"class":169},[91,62900,7560],{"class":101},[91,62902,62903,62905,62907,62909],{"class":93,"line":134},[91,62904,10468],{"class":108},[91,62906,112],{"class":101},[91,62908,10473],{"class":169},[91,62910,7560],{"class":101},[91,62912,62913,62915,62917,62919],{"class":93,"line":228},[91,62914,10480],{"class":108},[91,62916,112],{"class":101},[91,62918,10485],{"class":169},[91,62920,7560],{"class":101},[91,62922,62923,62925,62927,62929],{"class":93,"line":250},[91,62924,10492],{"class":108},[91,62926,112],{"class":101},[91,62928,10485],{"class":169},[91,62930,7560],{"class":101},[91,62932,62933,62935,62937,62939],{"class":93,"line":260},[91,62934,10503],{"class":108},[91,62936,112],{"class":101},[91,62938,10485],{"class":169},[91,62940,7560],{"class":101},[91,62942,62943,62945,62947,62949],{"class":93,"line":274},[91,62944,10514],{"class":108},[91,62946,112],{"class":101},[91,62948,10485],{"class":169},[91,62950,7560],{"class":101},[91,62952,62953,62955,62957,62959],{"class":93,"line":284},[91,62954,10525],{"class":108},[91,62956,112],{"class":101},[91,62958,10485],{"class":169},[91,62960,7560],{"class":101},[91,62962,62963,62965,62967,62969],{"class":93,"line":299},[91,62964,10536],{"class":108},[91,62966,112],{"class":101},[91,62968,10541],{"class":169},[91,62970,7560],{"class":101},[91,62972,62973,62975,62977,62979],{"class":93,"line":319},[91,62974,10548],{"class":108},[91,62976,112],{"class":101},[91,62978,10553],{"class":169},[91,62980,7560],{"class":101},[91,62982,62983,62985,62987,62989],{"class":93,"line":334},[91,62984,10560],{"class":108},[91,62986,112],{"class":101},[91,62988,10553],{"class":169},[91,62990,7560],{"class":101},[91,62992,62993,62995,62997],{"class":93,"line":355},[91,62994,10571],{"class":108},[91,62996,112],{"class":101},[91,62998,10576],{"class":169},[91,63000,63001],{"class":93,"line":364},[91,63002,10581],{"class":101},[91,63004,63005,63007],{"class":93,"line":378},[91,63006,10586],{"class":108},[91,63008,8789],{"class":101},[91,63010,63011,63013],{"class":93,"line":387},[91,63012,10593],{"class":108},[91,63014,10596],{"class":101},[91,63016,63017,63019,63021,63023,63025,63027,63029,63031,63033,63035],{"class":93,"line":402},[91,63018,10601],{"class":169},[91,63020,64],{"class":101},[91,63022,10606],{"class":169},[91,63024,64],{"class":101},[91,63026,10611],{"class":169},[91,63028,64],{"class":101},[91,63030,10616],{"class":169},[91,63032,64],{"class":101},[91,63034,10621],{"class":169},[91,63036,10624],{"class":101},[91,63038,63039,63041,63043,63045,63047,63049,63051,63053,63055,63057],{"class":93,"line":422},[91,63040,10629],{"class":169},[91,63042,64],{"class":101},[91,63044,10634],{"class":169},[91,63046,64],{"class":101},[91,63048,10639],{"class":169},[91,63050,64],{"class":101},[91,63052,10644],{"class":169},[91,63054,64],{"class":101},[91,63056,10649],{"class":169},[91,63058,10624],{"class":101},[91,63060,63061,63063,63065,63067,63069,63071,63073,63075,63077],{"class":93,"line":438},[91,63062,10656],{"class":169},[91,63064,64],{"class":101},[91,63066,10661],{"class":169},[91,63068,64],{"class":101},[91,63070,10666],{"class":169},[91,63072,64],{"class":101},[91,63074,10671],{"class":169},[91,63076,64],{"class":101},[91,63078,10676],{"class":169},[91,63080,63081],{"class":93,"line":458},[91,63082,10681],{"class":101},[91,63084,63085],{"class":93,"line":467},[91,63086,1698],{"class":101},[91,63088,63089],{"class":93,"line":481},[91,63090,137],{"class":101},[16,63092,10692],{},[1722,63094,63095],{},[16,63096,63097,10700],{},[91,63098,10699],{},[49,63100,10704],{"id":10703},[82,63102,63103],{"className":6839,"code":10707,"language":6841,"meta":87,"style":87},[31,63104,63105,63117,63121,63125,63129,63133,63137,63141],{"__ignoreMap":87},[91,63106,63107,63109,63111,63113,63115],{"class":93,"line":94},[91,63108,10714],{"class":97},[91,63110,10717],{"class":566},[91,63112,10720],{"class":169},[91,63114,10723],{"class":566},[91,63116,8718],{"class":169},[91,63118,63119],{"class":93,"line":105},[91,63120,10730],{"class":169},[91,63122,63123],{"class":93,"line":121},[91,63124,10735],{"class":169},[91,63126,63127],{"class":93,"line":134},[91,63128,10740],{"class":169},[91,63130,63131],{"class":93,"line":228},[91,63132,10745],{"class":169},[91,63134,63135],{"class":93,"line":250},[91,63136,137],{"class":169},[91,63138,63139],{"class":93,"line":260},[91,63140,10754],{"class":169},[91,63142,63143,63145],{"class":93,"line":274},[91,63144,8747],{"class":108},[91,63146,8718],{"class":169},[16,63148,10763,63149,10767],{},[31,63150,10766],{},[49,63152,10771],{"id":10770},[16,63154,10774],{},[82,63156,63158],{"className":63157,"code":10778,"language":1099,"meta":87},[1097],[31,63159,10778],{"__ignoreMap":87},[24,63161,63162,63164],{},[27,63163,10785],{},[27,63165,10788],{},[16,63167,10791],{},[49,63169,6005],{"id":6004},[1112,63171],{"host":10796,"title":10797,"url":10798,"description":10799},[1112,63173],{"host":10802,"title":10803,"url":10804},[1112,63175],{"host":10807,"title":10808,"url":10809,"description":10810,"favicon":1320,"image":10811},[1112,63177],{"host":10814,"title":10815,"url":10816,"description":10817,"favicon":10818,"image":10819},[829,63179,10822],{},{"title":87,"searchDepth":105,"depth":105,"links":63181},[63182,63183,63184,63185,63186,63187],{"id":10154,"depth":105,"text":10155},{"id":10172,"depth":105,"text":10173},{"id":10434,"depth":105,"text":10435},{"id":10703,"depth":105,"text":10704},{"id":10770,"depth":105,"text":10771},{"id":6004,"depth":105,"text":6005},{},{"title":10146,"description":10832},{"loc":10835},[9124,10840,10841,9125],{"id":10844,"title":10845,"body":63193,"created":15033,"description":15034,"extension":843,"filename":15035,"meta":66666,"navigation":846,"path":15037,"seo":66667,"sitemap":66668,"stem":15040,"subject":2862,"tags":66669,"updated":15049,"volume":4441,"__hash__":15050},{"type":8,"value":63194,"toc":66647},[63195,63197,63199,63204,63206,63208,63212,63216,63220,63222,63224,63228,63230,63232,63240,63242,63244,63252,63254,63260,63264,63296,63302,63304,63306,63532,63539,63543,63551,63555,63559,63563,63565,63569,63571,63579,63583,63585,63587,63589,63761,63765,64237,64239,64249,64293,64297,64425,64427,64431,64433,64435,64437,64453,64457,64461,64583,64591,64675,64677,64679,64681,64733,64735,64741,64743,64745,64751,64753,64965,64973,64979,65295,65297,65301,65303,65305,65327,65331,65465,65467,65575,65579,65581,65586,65588,65592,65594,65598,65670,65672,65676,65678,65682,65684,65688,65692,65696,65698,65700,65702,66142,66154,66156,66158,66160,66165,66169,66171,66175,66177,66179,66185,66339,66345,66349,66351,66411,66417,66419,66435,66443,66589,66593,66641,66645],[16,63196,10850],{},[16,63198,10853],{},[16,63200,63201],{},[4306,63202,10860],{"href":10858,"rel":63203},[4310],[16,63205,10863],{},[49,63207,10867],{"id":10866},[16,63209,63210],{},[19,63211],{"alt":21,"src":10872},[16,63213,10875,63214,10879],{},[31,63215,10878],{},[16,63217,63218],{},[19,63219],{"alt":21,"src":10884},[16,63221,10887],{},[49,63223,10891],{"id":10890},[16,63225,63226],{},[19,63227],{"alt":21,"src":10896},[16,63229,10899],{},[16,63231,10902],{},[4530,63233,63234,63236,63238],{},[27,63235,10907],{},[27,63237,10910],{},[27,63239,10913],{},[16,63241,10916],{},[757,63243,10919],{"id":10919},[16,63245,63246,10924,63248,10928,63250,10932],{},[792,63247,10919],{},[31,63249,10927],{},[31,63251,10931],{},[757,63253,10910],{"id":10935},[16,63255,63256,10940,63258,10944],{},[792,63257,10910],{},[31,63259,10943],{},[16,63261,63262],{},[19,63263],{"alt":21,"src":10949},[82,63265,63266],{"className":10952,"code":10953,"language":10954,"meta":87,"style":87},[31,63267,63268,63272,63284,63292],{"__ignoreMap":87},[91,63269,63270],{"class":93,"line":94},[91,63271,10961],{"class":1343},[91,63273,63274,63276,63278,63280,63282],{"class":93,"line":105},[91,63275,10966],{"class":108},[91,63277,1235],{"class":101},[91,63279,10971],{"class":108},[91,63281,1366],{"class":566},[91,63283,102],{"class":101},[91,63285,63286,63288,63290],{"class":93,"line":121},[91,63287,10980],{"class":101},[91,63289,10983],{"class":169},[91,63291,7560],{"class":101},[91,63293,63294],{"class":93,"line":134},[91,63295,137],{"class":101},[16,63297,10992,63298,10996,63300,11000],{},[31,63299,10995],{},[31,63301,10999],{},[757,63303,11004],{"id":11003},[16,63305,11007],{},[82,63307,63308],{"className":11010,"code":11011,"language":11012,"meta":87,"style":87},[31,63309,63310,63318,63324,63330,63336,63342,63346,63352,63358,63366,63372,63382,63392,63400,63406,63414,63418,63428,63436,63440,63450,63458,63464,63472,63476,63486,63494,63500,63508,63516,63524],{"__ignoreMap":87},[91,63311,63312,63314,63316],{"class":93,"line":94},[91,63313,1238],{"class":159},[91,63315,112],{"class":101},[91,63317,11023],{"class":169},[91,63319,63320,63322],{"class":93,"line":105},[91,63321,11028],{"class":108},[91,63323,7265],{"class":101},[91,63325,63326,63328],{"class":93,"line":121},[91,63327,11035],{"class":159},[91,63329,7265],{"class":101},[91,63331,63332,63334],{"class":93,"line":134},[91,63333,11042],{"class":159},[91,63335,7265],{"class":101},[91,63337,63338,63340],{"class":93,"line":228},[91,63339,11049],{"class":101},[91,63341,11052],{"class":169},[91,63343,63344],{"class":93,"line":250},[91,63345,1450],{"emptyLinePlaceholder":846},[91,63347,63348,63350],{"class":93,"line":260},[91,63349,7347],{"class":159},[91,63351,7265],{"class":101},[91,63353,63354,63356],{"class":93,"line":274},[91,63355,11067],{"class":159},[91,63357,7265],{"class":101},[91,63359,63360,63362,63364],{"class":93,"line":284},[91,63361,7374],{"class":159},[91,63363,112],{"class":101},[91,63365,7379],{"class":169},[91,63367,63368,63370],{"class":93,"line":299},[91,63369,11082],{"class":159},[91,63371,7265],{"class":101},[91,63373,63374,63376,63378,63380],{"class":93,"line":319},[91,63375,11049],{"class":101},[91,63377,11091],{"class":159},[91,63379,112],{"class":101},[91,63381,11096],{"class":169},[91,63383,63384,63386,63388,63390],{"class":93,"line":334},[91,63385,11049],{"class":101},[91,63387,1238],{"class":159},[91,63389,112],{"class":101},[91,63391,11107],{"class":169},[91,63393,63394,63396,63398],{"class":93,"line":355},[91,63395,11112],{"class":159},[91,63397,112],{"class":101},[91,63399,11117],{"class":169},[91,63401,63402,63404],{"class":93,"line":364},[91,63403,11122],{"class":159},[91,63405,7265],{"class":101},[91,63407,63408,63410,63412],{"class":93,"line":378},[91,63409,11129],{"class":159},[91,63411,112],{"class":101},[91,63413,11134],{"class":169},[91,63415,63416],{"class":93,"line":387},[91,63417,11139],{"class":101},[91,63419,63420,63422,63424,63426],{"class":93,"line":402},[91,63421,11049],{"class":101},[91,63423,1238],{"class":159},[91,63425,112],{"class":101},[91,63427,11150],{"class":169},[91,63429,63430,63432,63434],{"class":93,"line":422},[91,63431,7320],{"class":159},[91,63433,112],{"class":101},[91,63435,11159],{"class":169},[91,63437,63438],{"class":93,"line":438},[91,63439,1450],{"emptyLinePlaceholder":846},[91,63441,63442,63444,63446,63448],{"class":93,"line":458},[91,63443,11049],{"class":101},[91,63445,1238],{"class":159},[91,63447,112],{"class":101},[91,63449,11174],{"class":169},[91,63451,63452,63454,63456],{"class":93,"line":467},[91,63453,7320],{"class":159},[91,63455,112],{"class":101},[91,63457,11183],{"class":169},[91,63459,63460,63462],{"class":93,"line":481},[91,63461,7262],{"class":159},[91,63463,7265],{"class":101},[91,63465,63466,63468,63470],{"class":93,"line":490},[91,63467,11194],{"class":159},[91,63469,112],{"class":101},[91,63471,11199],{"class":169},[91,63473,63474],{"class":93,"line":3310},[91,63475,11139],{"class":101},[91,63477,63478,63480,63482,63484],{"class":93,"line":3315},[91,63479,11049],{"class":101},[91,63481,1238],{"class":159},[91,63483,112],{"class":101},[91,63485,11214],{"class":169},[91,63487,63488,63490,63492],{"class":93,"line":3321},[91,63489,11112],{"class":159},[91,63491,112],{"class":101},[91,63493,11223],{"class":169},[91,63495,63496,63498],{"class":93,"line":3327},[91,63497,7262],{"class":159},[91,63499,7265],{"class":101},[91,63501,63502,63504,63506],{"class":93,"line":3333},[91,63503,11234],{"class":159},[91,63505,112],{"class":101},[91,63507,11239],{"class":169},[91,63509,63510,63512,63514],{"class":93,"line":3338},[91,63511,11244],{"class":159},[91,63513,112],{"class":101},[91,63515,11249],{"class":169},[91,63517,63518,63520,63522],{"class":93,"line":3343},[91,63519,11254],{"class":159},[91,63521,112],{"class":101},[91,63523,11259],{"class":169},[91,63525,63526,63528,63530],{"class":93,"line":7882},[91,63527,11264],{"class":159},[91,63529,112],{"class":101},[91,63531,11269],{"class":108},[16,63533,63534,11274,63536,11280],{},[31,63535,11028],{},[4306,63537,11279],{"href":11277,"rel":63538},[4310],[16,63540,63541,11285],{},[31,63542,7347],{},[16,63544,11288,63545,11292,63547,11296,63549,11299],{},[31,63546,11291],{},[31,63548,11295],{},[31,63550,10919],{},[16,63552,63553],{},[19,63554],{"alt":21,"src":11304},[16,63556,11307,63557,11311],{},[31,63558,11310],{},[16,63560,63561],{},[19,63562],{"alt":21,"src":11316},[16,63564,11319],{},[16,63566,63567],{},[19,63568],{"alt":21,"src":11324},[16,63570,11327],{},[4530,63572,63573,63577],{},[27,63574,11332,63575,11336],{},[31,63576,11335],{},[27,63578,11339],{},[16,63580,63581],{},[19,63582],{"alt":21,"src":11344},[16,63584,11347],{},[49,63586,11351],{"id":11350},[16,63588,11354],{},[82,63590,63591],{"className":10952,"code":11357,"language":10954,"meta":87,"style":87},[31,63592,63593,63597,63601,63605,63615,63625,63635,63645,63655,63665,63675,63679,63683,63693,63703,63713,63723,63733,63743,63753,63757],{"__ignoreMap":87},[91,63594,63595],{"class":93,"line":94},[91,63596,11364],{"class":1343},[91,63598,63599],{"class":93,"line":105},[91,63600,11369],{"class":101},[91,63602,63603],{"class":93,"line":121},[91,63604,11374],{"class":101},[91,63606,63607,63609,63611,63613],{"class":93,"line":134},[91,63608,11379],{"class":169},[91,63610,112],{"class":101},[91,63612,11384],{"class":169},[91,63614,7560],{"class":101},[91,63616,63617,63619,63621,63623],{"class":93,"line":228},[91,63618,11391],{"class":169},[91,63620,112],{"class":101},[91,63622,11396],{"class":169},[91,63624,7560],{"class":101},[91,63626,63627,63629,63631,63633],{"class":93,"line":250},[91,63628,11403],{"class":169},[91,63630,112],{"class":101},[91,63632,11408],{"class":169},[91,63634,7560],{"class":101},[91,63636,63637,63639,63641,63643],{"class":93,"line":260},[91,63638,11415],{"class":169},[91,63640,112],{"class":101},[91,63642,11420],{"class":169},[91,63644,7560],{"class":101},[91,63646,63647,63649,63651,63653],{"class":93,"line":274},[91,63648,11427],{"class":169},[91,63650,112],{"class":101},[91,63652,11432],{"class":169},[91,63654,7560],{"class":101},[91,63656,63657,63659,63661,63663],{"class":93,"line":284},[91,63658,11439],{"class":169},[91,63660,112],{"class":101},[91,63662,11444],{"class":169},[91,63664,7560],{"class":101},[91,63666,63667,63669,63671,63673],{"class":93,"line":299},[91,63668,11451],{"class":169},[91,63670,11454],{"class":101},[91,63672,11457],{"class":169},[91,63674,11460],{"class":101},[91,63676,63677],{"class":93,"line":319},[91,63678,10581],{"class":101},[91,63680,63681],{"class":93,"line":334},[91,63682,11374],{"class":101},[91,63684,63685,63687,63689,63691],{"class":93,"line":355},[91,63686,11379],{"class":169},[91,63688,112],{"class":101},[91,63690,11477],{"class":169},[91,63692,7560],{"class":101},[91,63694,63695,63697,63699,63701],{"class":93,"line":364},[91,63696,11391],{"class":169},[91,63698,112],{"class":101},[91,63700,11488],{"class":169},[91,63702,7560],{"class":101},[91,63704,63705,63707,63709,63711],{"class":93,"line":378},[91,63706,11403],{"class":169},[91,63708,112],{"class":101},[91,63710,11499],{"class":169},[91,63712,7560],{"class":101},[91,63714,63715,63717,63719,63721],{"class":93,"line":387},[91,63716,11415],{"class":169},[91,63718,112],{"class":101},[91,63720,11420],{"class":169},[91,63722,7560],{"class":101},[91,63724,63725,63727,63729,63731],{"class":93,"line":402},[91,63726,11427],{"class":169},[91,63728,112],{"class":101},[91,63730,11432],{"class":169},[91,63732,7560],{"class":101},[91,63734,63735,63737,63739,63741],{"class":93,"line":422},[91,63736,11439],{"class":169},[91,63738,112],{"class":101},[91,63740,11444],{"class":169},[91,63742,7560],{"class":101},[91,63744,63745,63747,63749,63751],{"class":93,"line":438},[91,63746,11451],{"class":169},[91,63748,11454],{"class":101},[91,63750,11457],{"class":169},[91,63752,11460],{"class":101},[91,63754,63755],{"class":93,"line":458},[91,63756,1698],{"class":101},[91,63758,63759],{"class":93,"line":467},[91,63760,11460],{"class":101},[16,63762,11552,63763,11556],{},[31,63764,11555],{},[82,63766,63767],{"className":11559,"code":11560,"language":11561,"meta":87,"style":87},[31,63768,63769,63781,63793,63797,63807,63817,63827,63837,63847,63857,63867,63871,63875,63887,63899,63915,63927,63931,63949,63987,63995,63999,64005,64023,64035,64039,64043,64047,64051,64055,64071,64081,64085,64089,64105,64115,64119,64123,64127,64135,64157,64171,64175,64179,64183,64187,64203,64217,64221,64225,64229],{"__ignoreMap":87},[91,63770,63771,63773,63775,63777,63779],{"class":93,"line":94},[91,63772,2499],{"class":566},[91,63774,11570],{"class":101},[91,63776,2505],{"class":566},[91,63778,11575],{"class":169},[91,63780,118],{"class":101},[91,63782,63783,63785,63787,63789,63791],{"class":93,"line":105},[91,63784,2499],{"class":566},[91,63786,11584],{"class":101},[91,63788,2505],{"class":566},[91,63790,11589],{"class":169},[91,63792,118],{"class":101},[91,63794,63795],{"class":93,"line":121},[91,63796,1450],{"emptyLinePlaceholder":846},[91,63798,63799,63801,63803,63805],{"class":93,"line":134},[91,63800,2574],{"class":566},[91,63802,11602],{"class":566},[91,63804,11605],{"class":97},[91,63806,102],{"class":101},[91,63808,63809,63811,63813,63815],{"class":93,"line":228},[91,63810,11612],{"class":1172},[91,63812,1208],{"class":566},[91,63814,1357],{"class":108},[91,63816,118],{"class":101},[91,63818,63819,63821,63823,63825],{"class":93,"line":250},[91,63820,11623],{"class":1172},[91,63822,1208],{"class":566},[91,63824,1357],{"class":108},[91,63826,118],{"class":101},[91,63828,63829,63831,63833,63835],{"class":93,"line":260},[91,63830,11634],{"class":1172},[91,63832,1208],{"class":566},[91,63834,1357],{"class":108},[91,63836,118],{"class":101},[91,63838,63839,63841,63843,63845],{"class":93,"line":274},[91,63840,11645],{"class":1172},[91,63842,1208],{"class":566},[91,63844,1357],{"class":108},[91,63846,118],{"class":101},[91,63848,63849,63851,63853,63855],{"class":93,"line":284},[91,63850,11656],{"class":1172},[91,63852,1208],{"class":566},[91,63854,1357],{"class":108},[91,63856,11663],{"class":101},[91,63858,63859,63861,63863,63865],{"class":93,"line":299},[91,63860,11668],{"class":1172},[91,63862,1208],{"class":566},[91,63864,1357],{"class":108},[91,63866,118],{"class":101},[91,63868,63869],{"class":93,"line":319},[91,63870,137],{"class":101},[91,63872,63873],{"class":93,"line":334},[91,63874,1450],{"emptyLinePlaceholder":846},[91,63876,63877,63879,63881,63883,63885],{"class":93,"line":355},[91,63878,8412],{"class":101},[91,63880,11689],{"class":97},[91,63882,11692],{"class":101},[91,63884,7557],{"class":108},[91,63886,11697],{"class":101},[91,63888,63889,63891,63893,63895,63897],{"class":93,"line":364},[91,63890,11702],{"class":566},[91,63892,11705],{"class":97},[91,63894,11708],{"class":566},[91,63896,11711],{"class":97},[91,63898,102],{"class":101},[91,63900,63901,63903,63905,63907,63909,63911,63913],{"class":93,"line":378},[91,63902,11718],{"class":566},[91,63904,11721],{"class":1172},[91,63906,1208],{"class":566},[91,63908,11726],{"class":97},[91,63910,11729],{"class":101},[91,63912,166],{"class":566},[91,63914,11734],{"class":101},[91,63916,63917,63919,63921,63923,63925],{"class":93,"line":387},[91,63918,11718],{"class":566},[91,63920,11741],{"class":1172},[91,63922,1366],{"class":566},[91,63924,8014],{"class":169},[91,63926,118],{"class":101},[91,63928,63929],{"class":93,"line":402},[91,63930,1450],{"emptyLinePlaceholder":846},[91,63932,63933,63935,63937,63939,63941,63943,63945,63947],{"class":93,"line":422},[91,63934,11756],{"class":566},[91,63936,11759],{"class":97},[91,63938,11762],{"class":101},[91,63940,1208],{"class":566},[91,63942,11605],{"class":97},[91,63944,1360],{"class":566},[91,63946,11771],{"class":108},[91,63948,102],{"class":101},[91,63950,63951,63953,63955,63957,63959,63961,63963,63965,63967,63969,63971,63973,63975,63977,63979,63981,63983,63985],{"class":93,"line":438},[91,63952,8218],{"class":566},[91,63954,795],{"class":101},[91,63956,11782],{"class":108},[91,63958,11785],{"class":101},[91,63960,11788],{"class":566},[91,63962,1363],{"class":108},[91,63964,7954],{"class":566},[91,63966,11795],{"class":108},[91,63968,11785],{"class":101},[91,63970,11788],{"class":566},[91,63972,8014],{"class":169},[91,63974,7954],{"class":566},[91,63976,11795],{"class":108},[91,63978,11808],{"class":101},[91,63980,11811],{"class":108},[91,63982,11814],{"class":566},[91,63984,11817],{"class":108},[91,63986,11820],{"class":101},[91,63988,63989,63991,63993],{"class":93,"line":458},[91,63990,11825],{"class":566},[91,63992,11771],{"class":108},[91,63994,118],{"class":101},[91,63996,63997],{"class":93,"line":467},[91,63998,1693],{"class":101},[91,64000,64001,64003],{"class":93,"line":481},[91,64002,11838],{"class":566},[91,64004,102],{"class":101},[91,64006,64007,64009,64011,64013,64015,64017,64019,64021],{"class":93,"line":490},[91,64008,11825],{"class":566},[91,64010,11795],{"class":108},[91,64012,11808],{"class":101},[91,64014,11851],{"class":97},[91,64016,795],{"class":101},[91,64018,11856],{"class":1172},[91,64020,11859],{"class":566},[91,64022,102],{"class":101},[91,64024,64025,64027,64029,64031,64033],{"class":93,"line":3310},[91,64026,11866],{"class":566},[91,64028,11869],{"class":101},[91,64030,9382],{"class":566},[91,64032,11795],{"class":108},[91,64034,11876],{"class":101},[91,64036,64037],{"class":93,"line":3315},[91,64038,11881],{"class":101},[91,64040,64041],{"class":93,"line":3321},[91,64042,1693],{"class":101},[91,64044,64045],{"class":93,"line":3327},[91,64046,1698],{"class":101},[91,64048,64049],{"class":93,"line":3333},[91,64050,1629],{"class":101},[91,64052,64053],{"class":93,"line":3338},[91,64054,11898],{"class":101},[91,64056,64057,64059,64061,64063,64065,64067,64069],{"class":93,"line":3343},[91,64058,11718],{"class":566},[91,64060,11905],{"class":97},[91,64062,795],{"class":101},[91,64064,11910],{"class":1172},[91,64066,1208],{"class":566},[91,64068,11605],{"class":97},[91,64070,11917],{"class":101},[91,64072,64073,64075,64077,64079],{"class":93,"line":7882},[91,64074,11922],{"class":108},[91,64076,11925],{"class":101},[91,64078,166],{"class":566},[91,64080,11930],{"class":101},[91,64082,64083],{"class":93,"line":7887},[91,64084,1698],{"class":101},[91,64086,64087],{"class":93,"line":7892},[91,64088,11898],{"class":101},[91,64090,64091,64093,64095,64097,64099,64101,64103],{"class":93,"line":7906},[91,64092,11718],{"class":566},[91,64094,11945],{"class":97},[91,64096,795],{"class":101},[91,64098,11950],{"class":1172},[91,64100,1208],{"class":566},[91,64102,1357],{"class":108},[91,64104,3866],{"class":101},[91,64106,64107,64109,64111,64113],{"class":93,"line":7922},[91,64108,11922],{"class":108},[91,64110,11785],{"class":101},[91,64112,166],{"class":566},[91,64114,11967],{"class":101},[91,64116,64117],{"class":93,"line":7927},[91,64118,1698],{"class":101},[91,64120,64121],{"class":93,"line":7967},[91,64122,1450],{"emptyLinePlaceholder":846},[91,64124,64125],{"class":93,"line":7983},[91,64126,11980],{"class":101},[91,64128,64129,64131,64133],{"class":93,"line":7988},[91,64130,11718],{"class":566},[91,64132,11987],{"class":97},[91,64134,2007],{"class":101},[91,64136,64137,64139,64141,64143,64145,64147,64149,64151,64153,64155],{"class":93,"line":7993},[91,64138,11994],{"class":101},[91,64140,5938],{"class":97},[91,64142,795],{"class":101},[91,64144,12001],{"class":169},[91,64146,8017],{"class":101},[91,64148,1200],{"class":97},[91,64150,795],{"class":101},[91,64152,12010],{"class":1172},[91,64154,11859],{"class":566},[91,64156,102],{"class":101},[91,64158,64159,64161,64163,64165,64167,64169],{"class":93,"line":8000},[91,64160,12019],{"class":108},[91,64162,12022],{"class":101},[91,64164,12025],{"class":97},[91,64166,795],{"class":101},[91,64168,12030],{"class":169},[91,64170,12033],{"class":101},[91,64172,64173],{"class":93,"line":8040},[91,64174,7745],{"class":101},[91,64176,64177],{"class":93,"line":8046},[91,64178,1698],{"class":101},[91,64180,64181],{"class":93,"line":8080},[91,64182,1450],{"emptyLinePlaceholder":846},[91,64184,64185],{"class":93,"line":8086},[91,64186,11980],{"class":101},[91,64188,64189,64191,64193,64195,64197,64199,64201],{"class":93,"line":12052},[91,64190,11718],{"class":566},[91,64192,12057],{"class":97},[91,64194,795],{"class":101},[91,64196,5177],{"class":1172},[91,64198,1208],{"class":566},[91,64200,1357],{"class":108},[91,64202,3866],{"class":101},[91,64204,64205,64207,64209,64211,64213,64215],{"class":93,"line":12070},[91,64206,11922],{"class":108},[91,64208,12022],{"class":101},[91,64210,12025],{"class":97},[91,64212,795],{"class":101},[91,64214,12081],{"class":169},[91,64216,12084],{"class":101},[91,64218,64219],{"class":93,"line":12087},[91,64220,1698],{"class":101},[91,64222,64223],{"class":93,"line":12092},[91,64224,137],{"class":101},[91,64226,64227],{"class":93,"line":12097},[91,64228,1450],{"emptyLinePlaceholder":846},[91,64230,64231,64233,64235],{"class":93,"line":12102},[91,64232,2574],{"class":566},[91,64234,12107],{"class":566},[91,64236,12110],{"class":101},[16,64238,12113],{},[4530,64240,64241,64245],{},[27,64242,64243,12121],{},[792,64244,12120],{},[27,64246,64247,12127],{},[792,64248,12126],{},[82,64250,64251],{"className":11559,"code":12130,"language":11561,"meta":87,"style":87},[31,64252,64253,64257,64269,64281],{"__ignoreMap":87},[91,64254,64255],{"class":93,"line":94},[91,64256,12137],{"class":1343},[91,64258,64259,64261,64263,64265,64267],{"class":93,"line":105},[91,64260,2499],{"class":566},[91,64262,12144],{"class":101},[91,64264,2505],{"class":566},[91,64266,12149],{"class":169},[91,64268,118],{"class":101},[91,64270,64271,64273,64275,64277,64279],{"class":93,"line":121},[91,64272,1968],{"class":566},[91,64274,12158],{"class":108},[91,64276,1366],{"class":566},[91,64278,12163],{"class":97},[91,64280,2030],{"class":101},[91,64282,64283,64285,64287,64289,64291],{"class":93,"line":134},[91,64284,12170],{"class":101},[91,64286,12173],{"class":97},[91,64288,795],{"class":101},[91,64290,12178],{"class":169},[91,64292,1594],{"class":101},[16,64294,12183,64295,12187],{},[31,64296,12186],{},[82,64298,64299],{"className":11559,"code":12190,"language":11561,"meta":87,"style":87},[31,64300,64301,64305,64317,64329,64341,64345,64357,64369,64379,64383,64395,64411,64421],{"__ignoreMap":87},[91,64302,64303],{"class":93,"line":94},[91,64304,12197],{"class":1343},[91,64306,64307,64309,64311,64313,64315],{"class":93,"line":105},[91,64308,2499],{"class":566},[91,64310,12204],{"class":101},[91,64312,2505],{"class":566},[91,64314,2508],{"class":169},[91,64316,118],{"class":101},[91,64318,64319,64321,64323,64325,64327],{"class":93,"line":121},[91,64320,2499],{"class":566},[91,64322,12217],{"class":101},[91,64324,2505],{"class":566},[91,64326,12222],{"class":169},[91,64328,118],{"class":101},[91,64330,64331,64333,64335,64337,64339],{"class":93,"line":134},[91,64332,2499],{"class":566},[91,64334,12144],{"class":101},[91,64336,2505],{"class":566},[91,64338,12149],{"class":169},[91,64340,118],{"class":101},[91,64342,64343],{"class":93,"line":228},[91,64344,1450],{"emptyLinePlaceholder":846},[91,64346,64347,64349,64351,64353,64355],{"class":93,"line":250},[91,64348,1968],{"class":566},[91,64350,12158],{"class":108},[91,64352,1366],{"class":566},[91,64354,12163],{"class":97},[91,64356,2030],{"class":101},[91,64358,64359,64361,64363,64365,64367],{"class":93,"line":260},[91,64360,1968],{"class":566},[91,64362,12259],{"class":108},[91,64364,1366],{"class":566},[91,64366,12264],{"class":97},[91,64368,2030],{"class":101},[91,64370,64371,64373,64375,64377],{"class":93,"line":274},[91,64372,1968],{"class":566},[91,64374,12273],{"class":108},[91,64376,1366],{"class":566},[91,64378,12278],{"class":101},[91,64380,64381],{"class":93,"line":284},[91,64382,1450],{"emptyLinePlaceholder":846},[91,64384,64385,64387,64389,64391,64393],{"class":93,"line":299},[91,64386,12170],{"class":101},[91,64388,12173],{"class":97},[91,64390,795],{"class":101},[91,64392,12293],{"class":169},[91,64394,12296],{"class":101},[91,64396,64397,64399,64401,64403,64405,64407,64409],{"class":93,"line":319},[91,64398,1968],{"class":566},[91,64400,12303],{"class":108},[91,64402,1366],{"class":566},[91,64404,12308],{"class":97},[91,64406,2088],{"class":101},[91,64408,1179],{"class":566},[91,64410,102],{"class":101},[91,64412,64413,64415,64417,64419],{"class":93,"line":334},[91,64414,2695],{"class":566},[91,64416,12321],{"class":101},[91,64418,12324],{"class":169},[91,64420,12327],{"class":101},[91,64422,64423],{"class":93,"line":355},[91,64424,1303],{"class":101},[16,64426,12334],{},[16,64428,64429],{},[19,64430],{"alt":21,"src":12339},[16,64432,12342],{},[49,64434,12346],{"id":12345},[16,64436,12349],{},[82,64438,64439],{"className":11559,"code":12352,"language":11561,"meta":87,"style":87},[31,64440,64441,64445],{"__ignoreMap":87},[91,64442,64443],{"class":93,"line":94},[91,64444,12359],{"class":101},[91,64446,64447,64449,64451],{"class":93,"line":105},[91,64448,12364],{"class":101},[91,64450,8409],{"class":566},[91,64452,12369],{"class":101},[16,64454,64455,12375],{},[792,64456,12374],{},[16,64458,64459,12381],{},[792,64460,12380],{},[82,64462,64463],{"className":11559,"code":12384,"language":11561,"meta":87,"style":87},[31,64464,64465,64469,64473,64481,64509,64519,64537,64553,64567,64575,64579],{"__ignoreMap":87},[91,64466,64467],{"class":93,"line":94},[91,64468,12391],{"class":1343},[91,64470,64471],{"class":93,"line":105},[91,64472,12396],{"class":101},[91,64474,64475,64477,64479],{"class":93,"line":121},[91,64476,12401],{"class":101},[91,64478,12404],{"class":97},[91,64480,12407],{"class":101},[91,64482,64483,64485,64487,64489,64491,64493,64495,64497,64499,64501,64503,64505,64507],{"class":93,"line":134},[91,64484,2695],{"class":566},[91,64486,12414],{"class":101},[91,64488,5938],{"class":97},[91,64490,795],{"class":101},[91,64492,12421],{"class":169},[91,64494,12424],{"class":101},[91,64496,12427],{"class":169},[91,64498,8017],{"class":101},[91,64500,1200],{"class":97},[91,64502,795],{"class":101},[91,64504,12010],{"class":1172},[91,64506,11859],{"class":566},[91,64508,102],{"class":101},[91,64510,64511,64513,64515,64517],{"class":93,"line":228},[91,64512,1382],{"class":566},[91,64514,12446],{"class":108},[91,64516,1366],{"class":566},[91,64518,12451],{"class":101},[91,64520,64521,64523,64525,64527,64529,64531,64533,64535],{"class":93,"line":250},[91,64522,12456],{"class":566},[91,64524,12459],{"class":108},[91,64526,1366],{"class":566},[91,64528,2676],{"class":566},[91,64530,12466],{"class":101},[91,64532,12469],{"class":97},[91,64534,11762],{"class":101},[91,64536,12474],{"class":566},[91,64538,64539,64541,64543,64545,64547,64549,64551],{"class":93,"line":260},[91,64540,12479],{"class":101},[91,64542,12482],{"class":97},[91,64544,795],{"class":101},[91,64546,12487],{"class":169},[91,64548,64],{"class":101},[91,64550,7557],{"class":108},[91,64552,1594],{"class":101},[91,64554,64555,64557,64559,64561,64563,64565],{"class":93,"line":274},[91,64556,12456],{"class":566},[91,64558,12500],{"class":108},[91,64560,1366],{"class":566},[91,64562,12505],{"class":101},[91,64564,12508],{"class":97},[91,64566,12511],{"class":101},[91,64568,64569,64571,64573],{"class":93,"line":284},[91,64570,7717],{"class":566},[91,64572,12518],{"class":101},[91,64574,12474],{"class":566},[91,64576,64577],{"class":93,"line":299},[91,64578,7575],{"class":101},[91,64580,64581],{"class":93,"line":319},[91,64582,137],{"class":101},[16,64584,12531,64585,12534,64587,12540],{},[31,64586,12508],{},[792,64588,64589],{},[31,64590,12539],{},[82,64592,64593],{"className":11559,"code":12543,"language":11561,"meta":87,"style":87},[31,64594,64595,64599,64617,64621,64625,64635,64659,64667,64671],{"__ignoreMap":87},[91,64596,64597],{"class":93,"line":94},[91,64598,12197],{"class":1343},[91,64600,64601,64603,64605,64607,64609,64611,64613,64615],{"class":93,"line":105},[91,64602,156],{"class":101},[91,64604,160],{"class":159},[91,64606,12558],{"class":97},[91,64608,166],{"class":566},[91,64610,12563],{"class":169},[91,64612,12566],{"class":101},[91,64614,160],{"class":159},[91,64616,173],{"class":101},[91,64618,64619],{"class":93,"line":121},[91,64620,1450],{"emptyLinePlaceholder":846},[91,64622,64623],{"class":93,"line":134},[91,64624,12579],{"class":1343},[91,64626,64627,64629,64631,64633],{"class":93,"line":228},[91,64628,2085],{"class":97},[91,64630,2088],{"class":101},[91,64632,1179],{"class":566},[91,64634,102],{"class":101},[91,64636,64637,64639,64641,64643,64645,64647,64649,64651,64653,64655,64657],{"class":93,"line":250},[91,64638,12594],{"class":101},[91,64640,12173],{"class":97},[91,64642,795],{"class":101},[91,64644,12601],{"class":169},[91,64646,12604],{"class":101},[91,64648,1200],{"class":97},[91,64650,1169],{"class":101},[91,64652,12010],{"class":1172},[91,64654,1176],{"class":101},[91,64656,1179],{"class":566},[91,64658,102],{"class":101},[91,64660,64661,64663,64665],{"class":93,"line":260},[91,64662,12621],{"class":101},[91,64664,166],{"class":566},[91,64666,12626],{"class":101},[91,64668,64669],{"class":93,"line":274},[91,64670,12631],{"class":101},[91,64672,64673],{"class":93,"line":284},[91,64674,9444],{"class":101},[16,64676,12638],{},[49,64678,12642],{"id":12641},[16,64680,12645],{},[82,64682,64683],{"className":11559,"code":12648,"language":11561,"meta":87,"style":87},[31,64684,64685,64707],{"__ignoreMap":87},[91,64686,64687,64689,64691,64693,64695,64697,64699,64701,64703,64705],{"class":93,"line":94},[91,64688,12655],{"class":101},[91,64690,8409],{"class":566},[91,64692,12660],{"class":108},[91,64694,12663],{"class":101},[91,64696,8409],{"class":566},[91,64698,12668],{"class":101},[91,64700,8409],{"class":566},[91,64702,12673],{"class":101},[91,64704,12676],{"class":566},[91,64706,12679],{"class":101},[91,64708,64709,64711,64713,64715,64717,64719,64721,64723,64725,64727,64729,64731],{"class":93,"line":105},[91,64710,12655],{"class":101},[91,64712,8409],{"class":566},[91,64714,12660],{"class":108},[91,64716,12663],{"class":101},[91,64718,8409],{"class":566},[91,64720,12668],{"class":101},[91,64722,8409],{"class":566},[91,64724,12698],{"class":101},[91,64726,8409],{"class":566},[91,64728,12673],{"class":101},[91,64730,12676],{"class":566},[91,64732,12707],{"class":101},[16,64734,12710],{},[1722,64736,64737],{},[16,64738,64739,12718],{},[91,64740,12717],{},[16,64742,12721],{},[16,64744,12724],{},[16,64746,12727,64747,12731,64749,12735],{},[31,64748,12730],{},[31,64750,12734],{},[16,64752,12738],{},[82,64754,64755],{"className":11559,"code":12741,"language":11561,"meta":87,"style":87},[31,64756,64757,64761,64765,64769,64773,64793,64815,64839,64845,64881,64889,64925,64929,64933,64937,64941,64945,64949],{"__ignoreMap":87},[91,64758,64759],{"class":93,"line":94},[91,64760,12748],{"class":1343},[91,64762,64763],{"class":93,"line":105},[91,64764,1450],{"emptyLinePlaceholder":846},[91,64766,64767],{"class":93,"line":121},[91,64768,12757],{"class":1343},[91,64770,64771],{"class":93,"line":134},[91,64772,12762],{"class":1343},[91,64774,64775,64777,64779,64781,64783,64785,64787,64789,64791],{"class":93,"line":228},[91,64776,1968],{"class":566},[91,64778,12769],{"class":97},[91,64780,1366],{"class":566},[91,64782,2001],{"class":566},[91,64784,2662],{"class":101},[91,64786,12778],{"class":1172},[91,64788,64],{"class":101},[91,64790,12783],{"class":1172},[91,64792,3866],{"class":101},[91,64794,64795,64797,64799,64801,64803,64805,64807,64809,64811,64813],{"class":93,"line":250},[91,64796,2695],{"class":566},[91,64798,2676],{"class":566},[91,64800,1976],{"class":108},[91,64802,1169],{"class":101},[91,64804,1930],{"class":1172},[91,64806,64],{"class":101},[91,64808,2065],{"class":1172},[91,64810,1176],{"class":101},[91,64812,1179],{"class":566},[91,64814,102],{"class":101},[91,64816,64817,64819,64821,64823,64825,64827,64829,64831,64833,64835,64837],{"class":93,"line":260},[91,64818,2454],{"class":101},[91,64820,1225],{"class":97},[91,64822,795],{"class":101},[91,64824,12818],{"class":169},[91,64826,12821],{"class":108},[91,64828,12824],{"class":169},[91,64830,12827],{"class":101},[91,64832,12818],{"class":169},[91,64834,12821],{"class":108},[91,64836,12818],{"class":169},[91,64838,1594],{"class":101},[91,64840,64841,64843],{"class":93,"line":274},[91,64842,12840],{"class":566},[91,64844,102],{"class":101},[91,64846,64847,64849,64851,64853,64855,64857,64859,64861,64863,64865,64867,64869,64871,64873,64875,64877,64879],{"class":93,"line":284},[91,64848,12847],{"class":101},[91,64850,12734],{"class":97},[91,64852,12852],{"class":101},[91,64854,12855],{"class":1172},[91,64856,64],{"class":101},[91,64858,12860],{"class":1172},[91,64860,1176],{"class":101},[91,64862,1179],{"class":566},[91,64864,12867],{"class":101},[91,64866,9382],{"class":566},[91,64868,1363],{"class":108},[91,64870,12874],{"class":566},[91,64872,12877],{"class":97},[91,64874,12880],{"class":101},[91,64876,1208],{"class":566},[91,64878,12885],{"class":97},[91,64880,12888],{"class":101},[91,64882,64883,64885,64887],{"class":93,"line":299},[91,64884,12893],{"class":101},[91,64886,1256],{"class":566},[91,64888,12898],{"class":101},[91,64890,64891,64893,64895,64897,64899,64901,64903,64905,64907,64909,64911,64913,64915,64917,64919,64921,64923],{"class":93,"line":319},[91,64892,12847],{"class":101},[91,64894,12905],{"class":97},[91,64896,12852],{"class":101},[91,64898,12855],{"class":1172},[91,64900,64],{"class":101},[91,64902,12860],{"class":1172},[91,64904,1176],{"class":101},[91,64906,1179],{"class":566},[91,64908,12867],{"class":101},[91,64910,9382],{"class":566},[91,64912,1363],{"class":108},[91,64914,12874],{"class":566},[91,64916,12877],{"class":97},[91,64918,12880],{"class":101},[91,64920,1208],{"class":566},[91,64922,12885],{"class":97},[91,64924,12888],{"class":101},[91,64926,64927],{"class":93,"line":334},[91,64928,1693],{"class":101},[91,64930,64931],{"class":93,"line":355},[91,64932,12631],{"class":101},[91,64934,64935],{"class":93,"line":364},[91,64936,137],{"class":101},[91,64938,64939],{"class":93,"line":378},[91,64940,1450],{"emptyLinePlaceholder":846},[91,64942,64943],{"class":93,"line":387},[91,64944,12956],{"class":1343},[91,64946,64947],{"class":93,"line":402},[91,64948,12961],{"class":1343},[91,64950,64951,64953,64955,64957,64959,64961,64963],{"class":93,"line":422},[91,64952,12966],{"class":566},[91,64954,12769],{"class":97},[91,64956,12971],{"class":101},[91,64958,12974],{"class":97},[91,64960,12977],{"class":101},[91,64962,7557],{"class":108},[91,64964,9444],{"class":101},[16,64966,12984,64967,12987,64969,12990,64971,12994],{},[31,64968,12905],{},[31,64970,12905],{},[31,64972,12993],{},[16,64974,12997,64975,13000,64977,13004],{},[31,64976,11291],{},[31,64978,13003],{},[82,64980,64981],{"className":11559,"code":13007,"language":11561,"meta":87,"style":87},[31,64982,64983,64999,65015,65019,65035,65065,65085,65091,65107,65115,65121,65125,65129,65133,65145,65153,65165,65177,65189,65197,65201,65205,65209,65213,65229,65241,65255,65269,65283,65287,65291],{"__ignoreMap":87},[91,64984,64985,64987,64989,64991,64993,64995,64997],{"class":93,"line":94},[91,64986,1968],{"class":566},[91,64988,13016],{"class":108},[91,64990,1366],{"class":566},[91,64992,13021],{"class":97},[91,64994,795],{"class":101},[91,64996,13026],{"class":169},[91,64998,3487],{"class":101},[91,65000,65001,65003,65005,65007,65009,65011,65013],{"class":93,"line":105},[91,65002,1968],{"class":566},[91,65004,13035],{"class":108},[91,65006,1366],{"class":566},[91,65008,13021],{"class":97},[91,65010,795],{"class":101},[91,65012,13044],{"class":169},[91,65014,3487],{"class":101},[91,65016,65017],{"class":93,"line":121},[91,65018,1450],{"emptyLinePlaceholder":846},[91,65020,65021,65023,65025,65027,65029,65031,65033],{"class":93,"line":134},[91,65022,1968],{"class":566},[91,65024,13057],{"class":108},[91,65026,1366],{"class":566},[91,65028,13021],{"class":97},[91,65030,795],{"class":101},[91,65032,13066],{"class":169},[91,65034,3487],{"class":101},[91,65036,65037,65039,65041,65043,65045,65047,65049,65051,65053,65055,65057,65059,65061,65063],{"class":93,"line":228},[91,65038,1968],{"class":566},[91,65040,13075],{"class":108},[91,65042,1366],{"class":566},[91,65044,13080],{"class":101},[91,65046,13083],{"class":97},[91,65048,795],{"class":101},[91,65050,11856],{"class":1172},[91,65052,11859],{"class":566},[91,65054,13092],{"class":169},[91,65056,11856],{"class":101},[91,65058,1235],{"class":169},[91,65060,5177],{"class":101},[91,65062,1241],{"class":169},[91,65064,3487],{"class":101},[91,65066,65067,65069,65071,65073,65075,65077,65079,65081,65083],{"class":93,"line":250},[91,65068,1968],{"class":566},[91,65070,13109],{"class":108},[91,65072,1366],{"class":566},[91,65074,13080],{"class":101},[91,65076,13083],{"class":97},[91,65078,795],{"class":101},[91,65080,11856],{"class":1172},[91,65082,11859],{"class":566},[91,65084,102],{"class":101},[91,65086,65087,65089],{"class":93,"line":260},[91,65088,2695],{"class":566},[91,65090,13130],{"class":101},[91,65092,65093,65095,65097,65099,65101,65103,65105],{"class":93,"line":274},[91,65094,13135],{"class":101},[91,65096,13138],{"class":169},[91,65098,11856],{"class":101},[91,65100,1235],{"class":169},[91,65102,1238],{"class":101},[91,65104,13147],{"class":169},[91,65106,7560],{"class":101},[91,65108,65109,65111,65113],{"class":93,"line":284},[91,65110,13154],{"class":101},[91,65112,7829],{"class":566},[91,65114,13159],{"class":101},[91,65116,65117,65119],{"class":93,"line":299},[91,65118,13164],{"class":101},[91,65120,13167],{"class":169},[91,65122,65123],{"class":93,"line":319},[91,65124,1698],{"class":101},[91,65126,65127],{"class":93,"line":334},[91,65128,9444],{"class":101},[91,65130,65131],{"class":93,"line":355},[91,65132,1450],{"emptyLinePlaceholder":846},[91,65134,65135,65137,65139,65141,65143],{"class":93,"line":364},[91,65136,10966],{"class":108},[91,65138,1235],{"class":101},[91,65140,10971],{"class":108},[91,65142,1366],{"class":566},[91,65144,13192],{"class":101},[91,65146,65147,65149,65151],{"class":93,"line":378},[91,65148,13197],{"class":566},[91,65150,13035],{"class":97},[91,65152,7549],{"class":101},[91,65154,65155,65157,65159,65161,65163],{"class":93,"line":387},[91,65156,13206],{"class":101},[91,65158,13209],{"class":97},[91,65160,13212],{"class":101},[91,65162,13215],{"class":169},[91,65164,8037],{"class":101},[91,65166,65167,65169,65171,65173,65175],{"class":93,"line":402},[91,65168,13222],{"class":101},[91,65170,13225],{"class":169},[91,65172,64],{"class":101},[91,65174,1442],{"class":566},[91,65176,13232],{"class":101},[91,65178,65179,65181,65183,65185,65187],{"class":93,"line":422},[91,65180,13237],{"class":101},[91,65182,13240],{"class":566},[91,65184,13243],{"class":101},[91,65186,13246],{"class":97},[91,65188,7549],{"class":101},[91,65190,65191,65193,65195],{"class":93,"line":438},[91,65192,13253],{"class":101},[91,65194,13256],{"class":169},[91,65196,7560],{"class":101},[91,65198,65199],{"class":93,"line":458},[91,65200,10100],{"class":101},[91,65202,65203],{"class":93,"line":467},[91,65204,13267],{"class":101},[91,65206,65207],{"class":93,"line":481},[91,65208,12327],{"class":101},[91,65210,65211],{"class":93,"line":490},[91,65212,10961],{"class":1343},[91,65214,65215,65217,65219,65221,65223,65225,65227],{"class":93,"line":3310},[91,65216,1968],{"class":566},[91,65218,13282],{"class":108},[91,65220,1366],{"class":566},[91,65222,13021],{"class":97},[91,65224,795],{"class":101},[91,65226,13291],{"class":169},[91,65228,1594],{"class":101},[91,65230,65231,65233,65235,65237,65239],{"class":93,"line":3315},[91,65232,10966],{"class":108},[91,65234,1235],{"class":101},[91,65236,10971],{"class":108},[91,65238,1366],{"class":566},[91,65240,102],{"class":101},[91,65242,65243,65245,65247,65249,65251,65253],{"class":93,"line":3321},[91,65244,13310],{"class":97},[91,65246,6549],{"class":101},[91,65248,13315],{"class":1172},[91,65250,1176],{"class":101},[91,65252,1179],{"class":566},[91,65254,102],{"class":101},[91,65256,65257,65259,65261,65263,65265,65267],{"class":93,"line":3327},[91,65258,13326],{"class":566},[91,65260,13329],{"class":101},[91,65262,13332],{"class":108},[91,65264,13335],{"class":566},[91,65266,13338],{"class":169},[91,65268,3866],{"class":101},[91,65270,65271,65273,65275,65277,65279,65281],{"class":93,"line":3333},[91,65272,13345],{"class":101},[91,65274,13348],{"class":97},[91,65276,795],{"class":101},[91,65278,1442],{"class":566},[91,65280,13355],{"class":101},[91,65282,13358],{"class":1343},[91,65284,65285],{"class":93,"line":3338},[91,65286,10095],{"class":101},[91,65288,65289],{"class":93,"line":3343},[91,65290,3477],{"class":101},[91,65292,65293],{"class":93,"line":7882},[91,65294,137],{"class":101},[16,65296,13373],{},[16,65298,65299],{},[19,65300],{"alt":21,"src":13378},[16,65302,13381],{},[49,65304,13385],{"id":13384},[82,65306,65307],{"className":11559,"code":13388,"language":11561,"meta":87,"style":87},[31,65308,65309],{"__ignoreMap":87},[91,65310,65311,65313,65315,65317,65319,65321,65323,65325],{"class":93,"line":94},[91,65312,12655],{"class":101},[91,65314,8409],{"class":566},[91,65316,12660],{"class":108},[91,65318,13401],{"class":101},[91,65320,8409],{"class":566},[91,65322,13406],{"class":101},[91,65324,8409],{"class":566},[91,65326,13411],{"class":101},[16,65328,13414,65329,13418],{},[31,65330,13417],{},[82,65332,65333],{"className":11559,"code":13421,"language":11561,"meta":87,"style":87},[31,65334,65335,65351,65371,65377,65393,65401,65407,65411,65415,65419,65431,65437,65445,65453,65457,65461],{"__ignoreMap":87},[91,65336,65337,65339,65341,65343,65345,65347,65349],{"class":93,"line":94},[91,65338,1968],{"class":566},[91,65340,13430],{"class":108},[91,65342,1366],{"class":566},[91,65344,13021],{"class":97},[91,65346,795],{"class":101},[91,65348,13439],{"class":169},[91,65350,13442],{"class":101},[91,65352,65353,65355,65357,65359,65361,65363,65365,65367,65369],{"class":93,"line":105},[91,65354,1968],{"class":566},[91,65356,13109],{"class":108},[91,65358,1366],{"class":566},[91,65360,13080],{"class":101},[91,65362,13083],{"class":97},[91,65364,795],{"class":101},[91,65366,11856],{"class":1172},[91,65368,11859],{"class":566},[91,65370,102],{"class":101},[91,65372,65373,65375],{"class":93,"line":121},[91,65374,2695],{"class":566},[91,65376,13130],{"class":101},[91,65378,65379,65381,65383,65385,65387,65389,65391],{"class":93,"line":134},[91,65380,13473],{"class":101},[91,65382,13138],{"class":169},[91,65384,11856],{"class":101},[91,65386,1235],{"class":169},[91,65388,5177],{"class":101},[91,65390,13147],{"class":169},[91,65392,7560],{"class":101},[91,65394,65395,65397,65399],{"class":93,"line":228},[91,65396,13490],{"class":101},[91,65398,7829],{"class":566},[91,65400,13495],{"class":101},[91,65402,65403,65405],{"class":93,"line":250},[91,65404,13164],{"class":101},[91,65406,13167],{"class":169},[91,65408,65409],{"class":93,"line":260},[91,65410,1698],{"class":101},[91,65412,65413],{"class":93,"line":274},[91,65414,9444],{"class":101},[91,65416,65417],{"class":93,"line":284},[91,65418,1450],{"emptyLinePlaceholder":846},[91,65420,65421,65423,65425,65427,65429],{"class":93,"line":299},[91,65422,10966],{"class":108},[91,65424,1235],{"class":101},[91,65426,10971],{"class":108},[91,65428,1366],{"class":566},[91,65430,13192],{"class":101},[91,65432,65433,65435],{"class":93,"line":319},[91,65434,13530],{"class":566},[91,65436,7560],{"class":101},[91,65438,65439,65441,65443],{"class":93,"line":334},[91,65440,13197],{"class":566},[91,65442,13430],{"class":97},[91,65444,7549],{"class":101},[91,65446,65447,65449,65451],{"class":93,"line":355},[91,65448,13545],{"class":101},[91,65450,13548],{"class":108},[91,65452,7560],{"class":101},[91,65454,65455],{"class":93,"line":364},[91,65456,13555],{"class":101},[91,65458,65459],{"class":93,"line":378},[91,65460,12631],{"class":101},[91,65462,65463],{"class":93,"line":387},[91,65464,12327],{"class":101},[16,65466,13566],{},[82,65468,65469],{"className":11559,"code":13569,"language":11561,"meta":87,"style":87},[31,65470,65471,65479,65491,65503,65515,65523,65531,65543,65555,65567],{"__ignoreMap":87},[91,65472,65473,65475,65477],{"class":93,"line":94},[91,65474,156],{"class":101},[91,65476,5177],{"class":159},[91,65478,173],{"class":101},[91,65480,65481,65483,65485,65487,65489],{"class":93,"line":105},[91,65482,178],{"class":101},[91,65484,13586],{"class":159},[91,65486,13589],{"class":101},[91,65488,13586],{"class":159},[91,65490,173],{"class":101},[91,65492,65493,65495,65497,65499,65501],{"class":93,"line":121},[91,65494,178],{"class":101},[91,65496,13600],{"class":159},[91,65498,13603],{"class":101},[91,65500,13600],{"class":159},[91,65502,173],{"class":101},[91,65504,65505,65507,65509,65511,65513],{"class":93,"line":134},[91,65506,178],{"class":101},[91,65508,13614],{"class":159},[91,65510,13617],{"class":101},[91,65512,13614],{"class":159},[91,65514,173],{"class":101},[91,65516,65517,65519,65521],{"class":93,"line":228},[91,65518,493],{"class":101},[91,65520,5177],{"class":159},[91,65522,173],{"class":101},[91,65524,65525,65527,65529],{"class":93,"line":250},[91,65526,156],{"class":101},[91,65528,5177],{"class":159},[91,65530,173],{"class":101},[91,65532,65533,65535,65537,65539,65541],{"class":93,"line":260},[91,65534,178],{"class":101},[91,65536,13586],{"class":159},[91,65538,13646],{"class":101},[91,65540,13586],{"class":159},[91,65542,173],{"class":101},[91,65544,65545,65547,65549,65551,65553],{"class":93,"line":274},[91,65546,178],{"class":101},[91,65548,13600],{"class":159},[91,65550,13603],{"class":101},[91,65552,13600],{"class":159},[91,65554,173],{"class":101},[91,65556,65557,65559,65561,65563,65565],{"class":93,"line":284},[91,65558,178],{"class":101},[91,65560,13614],{"class":159},[91,65562,13617],{"class":101},[91,65564,13614],{"class":159},[91,65566,173],{"class":101},[91,65568,65569,65571,65573],{"class":93,"line":299},[91,65570,493],{"class":101},[91,65572,5177],{"class":159},[91,65574,173],{"class":101},[16,65576,13685,65577,13689],{},[31,65578,13688],{},[757,65580,13693],{"id":13692},[16,65582,65583],{},[4306,65584,13700],{"href":13698,"rel":65585},[4310],[16,65587,13703],{},[16,65589,65590],{},[19,65591],{"alt":21,"src":13708},[16,65593,13711],{},[16,65595,65596],{},[19,65597],{"alt":21,"src":13716},[82,65599,65600],{"className":11559,"code":13719,"language":11561,"meta":87,"style":87},[31,65601,65602,65612,65626,65634,65654,65662],{"__ignoreMap":87},[91,65603,65604,65606,65608,65610],{"class":93,"line":94},[91,65605,13726],{"class":566},[91,65607,13729],{"class":108},[91,65609,13732],{"class":101},[91,65611,173],{"class":566},[91,65613,65614,65616,65618,65620,65622,65624],{"class":93,"line":105},[91,65615,156],{"class":101},[91,65617,149],{"class":159},[91,65619,1951],{"class":97},[91,65621,166],{"class":566},[91,65623,13747],{"class":169},[91,65625,173],{"class":101},[91,65627,65628,65630,65632],{"class":93,"line":121},[91,65629,2125],{"class":101},[91,65631,13756],{"class":159},[91,65633,173],{"class":101},[91,65635,65636,65638,65640,65642,65644,65646,65648,65650,65652],{"class":93,"line":134},[91,65637,178],{"class":101},[91,65639,13765],{"class":159},[91,65641,13768],{"class":97},[91,65643,166],{"class":566},[91,65645,13773],{"class":169},[91,65647,13776],{"class":97},[91,65649,166],{"class":566},[91,65651,13781],{"class":169},[91,65653,2147],{"class":101},[91,65655,65656,65658,65660],{"class":93,"line":228},[91,65657,277],{"class":101},[91,65659,13756],{"class":159},[91,65661,173],{"class":101},[91,65663,65664,65666,65668],{"class":93,"line":250},[91,65665,493],{"class":101},[91,65667,149],{"class":159},[91,65669,173],{"class":101},[16,65671,13802],{},[16,65673,65674],{},[19,65675],{"alt":21,"src":13807},[16,65677,13810],{},[16,65679,65680],{},[19,65681],{"alt":21,"src":13815},[16,65683,13818],{},[16,65685,65686],{},[19,65687],{"alt":21,"src":13823},[16,65689,13826,65690,13830],{},[31,65691,13829],{},[16,65693,65694],{},[19,65695],{"alt":21,"src":13835},[16,65697,13838],{},[49,65699,13842],{"id":13841},[16,65701,13845],{},[82,65703,65704],{"className":11559,"code":13848,"language":11561,"meta":87,"style":87},[31,65705,65706,65718,65726,65736,65746,65758,65782,65794,65800,65804,65826,65864,65878,65892,65918,65940,65944,65954,65962,65970,65978,65986,65994,65998,66006,66014,66022,66030,66038,66046,66054,66062,66068,66096,66124,66132,66138],{"__ignoreMap":87},[91,65707,65708,65710,65712,65714,65716],{"class":93,"line":94},[91,65709,10966],{"class":108},[91,65711,1235],{"class":101},[91,65713,10971],{"class":108},[91,65715,1366],{"class":566},[91,65717,13192],{"class":101},[91,65719,65720,65722,65724],{"class":93,"line":105},[91,65721,13197],{"class":566},[91,65723,13035],{"class":97},[91,65725,7549],{"class":101},[91,65727,65728,65730,65732,65734],{"class":93,"line":121},[91,65729,13875],{"class":97},[91,65731,795],{"class":101},[91,65733,13880],{"class":1172},[91,65735,3866],{"class":101},[91,65737,65738,65740,65742,65744],{"class":93,"line":134},[91,65739,13887],{"class":566},[91,65741,13890],{"class":101},[91,65743,166],{"class":566},[91,65745,13895],{"class":101},[91,65747,65748,65750,65752,65754,65756],{"class":93,"line":228},[91,65749,13900],{"class":101},[91,65751,1225],{"class":97},[91,65753,795],{"class":101},[91,65755,13907],{"class":169},[91,65757,13910],{"class":101},[91,65759,65760,65762,65764,65766,65768,65770,65772,65774,65776,65778,65780],{"class":93,"line":250},[91,65761,13915],{"class":566},[91,65763,13918],{"class":108},[91,65765,1366],{"class":566},[91,65767,13080],{"class":101},[91,65769,11851],{"class":97},[91,65771,795],{"class":101},[91,65773,11856],{"class":1172},[91,65775,11859],{"class":566},[91,65777,13933],{"class":101},[91,65779,13936],{"class":97},[91,65781,13939],{"class":101},[91,65783,65784,65786,65788,65790,65792],{"class":93,"line":260},[91,65785,13326],{"class":566},[91,65787,13946],{"class":101},[91,65789,11788],{"class":566},[91,65791,1363],{"class":108},[91,65793,3866],{"class":101},[91,65795,65796,65798],{"class":93,"line":274},[91,65797,11866],{"class":566},[91,65799,13895],{"class":101},[91,65801,65802],{"class":93,"line":284},[91,65803,10095],{"class":101},[91,65805,65806,65808,65810,65812,65814,65816,65818,65820,65822,65824],{"class":93,"line":299},[91,65807,13915],{"class":566},[91,65809,13969],{"class":101},[91,65811,13972],{"class":108},[91,65813,64],{"class":101},[91,65815,13977],{"class":108},[91,65817,64],{"class":101},[91,65819,13982],{"class":108},[91,65821,13985],{"class":101},[91,65823,166],{"class":566},[91,65825,13990],{"class":101},[91,65827,65828,65830,65832,65834,65836,65838,65840,65842,65844,65846,65848,65850,65852,65854,65856,65858,65860,65862],{"class":93,"line":319},[91,65829,13915],{"class":566},[91,65831,13997],{"class":108},[91,65833,1366],{"class":566},[91,65835,14002],{"class":101},[91,65837,8372],{"class":566},[91,65839,14007],{"class":101},[91,65841,14010],{"class":97},[91,65843,795],{"class":101},[91,65845,8361],{"class":169},[91,65847,14018],{"class":14017},[91,65849,8361],{"class":169},[91,65851,14023],{"class":566},[91,65853,64],{"class":101},[91,65855,14028],{"class":169},[91,65857,1176],{"class":101},[91,65859,1208],{"class":566},[91,65861,14035],{"class":101},[91,65863,14038],{"class":108},[91,65865,65866,65868,65870,65872,65874,65876],{"class":93,"line":334},[91,65867,13915],{"class":566},[91,65869,14045],{"class":108},[91,65871,1366],{"class":566},[91,65873,14050],{"class":101},[91,65875,7829],{"class":566},[91,65877,14055],{"class":169},[91,65879,65880,65882,65884,65886,65888,65890],{"class":93,"line":355},[91,65881,13915],{"class":566},[91,65883,14062],{"class":108},[91,65885,1366],{"class":566},[91,65887,14067],{"class":101},[91,65889,7829],{"class":566},[91,65891,14072],{"class":169},[91,65893,65894,65896,65898,65900,65902,65904,65906,65908,65910,65912,65914,65916],{"class":93,"line":364},[91,65895,13915],{"class":566},[91,65897,14079],{"class":108},[91,65899,1366],{"class":566},[91,65901,14084],{"class":169},[91,65903,14087],{"class":101},[91,65905,1235],{"class":169},[91,65907,14092],{"class":101},[91,65909,1235],{"class":169},[91,65911,13548],{"class":108},[91,65913,14099],{"class":169},[91,65915,14102],{"class":101},[91,65917,14105],{"class":169},[91,65919,65920,65922,65924,65926,65928,65930,65932,65934,65936,65938],{"class":93,"line":378},[91,65921,13915],{"class":566},[91,65923,14112],{"class":108},[91,65925,1366],{"class":566},[91,65927,14084],{"class":169},[91,65929,14087],{"class":101},[91,65931,1235],{"class":169},[91,65933,14092],{"class":101},[91,65935,1235],{"class":169},[91,65937,13548],{"class":108},[91,65939,14129],{"class":169},[91,65941,65942],{"class":93,"line":387},[91,65943,1450],{"emptyLinePlaceholder":846},[91,65945,65946,65948,65950,65952],{"class":93,"line":402},[91,65947,13915],{"class":566},[91,65949,14140],{"class":108},[91,65951,1366],{"class":566},[91,65953,14145],{"class":169},[91,65955,65956,65958,65960],{"class":93,"line":422},[91,65957,14150],{"class":169},[91,65959,14153],{"class":101},[91,65961,14156],{"class":169},[91,65963,65964,65966,65968],{"class":93,"line":438},[91,65965,14161],{"class":169},[91,65967,14153],{"class":101},[91,65969,14166],{"class":169},[91,65971,65972,65974,65976],{"class":93,"line":458},[91,65973,14171],{"class":169},[91,65975,14174],{"class":101},[91,65977,14166],{"class":169},[91,65979,65980,65982,65984],{"class":93,"line":467},[91,65981,14181],{"class":169},[91,65983,14184],{"class":101},[91,65985,14166],{"class":169},[91,65987,65988,65990,65992],{"class":93,"line":481},[91,65989,14191],{"class":169},[91,65991,5177],{"class":101},[91,65993,14166],{"class":169},[91,65995,65996],{"class":93,"line":490},[91,65997,14200],{"class":169},[91,65999,66000,66002,66004],{"class":93,"line":3310},[91,66001,14205],{"class":169},[91,66003,14153],{"class":101},[91,66005,14166],{"class":169},[91,66007,66008,66010,66012],{"class":93,"line":3315},[91,66009,14214],{"class":169},[91,66011,14174],{"class":101},[91,66013,14166],{"class":169},[91,66015,66016,66018,66020],{"class":93,"line":3321},[91,66017,14223],{"class":169},[91,66019,14226],{"class":101},[91,66021,14166],{"class":169},[91,66023,66024,66026,66028],{"class":93,"line":3327},[91,66025,14233],{"class":169},[91,66027,14226],{"class":101},[91,66029,14166],{"class":169},[91,66031,66032,66034,66036],{"class":93,"line":3333},[91,66033,14242],{"class":169},[91,66035,5177],{"class":101},[91,66037,14166],{"class":169},[91,66039,66040,66042,66044],{"class":93,"line":3338},[91,66041,14251],{"class":169},[91,66043,14153],{"class":101},[91,66045,14166],{"class":169},[91,66047,66048,66050,66052],{"class":93,"line":3343},[91,66049,14260],{"class":169},[91,66051,14174],{"class":101},[91,66053,14166],{"class":169},[91,66055,66056,66058,66060],{"class":93,"line":7882},[91,66057,14269],{"class":169},[91,66059,14226],{"class":101},[91,66061,14166],{"class":169},[91,66063,66064,66066],{"class":93,"line":7887},[91,66065,14278],{"class":169},[91,66067,118],{"class":101},[91,66069,66070,66072,66074,66076,66078,66080,66082,66084,66086,66088,66090,66092,66094],{"class":93,"line":7892},[91,66071,13915],{"class":566},[91,66073,14287],{"class":108},[91,66075,1366],{"class":566},[91,66077,14292],{"class":101},[91,66079,14295],{"class":97},[91,66081,795],{"class":101},[91,66083,14300],{"class":169},[91,66085,1176],{"class":101},[91,66087,8406],{"class":566},[91,66089,14307],{"class":169},[91,66091,1235],{"class":101},[91,66093,11811],{"class":108},[91,66095,118],{"class":101},[91,66097,66098,66100,66102,66104,66106,66108,66110,66112,66114,66116,66118,66120,66122],{"class":93,"line":7906},[91,66099,14318],{"class":101},[91,66101,166],{"class":566},[91,66103,14292],{"class":101},[91,66105,8026],{"class":97},[91,66107,795],{"class":101},[91,66109,1578],{"class":108},[91,66111,14331],{"class":101},[91,66113,8406],{"class":566},[91,66115,14336],{"class":101},[91,66117,8406],{"class":566},[91,66119,14292],{"class":101},[91,66121,8026],{"class":97},[91,66123,14345],{"class":101},[91,66125,66126,66128,66130],{"class":93,"line":7922},[91,66127,14350],{"class":101},[91,66129,166],{"class":566},[91,66131,14355],{"class":101},[91,66133,66134,66136],{"class":93,"line":7927},[91,66135,11825],{"class":566},[91,66137,14362],{"class":101},[91,66139,66140],{"class":93,"line":7967},[91,66141,3477],{"class":101},[16,66143,14369,66144,14373,66146,14377,66148,64,66150,14382,66152,14386],{},[31,66145,14372],{},[31,66147,14376],{},[31,66149,13972],{},[31,66151,13977],{},[31,66153,14385],{},[49,66155,14390],{"id":14389},[16,66157,14393],{},[757,66159,14397],{"id":14396},[16,66161,66162],{},[4306,66163,14404],{"href":14402,"rel":66164},[4310],[16,66166,66167],{},[19,66168],{"alt":21,"src":14409},[16,66170,14412],{},[16,66172,66173],{},[19,66174],{"alt":21,"src":14417},[16,66176,14420],{},[771,66178,14424],{"id":14423},[16,66180,14427,66181,14431,66183,14435],{},[31,66182,14430],{},[31,66184,14434],{},[82,66186,66187],{"className":11559,"code":14438,"language":11561,"meta":87,"style":87},[31,66188,66189,66193,66197,66201,66207,66235,66239,66245,66251,66257,66269,66303,66317,66329],{"__ignoreMap":87},[91,66190,66191],{"class":93,"line":94},[91,66192,14445],{"class":101},[91,66194,66195],{"class":93,"line":105},[91,66196,14450],{"class":101},[91,66198,66199],{"class":93,"line":121},[91,66200,14455],{"class":101},[91,66202,66203,66205],{"class":93,"line":134},[91,66204,14460],{"class":101},[91,66206,14463],{"class":566},[91,66208,66209,66211,66213,66215,66217,66219,66221,66223,66225,66227,66229,66231,66233],{"class":93,"line":228},[91,66210,14468],{"class":101},[91,66212,14471],{"class":97},[91,66214,14474],{"class":97},[91,66216,14477],{"class":97},[91,66218,14480],{"class":97},[91,66220,14483],{"class":97},[91,66222,14486],{"class":101},[91,66224,14489],{"class":97},[91,66226,14492],{"class":97},[91,66228,14495],{"class":97},[91,66230,11795],{"class":97},[91,66232,14500],{"class":97},[91,66234,14503],{"class":101},[91,66236,66237],{"class":93,"line":250},[91,66238,14445],{"class":101},[91,66240,66241,66243],{"class":93,"line":260},[91,66242,14512],{"class":101},[91,66244,14515],{"class":97},[91,66246,66247,66249],{"class":93,"line":274},[91,66248,14520],{"class":101},[91,66250,14523],{"class":97},[91,66252,66253,66255],{"class":93,"line":284},[91,66254,14528],{"class":101},[91,66256,14515],{"class":97},[91,66258,66259,66261,66263,66265,66267],{"class":93,"line":299},[91,66260,14468],{"class":101},[91,66262,14537],{"class":97},[91,66264,14540],{"class":97},[91,66266,14543],{"class":97},[91,66268,14546],{"class":97},[91,66270,66271,66273,66275,66277,66279,66281,66283,66285,66287,66289,66291,66293,66295,66297,66299,66301],{"class":93,"line":319},[91,66272,14468],{"class":101},[91,66274,14553],{"class":97},[91,66276,14556],{"class":97},[91,66278,14474],{"class":97},[91,66280,14561],{"class":97},[91,66282,14564],{"class":97},[91,66284,14567],{"class":97},[91,66286,14570],{"class":97},[91,66288,14573],{"class":97},[91,66290,10273],{"class":97},[91,66292,14474],{"class":97},[91,66294,14580],{"class":97},[91,66296,14583],{"class":97},[91,66298,14474],{"class":97},[91,66300,14588],{"class":97},[91,66302,7265],{"class":101},[91,66304,66305,66307,66309,66311,66313,66315],{"class":93,"line":334},[91,66306,14595],{"class":101},[91,66308,14598],{"class":97},[91,66310,1235],{"class":101},[91,66312,14603],{"class":97},[91,66314,1235],{"class":101},[91,66316,14608],{"class":97},[91,66318,66319,66321,66323,66325,66327],{"class":93,"line":355},[91,66320,14613],{"class":101},[91,66322,14616],{"class":97},[91,66324,1235],{"class":101},[91,66326,14621],{"class":97},[91,66328,12474],{"class":101},[91,66330,66331,66333,66335,66337],{"class":93,"line":364},[91,66332,14468],{"class":101},[91,66334,14630],{"class":97},[91,66336,10060],{"class":97},[91,66338,14635],{"class":97},[16,66340,66341,14641,66343,14645],{},[31,66342,14640],{},[31,66344,14644],{},[16,66346,66347],{},[19,66348],{"alt":21,"src":14650},[16,66350,14653],{},[82,66352,66353],{"className":11559,"code":14656,"language":11561,"meta":87,"style":87},[31,66354,66355,66359,66371,66375,66379,66387,66391,66395,66403,66407],{"__ignoreMap":87},[91,66356,66357],{"class":93,"line":94},[91,66358,10961],{"class":1343},[91,66360,66361,66363,66365,66367,66369],{"class":93,"line":105},[91,66362,10966],{"class":108},[91,66364,1235],{"class":101},[91,66366,10971],{"class":108},[91,66368,1366],{"class":566},[91,66370,102],{"class":101},[91,66372,66373],{"class":93,"line":121},[91,66374,14679],{"class":101},[91,66376,66377],{"class":93,"line":134},[91,66378,14684],{"class":1343},[91,66380,66381,66383,66385],{"class":93,"line":228},[91,66382,14689],{"class":101},[91,66384,7557],{"class":108},[91,66386,7560],{"class":101},[91,66388,66389],{"class":93,"line":250},[91,66390,14698],{"class":1343},[91,66392,66393],{"class":93,"line":260},[91,66394,14703],{"class":1343},[91,66396,66397,66399,66401],{"class":93,"line":274},[91,66398,14708],{"class":101},[91,66400,14711],{"class":169},[91,66402,7560],{"class":101},[91,66404,66405],{"class":93,"line":284},[91,66406,1698],{"class":101},[91,66408,66409],{"class":93,"line":299},[91,66410,137],{"class":101},[16,66412,14724,66413,14728,66415,14732],{},[31,66414,14727],{},[31,66416,14731],{},[757,66418,14736],{"id":14735},[82,66420,66421],{"className":11559,"code":14739,"language":11561,"meta":87,"style":87},[31,66422,66423],{"__ignoreMap":87},[91,66424,66425,66427,66429,66431,66433],{"class":93,"line":94},[91,66426,14746],{"class":101},[91,66428,8409],{"class":566},[91,66430,14751],{"class":101},[91,66432,8409],{"class":566},[91,66434,14756],{"class":101},[16,66436,14759,66437,14763,66439,14766,66441,14770],{},[31,66438,14762],{},[31,66440,14762],{},[31,66442,14769],{},[82,66444,66445],{"className":11559,"code":14773,"language":11561,"meta":87,"style":87},[31,66446,66447,66451,66463,66467,66481,66495,66507,66511,66515,66527,66535,66543,66553,66557,66567,66571,66577],{"__ignoreMap":87},[91,66448,66449],{"class":93,"line":94},[91,66450,14780],{"class":1343},[91,66452,66453,66455,66457,66459,66461],{"class":93,"line":105},[91,66454,2499],{"class":566},[91,66456,14787],{"class":101},[91,66458,2505],{"class":566},[91,66460,14792],{"class":169},[91,66462,118],{"class":101},[91,66464,66465],{"class":93,"line":121},[91,66466,1450],{"emptyLinePlaceholder":846},[91,66468,66469,66471,66473,66475,66477,66479],{"class":93,"line":134},[91,66470,1349],{"class":566},[91,66472,14805],{"class":108},[91,66474,1366],{"class":566},[91,66476,14810],{"class":169},[91,66478,14813],{"class":101},[91,66480,14816],{"class":1343},[91,66482,66483,66485,66487,66489,66491,66493],{"class":93,"line":228},[91,66484,5226],{"class":566},[91,66486,14823],{"class":101},[91,66488,13332],{"class":108},[91,66490,13335],{"class":566},[91,66492,14830],{"class":169},[91,66494,3866],{"class":101},[91,66496,66497,66499,66501,66503,66505],{"class":93,"line":250},[91,66498,14837],{"class":108},[91,66500,1366],{"class":566},[91,66502,14842],{"class":169},[91,66504,14813],{"class":101},[91,66506,14847],{"class":1343},[91,66508,66509],{"class":93,"line":260},[91,66510,137],{"class":101},[91,66512,66513],{"class":93,"line":274},[91,66514,1450],{"emptyLinePlaceholder":846},[91,66516,66517,66519,66521,66523,66525],{"class":93,"line":284},[91,66518,1968],{"class":566},[91,66520,14862],{"class":108},[91,66522,1366],{"class":566},[91,66524,14867],{"class":97},[91,66526,14870],{"class":101},[91,66528,66529,66531,66533],{"class":93,"line":299},[91,66530,1235],{"class":101},[91,66532,14877],{"class":97},[91,66534,14880],{"class":101},[91,66536,66537,66539,66541],{"class":93,"line":319},[91,66538,1235],{"class":101},[91,66540,14877],{"class":97},[91,66542,14889],{"class":101},[91,66544,66545,66547,66549,66551],{"class":93,"line":334},[91,66546,14894],{"class":566},[91,66548,1235],{"class":101},[91,66550,14877],{"class":97},[91,66552,14901],{"class":101},[91,66554,66555],{"class":93,"line":355},[91,66556,14906],{"class":101},[91,66558,66559,66561,66563,66565],{"class":93,"line":364},[91,66560,14911],{"class":101},[91,66562,14914],{"class":108},[91,66564,64],{"class":101},[91,66566,14847],{"class":1343},[91,66568,66569],{"class":93,"line":378},[91,66570,1693],{"class":101},[91,66572,66573,66575],{"class":93,"line":387},[91,66574,14927],{"class":101},[91,66576,12474],{"class":566},[91,66578,66579,66581,66583,66585,66587],{"class":93,"line":402},[91,66580,1235],{"class":101},[91,66582,14936],{"class":97},[91,66584,795],{"class":101},[91,66586,13256],{"class":169},[91,66588,3487],{"class":101},[16,66590,14945,66591,14948],{},[31,66592,14877],{},[82,66594,66595],{"className":11559,"code":14951,"language":11561,"meta":87,"style":87},[31,66596,66597,66601,66611,66623,66627,66631,66635],{"__ignoreMap":87},[91,66598,66599],{"class":93,"line":94},[91,66600,14958],{"class":1343},[91,66602,66603,66605,66607,66609],{"class":93,"line":105},[91,66604,2499],{"class":566},[91,66606,14965],{"class":101},[91,66608,2505],{"class":566},[91,66610,14970],{"class":169},[91,66612,66613,66615,66617,66619,66621],{"class":93,"line":121},[91,66614,1968],{"class":566},[91,66616,14977],{"class":108},[91,66618,1366],{"class":566},[91,66620,14982],{"class":97},[91,66622,7549],{"class":101},[91,66624,66625],{"class":93,"line":134},[91,66626,14989],{"class":566},[91,66628,66629],{"class":93,"line":228},[91,66630,9444],{"class":101},[91,66632,66633],{"class":93,"line":250},[91,66634,1450],{"emptyLinePlaceholder":846},[91,66636,66637,66639],{"class":93,"line":260},[91,66638,15002],{"class":97},[91,66640,15005],{"class":101},[16,66642,66643,15010],{},[31,66644,15002],{},[829,66646,15013],{},{"title":87,"searchDepth":105,"depth":105,"links":66648},[66649,66650,66655,66656,66657,66658,66661,66662],{"id":10866,"depth":105,"text":10867},{"id":10890,"depth":105,"text":10891,"children":66651},[66652,66653,66654],{"id":10919,"depth":121,"text":10919},{"id":10935,"depth":121,"text":10910},{"id":11003,"depth":121,"text":11004},{"id":11350,"depth":105,"text":11351},{"id":12345,"depth":105,"text":12346},{"id":12641,"depth":105,"text":12642},{"id":13384,"depth":105,"text":13385,"children":66659},[66660],{"id":13692,"depth":121,"text":13693},{"id":13841,"depth":105,"text":13842},{"id":14389,"depth":105,"text":14390,"children":66663},[66664,66665],{"id":14396,"depth":121,"text":14397},{"id":14735,"depth":121,"text":14736},{},{"title":10845,"description":15034},{"loc":15037},[15042,15043,15044,15045,15046,15047,15048],{"id":15052,"title":15053,"body":66671,"created":1501,"description":15275,"extension":843,"filename":15276,"meta":66844,"navigation":846,"path":15278,"seo":66845,"sitemap":66846,"stem":15281,"subject":15282,"tags":66847,"updated":1501,"volume":1863,"__hash__":15284},{"type":8,"value":66672,"toc":66838},[66673,66675,66679,66681,66683,66687,66693,66695,66697,66699,66701,66703,66759,66764,66766,66832],[16,66674,15058],{},[1722,66676,66677],{},[16,66678,15063],{},[16,66680,15066],{},[49,66682,15070],{"id":15069},[16,66684,15073,66685,15077],{},[31,66686,15076],{},[24,66688,66689,66691],{},[27,66690,15082],{},[27,66692,15085],{},[16,66694,15088],{},[757,66696,15092],{"id":15091},[1112,66698],{"description":15095,"favicon":15096,"host":15097,"title":15092,"url":15098},[16,66700,15101],{},[757,66702,15105],{"id":15104},[812,66704,66705,66717],{},[3001,66706,66707],{},[3004,66708,66709,66711,66713,66715],{},[3007,66710,15114],{},[3007,66712,15117],{},[3007,66714,15120],{},[3007,66716,15123],{},[3017,66718,66719,66729,66739,66749],{},[3004,66720,66721,66723,66725,66727],{},[3022,66722,15130],{},[3022,66724,15133],{},[3022,66726,15136],{},[3022,66728,15139],{},[3004,66730,66731,66733,66735,66737],{},[3022,66732,15144],{},[3022,66734,15147],{},[3022,66736,15150],{},[3022,66738,15139],{},[3004,66740,66741,66743,66745,66747],{},[3022,66742,15157],{},[3022,66744,15160],{},[3022,66746,15163],{},[3022,66748,15166],{},[3004,66750,66751,66753,66755,66757],{},[3022,66752,15171],{},[3022,66754],{},[3022,66756],{},[3022,66758],{},[82,66760,66762],{"className":66761,"code":15181,"language":1099},[1097],[31,66763,15181],{"__ignoreMap":87},[16,66765,15186],{},[812,66767,66768,66780],{},[3001,66769,66770],{},[3004,66771,66772,66774,66776,66778],{},[3007,66773,15195],{},[3007,66775,15114],{},[3007,66777,15200],{},[3007,66779,15203],{},[3017,66781,66782,66792,66802,66812,66822],{},[3004,66783,66784,66786,66788,66790],{},[3022,66785,15210],{},[3022,66787,15130],{},[3022,66789,15136],{},[3022,66791,15217],{},[3004,66793,66794,66796,66798,66800],{},[3022,66795,15210],{},[3022,66797,15157],{},[3022,66799,15163],{},[3022,66801,15217],{},[3004,66803,66804,66806,66808,66810],{},[3022,66805,15232],{},[3022,66807,15130],{},[3022,66809,15130],{},[3022,66811,15239],{},[3004,66813,66814,66816,66818,66820],{},[3022,66815,15232],{},[3022,66817,15157],{},[3022,66819,15157],{},[3022,66821,15239],{},[3004,66823,66824,66826,66828,66830],{},[3022,66825,15254],{},[3022,66827],{},[3022,66829],{},[3022,66831],{},[1722,66833,66834],{},[16,66835,66836,15268],{},[91,66837,15267],{},{"title":87,"searchDepth":105,"depth":105,"links":66839},[66840],{"id":15069,"depth":105,"text":15070,"children":66841},[66842,66843],{"id":15091,"depth":121,"text":15092},{"id":15104,"depth":121,"text":15105},{},{"title":15053,"description":15275},{"loc":15278},[5447,7203,7409],{"id":15286,"title":15287,"body":66849,"created":15406,"description":15407,"extension":843,"filename":15408,"meta":66935,"navigation":846,"path":15410,"seo":66936,"sitemap":66937,"stem":15413,"subject":15282,"tags":66938,"updated":15406,"volume":1863,"__hash__":15418},{"type":8,"value":66850,"toc":66933},[66851,66853,66867,66891,66895,66917,66927,66931],[1112,66852],{"description":15292,"favicon":1320,"host":1317,"image":15293,"title":15294,"url":15295},[1722,66854,66855,66857,66859,66861,66863,66865],{},[16,66856,15300],{},[16,66858,15303],{},[16,66860,15306],{},[16,66862,15309],{},[16,66864,15312],{},[16,66866,15315],{},[82,66868,66869],{"className":8477,"code":15318,"language":8479,"meta":87,"style":87},[31,66870,66871,66877,66887],{"__ignoreMap":87},[91,66872,66873,66875],{"class":93,"line":94},[91,66874,15325],{"class":169},[91,66876,8789],{"class":101},[91,66878,66879,66881,66883,66885],{"class":93,"line":105},[91,66880,15332],{"class":108},[91,66882,112],{"class":101},[91,66884,15337],{"class":169},[91,66886,7560],{"class":101},[91,66888,66889],{"class":93,"line":121},[91,66890,137],{"class":101},[16,66892,15346,66893,15350],{},[31,66894,15349],{},[82,66896,66897],{"className":8477,"code":15353,"language":8479,"meta":87,"style":87},[31,66898,66899,66905,66913],{"__ignoreMap":87},[91,66900,66901,66903],{"class":93,"line":94},[91,66902,15360],{"class":169},[91,66904,8789],{"class":101},[91,66906,66907,66909,66911],{"class":93,"line":105},[91,66908,15332],{"class":108},[91,66910,112],{"class":101},[91,66912,15371],{"class":169},[91,66914,66915],{"class":93,"line":121},[91,66916,15376],{"class":101},[16,66918,66919,15382,66921,15386,66923,15390,66925,15394],{},[31,66920,15381],{},[792,66922,15385],{},[792,66924,15389],{},[792,66926,15393],{},[16,66928,15397,66929,15400],{},[31,66930,15349],{},[829,66932,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":66934},[],{},{"title":15287,"description":15407},{"loc":15410},[15415,1261,15416,5447,15417],{"id":15420,"title":15421,"body":66940,"created":16313,"description":16314,"extension":843,"filename":16315,"meta":67676,"navigation":846,"path":16317,"seo":67677,"sitemap":67678,"stem":16320,"subject":2862,"tags":67679,"updated":16313,"volume":853,"__hash__":16327},{"type":8,"value":66941,"toc":67668},[66942,66944,66946,66948,66954,66970,66982,66986,66992,66994,67000,67204,67210,67212,67214,67242,67308,67314,67316,67332,67334,67346,67348,67392,67394,67642,67646,67648,67652,67658,67660,67662,67664,67666],[16,66943,15426],{},[16,66945,15429],{},[49,66947,15433],{"id":15432},[16,66949,15436,66950,15440,66952,15444],{},[31,66951,15439],{},[31,66953,15443],{},[82,66955,66956],{"className":15447,"code":15448,"language":843,"meta":87,"style":87},[31,66957,66958,66962,66966],{"__ignoreMap":87},[91,66959,66960],{"class":93,"line":94},[91,66961,15455],{"class":101},[91,66963,66964],{"class":93,"line":105},[91,66965,15460],{"class":101},[91,66967,66968],{"class":93,"line":121},[91,66969,15465],{"class":101},[16,66971,15468,66972,15472,66974,15476,66976,64,66978,64,66980,15483],{},[31,66973,15471],{},[31,66975,15475],{},[31,66977,82],{},[31,66979,16],{},[31,66981,4530],{},[16,66983,66984],{},[19,66985],{"alt":15488,"src":15489},[16,66987,15492,66988,15495,66990,15499],{},[31,66989,1112],{},[31,66991,15498],{},[49,66993,15503],{"id":15502},[16,66995,15506,66996,15509,66998,15513],{},[31,66997,15498],{},[31,66999,15512],{},[82,67001,67002],{"className":1934,"code":15516,"language":1936,"meta":87,"style":87},[31,67003,67004,67020,67030,67034,67046,67068,67082,67096,67100,67104,67114,67118,67122,67130,67134,67142,67162,67168,67176,67184,67188,67196],{"__ignoreMap":87},[91,67005,67006,67008,67010,67012,67014,67016,67018],{"class":93,"line":94},[91,67007,156],{"class":101},[91,67009,1945],{"class":159},[91,67011,1948],{"class":97},[91,67013,1951],{"class":97},[91,67015,166],{"class":101},[91,67017,1956],{"class":169},[91,67019,173],{"class":101},[91,67021,67022,67024,67026,67028],{"class":93,"line":105},[91,67023,2499],{"class":566},[91,67025,15541],{"class":101},[91,67027,2505],{"class":566},[91,67029,15546],{"class":169},[91,67031,67032],{"class":93,"line":121},[91,67033,1450],{"emptyLinePlaceholder":846},[91,67035,67036,67038,67040,67042,67044],{"class":93,"line":134},[91,67037,1968],{"class":566},[91,67039,12259],{"class":108},[91,67041,1366],{"class":566},[91,67043,12264],{"class":97},[91,67045,9313],{"class":101},[91,67047,67048,67050,67052,67054,67056,67058,67060,67062,67064,67066],{"class":93,"line":228},[91,67049,1968],{"class":566},[91,67051,13969],{"class":101},[91,67053,7901],{"class":1172},[91,67055,112],{"class":101},[91,67057,15575],{"class":108},[91,67059,13985],{"class":101},[91,67061,166],{"class":566},[91,67063,1390],{"class":566},[91,67065,15584],{"class":97},[91,67067,9266],{"class":101},[91,67069,67070,67072,67074,67076,67078,67080],{"class":93,"line":250},[91,67071,15591],{"class":169},[91,67073,14102],{"class":101},[91,67075,1235],{"class":169},[91,67077,15598],{"class":101},[91,67079,1241],{"class":169},[91,67081,7560],{"class":101},[91,67083,67084,67086,67088,67090,67092,67094],{"class":93,"line":260},[91,67085,15607],{"class":101},[91,67087,1179],{"class":566},[91,67089,15612],{"class":97},[91,67091,15615],{"class":101},[91,67093,15618],{"class":97},[91,67095,8275],{"class":101},[91,67097,67098],{"class":93,"line":274},[91,67099,3487],{"class":101},[91,67101,67102],{"class":93,"line":284},[91,67103,1450],{"emptyLinePlaceholder":846},[91,67105,67106,67108,67110,67112],{"class":93,"line":299},[91,67107,1968],{"class":566},[91,67109,15635],{"class":108},[91,67111,1366],{"class":566},[91,67113,102],{"class":101},[91,67115,67116],{"class":93,"line":319},[91,67117,15644],{"class":101},[91,67119,67120],{"class":93,"line":334},[91,67121,137],{"class":101},[91,67123,67124,67126,67128],{"class":93,"line":355},[91,67125,493],{"class":101},[91,67127,1945],{"class":159},[91,67129,173],{"class":101},[91,67131,67132],{"class":93,"line":364},[91,67133,1450],{"emptyLinePlaceholder":846},[91,67135,67136,67138,67140],{"class":93,"line":378},[91,67137,156],{"class":101},[91,67139,2118],{"class":159},[91,67141,173],{"class":101},[91,67143,67144,67146,67148,67150,67152,67154,67156,67158,67160],{"class":93,"line":387},[91,67145,2125],{"class":101},[91,67147,15675],{"class":159},[91,67149,15678],{"class":97},[91,67151,166],{"class":101},[91,67153,15683],{"class":169},[91,67155,15686],{"class":97},[91,67157,166],{"class":101},[91,67159,15683],{"class":169},[91,67161,173],{"class":101},[91,67163,67164,67166],{"class":93,"line":402},[91,67165,178],{"class":101},[91,67167,15699],{"class":159},[91,67169,67170,67172,67174],{"class":93,"line":422},[91,67171,15704],{"class":97},[91,67173,166],{"class":101},[91,67175,15709],{"class":169},[91,67177,67178,67180,67182],{"class":93,"line":438},[91,67179,15714],{"class":97},[91,67181,166],{"class":101},[91,67183,15719],{"class":169},[91,67185,67186],{"class":93,"line":458},[91,67187,15724],{"class":101},[91,67189,67190,67192,67194],{"class":93,"line":467},[91,67191,15729],{"class":101},[91,67193,15675],{"class":159},[91,67195,173],{"class":101},[91,67197,67198,67200,67202],{"class":93,"line":481},[91,67199,493],{"class":101},[91,67201,2118],{"class":159},[91,67203,173],{"class":101},[16,67205,67206,15747,67208,15750],{},[31,67207,15746],{},[31,67209,1112],{},[49,67211,15754],{"id":15753},[16,67213,15757],{},[82,67215,67216],{"className":15447,"code":15760,"language":843,"meta":87,"style":87},[31,67217,67218,67222,67238],{"__ignoreMap":87},[91,67219,67220],{"class":93,"line":94},[91,67221,15767],{"class":101},[91,67223,67224,67226,67228,67230,67232,67234,67236],{"class":93,"line":105},[91,67225,15772],{"class":101},[91,67227,15776],{"class":15775},[91,67229,15779],{"class":101},[91,67231,15783],{"class":15782},[91,67233,15786],{"class":101},[91,67235,15790],{"class":15789},[91,67237,15793],{"class":101},[91,67239,67240],{"class":93,"line":121},[91,67241,15465],{"class":101},[82,67243,67244],{"className":1934,"code":15800,"language":1936,"meta":87,"style":87},[31,67245,67246,67250,67258,67272,67292,67300],{"__ignoreMap":87},[91,67247,67248],{"class":93,"line":94},[91,67249,15807],{"class":1343},[91,67251,67252,67254,67256],{"class":93,"line":105},[91,67253,156],{"class":101},[91,67255,2118],{"class":159},[91,67257,173],{"class":101},[91,67259,67260,67262,67264,67266,67268,67270],{"class":93,"line":121},[91,67261,2125],{"class":101},[91,67263,15822],{"class":159},[91,67265,163],{"class":97},[91,67267,166],{"class":101},[91,67269,15829],{"class":169},[91,67271,173],{"class":101},[91,67273,67274,67276,67278,67280,67282,67284,67286,67288,67290],{"class":93,"line":134},[91,67275,178],{"class":101},[91,67277,15838],{"class":159},[91,67279,15841],{"class":97},[91,67281,166],{"class":101},[91,67283,15846],{"class":169},[91,67285,15849],{"class":97},[91,67287,166],{"class":101},[91,67289,15854],{"class":169},[91,67291,2147],{"class":101},[91,67293,67294,67296,67298],{"class":93,"line":228},[91,67295,15729],{"class":101},[91,67297,15822],{"class":159},[91,67299,173],{"class":101},[91,67301,67302,67304,67306],{"class":93,"line":250},[91,67303,493],{"class":101},[91,67305,2118],{"class":159},[91,67307,173],{"class":101},[16,67309,15875,67310,15878,67312,15882],{},[31,67311,15838],{},[31,67313,15881],{},[49,67315,15886],{"id":15885},[16,67317,15889,67318,64,67320,64,67322,64,67324,64,67326,64,67328,15905,67330,15908],{},[31,67319,5177],{},[31,67321,13972],{},[31,67323,13977],{},[31,67325,15898],{},[31,67327,15901],{},[31,67329,15904],{},[31,67331,4974],{},[16,67333,15911],{},[82,67335,67336],{"className":15447,"code":15914,"language":843,"meta":87,"style":87},[31,67337,67338,67342],{"__ignoreMap":87},[91,67339,67340],{"class":93,"line":94},[91,67341,15921],{"class":101},[91,67343,67344],{"class":93,"line":105},[91,67345,15465],{"class":101},[16,67347,15928],{},[82,67349,67350],{"className":15447,"code":15931,"language":843,"meta":87,"style":87},[31,67351,67352,67356,67360,67364,67368,67372,67376,67380,67384,67388],{"__ignoreMap":87},[91,67353,67354],{"class":93,"line":94},[91,67355,15455],{"class":101},[91,67357,67358],{"class":93,"line":105},[91,67359,15943],{"class":15942},[91,67361,67362],{"class":93,"line":121},[91,67363,15948],{"class":101},[91,67365,67366],{"class":93,"line":134},[91,67367,15953],{"class":101},[91,67369,67370],{"class":93,"line":228},[91,67371,15958],{"class":101},[91,67373,67374],{"class":93,"line":250},[91,67375,15963],{"class":101},[91,67377,67378],{"class":93,"line":260},[91,67379,15968],{"class":101},[91,67381,67382],{"class":93,"line":274},[91,67383,15973],{"class":101},[91,67385,67386],{"class":93,"line":284},[91,67387,15943],{"class":15942},[91,67389,67390],{"class":93,"line":299},[91,67391,15465],{"class":101},[16,67393,15984],{},[82,67395,67396],{"className":1934,"code":15987,"language":1936,"meta":87,"style":87},[31,67397,67398,67414,67420,67428,67436,67444,67452,67460,67468,67472,67480,67484,67492,67524,67556,67570,67582,67600,67618,67626,67634],{"__ignoreMap":87},[91,67399,67400,67402,67404,67406,67408,67410,67412],{"class":93,"line":94},[91,67401,156],{"class":101},[91,67403,1945],{"class":159},[91,67405,1948],{"class":97},[91,67407,1951],{"class":97},[91,67409,166],{"class":101},[91,67411,1956],{"class":169},[91,67413,173],{"class":101},[91,67415,67416,67418],{"class":93,"line":105},[91,67417,16010],{"class":97},[91,67419,2205],{"class":101},[91,67421,67422,67424,67426],{"class":93,"line":121},[91,67423,11612],{"class":1172},[91,67425,1208],{"class":566},[91,67427,16021],{"class":108},[91,67429,67430,67432,67434],{"class":93,"line":134},[91,67431,11645],{"class":1172},[91,67433,1208],{"class":566},[91,67435,16021],{"class":108},[91,67437,67438,67440,67442],{"class":93,"line":228},[91,67439,16034],{"class":1172},[91,67441,16037],{"class":566},[91,67443,16021],{"class":108},[91,67445,67446,67448,67450],{"class":93,"line":250},[91,67447,16044],{"class":1172},[91,67449,16037],{"class":566},[91,67451,16021],{"class":108},[91,67453,67454,67456,67458],{"class":93,"line":260},[91,67455,16053],{"class":1172},[91,67457,16037],{"class":566},[91,67459,16021],{"class":108},[91,67461,67462,67464,67466],{"class":93,"line":274},[91,67463,16062],{"class":1172},[91,67465,16037],{"class":566},[91,67467,16021],{"class":108},[91,67469,67470],{"class":93,"line":284},[91,67471,16071],{"class":101},[91,67473,67474,67476,67478],{"class":93,"line":299},[91,67475,493],{"class":101},[91,67477,1945],{"class":159},[91,67479,173],{"class":101},[91,67481,67482],{"class":93,"line":319},[91,67483,1450],{"emptyLinePlaceholder":846},[91,67485,67486,67488,67490],{"class":93,"line":334},[91,67487,156],{"class":101},[91,67489,2118],{"class":159},[91,67491,173],{"class":101},[91,67493,67494,67496,67498,67500,67502,67504,67506,67508,67510,67512,67514,67516,67518,67520,67522],{"class":93,"line":355},[91,67495,2125],{"class":101},[91,67497,4306],{"class":159},[91,67499,16100],{"class":97},[91,67501,166],{"class":101},[91,67503,16105],{"class":169},[91,67505,163],{"class":97},[91,67507,166],{"class":101},[91,67509,16112],{"class":169},[91,67511,16115],{"class":97},[91,67513,166],{"class":101},[91,67515,16120],{"class":169},[91,67517,16123],{"class":97},[91,67519,166],{"class":101},[91,67521,16128],{"class":169},[91,67523,173],{"class":101},[91,67525,67526,67528,67530,67532,67534,67536,67538,67540,67542,67544,67546,67548,67550,67552,67554],{"class":93,"line":364},[91,67527,178],{"class":101},[91,67529,19],{"class":159},[91,67531,15678],{"class":97},[91,67533,166],{"class":101},[91,67535,16143],{"class":169},[91,67537,16146],{"class":97},[91,67539,166],{"class":101},[91,67541,16143],{"class":169},[91,67543,16153],{"class":97},[91,67545,166],{"class":101},[91,67547,13747],{"class":169},[91,67549,163],{"class":97},[91,67551,166],{"class":101},[91,67553,16164],{"class":169},[91,67555,2147],{"class":101},[91,67557,67558,67560,67562,67564,67566,67568],{"class":93,"line":378},[91,67559,178],{"class":101},[91,67561,91],{"class":159},[91,67563,163],{"class":97},[91,67565,166],{"class":101},[91,67567,16179],{"class":169},[91,67569,173],{"class":101},[91,67571,67572,67574,67576,67578,67580],{"class":93,"line":387},[91,67573,16186],{"class":101},[91,67575,792],{"class":159},[91,67577,16191],{"class":101},[91,67579,792],{"class":159},[91,67581,173],{"class":101},[91,67583,67584,67586,67588,67590,67592,67594,67596,67598],{"class":93,"line":402},[91,67585,16186],{"class":101},[91,67587,91],{"class":159},[91,67589,15678],{"class":97},[91,67591,166],{"class":101},[91,67593,16208],{"class":169},[91,67595,16211],{"class":101},[91,67597,91],{"class":159},[91,67599,173],{"class":101},[91,67601,67602,67604,67606,67608,67610,67612,67614,67616],{"class":93,"line":422},[91,67603,16186],{"class":101},[91,67605,16222],{"class":159},[91,67607,15678],{"class":97},[91,67609,166],{"class":101},[91,67611,16229],{"class":169},[91,67613,16232],{"class":101},[91,67615,16222],{"class":159},[91,67617,173],{"class":101},[91,67619,67620,67622,67624],{"class":93,"line":438},[91,67621,277],{"class":101},[91,67623,91],{"class":159},[91,67625,173],{"class":101},[91,67627,67628,67630,67632],{"class":93,"line":458},[91,67629,15729],{"class":101},[91,67631,4306],{"class":159},[91,67633,173],{"class":101},[91,67635,67636,67638,67640],{"class":93,"line":467},[91,67637,493],{"class":101},[91,67639,2118],{"class":159},[91,67641,173],{"class":101},[16,67643,16263,67644,16266],{},[31,67645,1208],{},[49,67647,16270],{"id":16269},[16,67649,16273,67650,16276],{},[31,67651,1112],{},[24,67653,67654,67656],{},[27,67655,16281],{},[27,67657,16284],{},[16,67659,16287],{},[49,67661,6005],{"id":6004},[1112,67663],{"description":16292,"host":16293,"title":16294,"url":16295},[1112,67665],{"description":16298,"host":16299,"title":16300,"url":16301},[829,67667,16304],{},{"title":87,"searchDepth":105,"depth":105,"links":67669},[67670,67671,67672,67673,67674,67675],{"id":15432,"depth":105,"text":15433},{"id":15502,"depth":105,"text":15503},{"id":15753,"depth":105,"text":15754},{"id":15885,"depth":105,"text":15886},{"id":16269,"depth":105,"text":16270},{"id":6004,"depth":105,"text":6005},{},{"title":15421,"description":16314},{"loc":16317},[16322,16323,16324,16325,16326],{"id":16329,"title":16330,"body":67681,"created":15406,"description":17124,"extension":843,"filename":17125,"meta":68342,"navigation":846,"path":17127,"seo":68343,"sitemap":68344,"stem":17130,"subject":2862,"tags":68345,"updated":15406,"volume":853,"__hash__":17133},{"type":8,"value":67682,"toc":68332},[67683,67685,67687,67707,67709,67735,67739,67741,67747,67751,67875,67877,67881,67987,67989,67993,68039,68041,68043,68056,68058,68068,68070,68114,68116,68128,68130,68192,68204,68206,68208,68282,68284,68328,68330],[16,67684,16335],{},[49,67686,16339],{"id":16338},[82,67688,67689],{"className":8427,"code":16342,"language":8429,"meta":87,"style":87},[31,67690,67691,67699],{"__ignoreMap":87},[91,67692,67693,67695,67697],{"class":93,"line":94},[91,67694,15417],{"class":97},[91,67696,8653],{"class":169},[91,67698,16353],{"class":169},[91,67700,67701,67703,67705],{"class":93,"line":105},[91,67702,16358],{"class":97},[91,67704,16361],{"class":169},[91,67706,16353],{"class":169},[49,67708,16367],{"id":16366},[82,67710,67711],{"className":1154,"code":16370,"language":1156,"meta":87,"style":87},[31,67712,67713,67723,67731],{"__ignoreMap":87},[91,67714,67715,67717,67719,67721],{"class":93,"line":94},[91,67716,2574],{"class":566},[91,67718,12107],{"class":566},[91,67720,16381],{"class":97},[91,67722,7549],{"class":101},[91,67724,67725,67727,67729],{"class":93,"line":105},[91,67726,16388],{"class":101},[91,67728,16391],{"class":169},[91,67730,16394],{"class":101},[91,67732,67733],{"class":93,"line":121},[91,67734,9444],{"class":101},[16,67736,67737,16404],{},[31,67738,16403],{},[49,67740,16408],{"id":16407},[16,67742,67743,16414,67745,16417],{},[31,67744,16413],{},[31,67746,16413],{},[16,67748,16420,67749],{},[31,67750,16423],{},[82,67752,67753],{"className":1154,"code":16426,"language":1156,"meta":87,"style":87},[31,67754,67755,67765,67775,67779,67801,67817,67839,67843,67851,67857,67861,67865,67871],{"__ignoreMap":87},[91,67756,67757,67759,67761,67763],{"class":93,"line":94},[91,67758,2499],{"class":566},[91,67760,16435],{"class":101},[91,67762,2505],{"class":566},[91,67764,16440],{"class":169},[91,67766,67767,67769,67771,67773],{"class":93,"line":105},[91,67768,2499],{"class":566},[91,67770,16447],{"class":101},[91,67772,2505],{"class":566},[91,67774,16452],{"class":169},[91,67776,67777],{"class":93,"line":121},[91,67778,1450],{"emptyLinePlaceholder":846},[91,67780,67781,67783,67785,67787,67789,67791,67793,67795,67797,67799],{"class":93,"line":134},[91,67782,2574],{"class":566},[91,67784,16463],{"class":566},[91,67786,16466],{"class":108},[91,67788,1366],{"class":566},[91,67790,16471],{"class":97},[91,67792,795],{"class":101},[91,67794,16476],{"class":169},[91,67796,9612],{"class":101},[91,67798,1179],{"class":566},[91,67800,102],{"class":101},[91,67802,67803,67805,67807,67809,67811,67813,67815],{"class":93,"line":228},[91,67804,2641],{"class":566},[91,67806,16489],{"class":108},[91,67808,1366],{"class":566},[91,67810,16494],{"class":97},[91,67812,795],{"class":101},[91,67814,1578],{"class":108},[91,67816,3487],{"class":101},[91,67818,67819,67821,67823,67825,67827,67829,67831,67833,67835,67837],{"class":93,"line":250},[91,67820,2641],{"class":566},[91,67822,16507],{"class":108},[91,67824,1366],{"class":566},[91,67826,12308],{"class":97},[91,67828,2088],{"class":101},[91,67830,1179],{"class":566},[91,67832,16518],{"class":101},[91,67834,6591],{"class":566},[91,67836,16523],{"class":108},[91,67838,3487],{"class":101},[91,67840,67841],{"class":93,"line":260},[91,67842,1450],{"emptyLinePlaceholder":846},[91,67844,67845,67847,67849],{"class":93,"line":274},[91,67846,16534],{"class":566},[91,67848,16537],{"class":97},[91,67850,2007],{"class":101},[91,67852,67853,67855],{"class":93,"line":284},[91,67854,16544],{"class":101},[91,67856,16547],{"class":566},[91,67858,67859],{"class":93,"line":299},[91,67860,1698],{"class":101},[91,67862,67863],{"class":93,"line":319},[91,67864,1450],{"emptyLinePlaceholder":846},[91,67866,67867,67869],{"class":93,"line":334},[91,67868,2695],{"class":566},[91,67870,16562],{"class":101},[91,67872,67873],{"class":93,"line":355},[91,67874,9444],{"class":101},[49,67876,16570],{"id":16569},[16,67878,16573,67879,16577],{},[31,67880,16576],{},[82,67882,67883],{"className":1934,"code":16580,"language":1936,"meta":87,"style":87},[31,67884,67885,67893,67901,67913,67931,67939,67947,67951,67967,67979],{"__ignoreMap":87},[91,67886,67887,67889,67891],{"class":93,"line":94},[91,67888,156],{"class":101},[91,67890,2118],{"class":159},[91,67892,173],{"class":101},[91,67894,67895,67897,67899],{"class":93,"line":105},[91,67896,2125],{"class":101},[91,67898,160],{"class":159},[91,67900,173],{"class":101},[91,67902,67903,67905,67907,67909,67911],{"class":93,"line":121},[91,67904,178],{"class":101},[91,67906,16],{"class":159},[91,67908,16607],{"class":101},[91,67910,16],{"class":159},[91,67912,173],{"class":101},[91,67914,67915,67917,67919,67921,67923,67925,67927,67929],{"class":93,"line":134},[91,67916,178],{"class":101},[91,67918,16618],{"class":159},[91,67920,16621],{"class":97},[91,67922,166],{"class":101},[91,67924,16626],{"class":169},[91,67926,16629],{"class":101},[91,67928,16618],{"class":159},[91,67930,173],{"class":101},[91,67932,67933,67935,67937],{"class":93,"line":228},[91,67934,15729],{"class":101},[91,67936,160],{"class":159},[91,67938,173],{"class":101},[91,67940,67941,67943,67945],{"class":93,"line":250},[91,67942,493],{"class":101},[91,67944,2118],{"class":159},[91,67946,173],{"class":101},[91,67948,67949],{"class":93,"line":260},[91,67950,1450],{"emptyLinePlaceholder":846},[91,67952,67953,67955,67957,67959,67961,67963,67965],{"class":93,"line":274},[91,67954,156],{"class":101},[91,67956,1945],{"class":159},[91,67958,1948],{"class":97},[91,67960,1951],{"class":97},[91,67962,166],{"class":101},[91,67964,1956],{"class":169},[91,67966,173],{"class":101},[91,67968,67969,67971,67973,67975,67977],{"class":93,"line":284},[91,67970,1968],{"class":566},[91,67972,16676],{"class":108},[91,67974,1366],{"class":566},[91,67976,16466],{"class":97},[91,67978,9313],{"class":101},[91,67980,67981,67983,67985],{"class":93,"line":299},[91,67982,493],{"class":101},[91,67984,1945],{"class":159},[91,67986,173],{"class":101},[49,67988,16694],{"id":16693},[16,67990,16697,67991,16700],{},[31,67992,16403],{},[82,67994,67995],{"className":1154,"code":16703,"language":1156,"meta":87,"style":87},[31,67996,67997,68007,68015,68019,68031,68035],{"__ignoreMap":87},[91,67998,67999,68001,68003,68005],{"class":93,"line":94},[91,68000,2574],{"class":566},[91,68002,12107],{"class":566},[91,68004,16381],{"class":97},[91,68006,7549],{"class":101},[91,68008,68009,68011,68013],{"class":93,"line":105},[91,68010,16388],{"class":101},[91,68012,16391],{"class":169},[91,68014,16394],{"class":101},[91,68016,68017],{"class":93,"line":121},[91,68018,16728],{"class":101},[91,68020,68021,68023,68025,68027,68029],{"class":93,"line":134},[91,68022,16733],{"class":101},[91,68024,16736],{"class":169},[91,68026,64],{"class":101},[91,68028,16741],{"class":169},[91,68030,16394],{"class":101},[91,68032,68033],{"class":93,"line":228},[91,68034,10581],{"class":101},[91,68036,68037],{"class":93,"line":250},[91,68038,9444],{"class":101},[16,68040,16754],{},[11,68042,16758],{"id":16757},[1722,68044,68045,68049,68054],{},[16,68046,16763,68047,16767],{},[91,68048,16766],{},[16,68050,16770,68051,16775],{},[4306,68052,16773],{"href":16773,"rel":68053},[4310],[16,68055,16778],{},[16,68057,16781],{},[4530,68059,68060,68062,68066],{},[27,68061,16786],{},[27,68063,68064,16792],{},[31,68065,16791],{},[27,68067,16795],{},[757,68069,16799],{"id":16798},[82,68071,68072],{"className":6839,"code":16802,"language":6841,"meta":87,"style":87},[31,68073,68074,68082,68090,68098,68106],{"__ignoreMap":87},[91,68075,68076,68078,68080],{"class":93,"line":94},[91,68077,16809],{"class":97},[91,68079,16812],{"class":108},[91,68081,16815],{"class":169},[91,68083,68084,68086,68088],{"class":93,"line":105},[91,68085,16809],{"class":97},[91,68087,16812],{"class":108},[91,68089,16824],{"class":169},[91,68091,68092,68094,68096],{"class":93,"line":121},[91,68093,16809],{"class":97},[91,68095,16812],{"class":108},[91,68097,16833],{"class":169},[91,68099,68100,68102,68104],{"class":93,"line":134},[91,68101,15417],{"class":97},[91,68103,8653],{"class":169},[91,68105,16842],{"class":1343},[91,68107,68108,68110,68112],{"class":93,"line":228},[91,68109,15417],{"class":97},[91,68111,16849],{"class":169},[91,68113,16852],{"class":169},[16,68115,16855],{},[1722,68117,68118,68122],{},[16,68119,68120,16862],{},[91,68121,1728],{},[24,68123,68124],{},[27,68125,68126,16869],{},[91,68127,16322],{},[16,68129,16872],{},[812,68131,68132,68148],{},[3001,68133,68134],{},[3004,68135,68136,68140,68144],{},[3007,68137,68138],{},[792,68139,16883],{},[3007,68141,68142],{},[792,68143,16888],{},[3007,68145,68146],{},[792,68147,16893],{},[3017,68149,68150,68164,68178],{},[3004,68151,68152,68156,68160],{},[3022,68153,68154],{},[792,68155,16902],{},[3022,68157,68158],{},[31,68159,16907],{},[3022,68161,68162,16913],{},[31,68163,16912],{},[3004,68165,68166,68170,68174],{},[3022,68167,68168],{},[792,68169,16920],{},[3022,68171,68172],{},[31,68173,16925],{},[3022,68175,68176,16931],{},[31,68177,16930],{},[3004,68179,68180,68184,68188],{},[3022,68181,68182],{},[792,68183,16791],{},[3022,68185,68186],{},[31,68187,16942],{},[3022,68189,68190,16931],{},[31,68191,16947],{},[82,68193,68194],{"className":6839,"code":16950,"language":6841,"meta":87,"style":87},[31,68195,68196],{"__ignoreMap":87},[91,68197,68198,68200,68202],{"class":93,"line":94},[91,68199,15417],{"class":97},[91,68201,8653],{"class":169},[91,68203,16961],{"class":169},[16,68205,16964],{},[757,68207,16968],{"id":16967},[82,68209,68210],{"className":1154,"code":16971,"language":1156,"meta":87,"style":87},[31,68211,68212,68216,68226,68236,68240,68258,68270,68278],{"__ignoreMap":87},[91,68213,68214],{"class":93,"line":94},[91,68215,16978],{"class":1343},[91,68217,68218,68220,68222,68224],{"class":93,"line":105},[91,68219,2499],{"class":566},[91,68221,16985],{"class":101},[91,68223,2505],{"class":566},[91,68225,16990],{"class":169},[91,68227,68228,68230,68232,68234],{"class":93,"line":121},[91,68229,2499],{"class":566},[91,68231,16997],{"class":101},[91,68233,2505],{"class":566},[91,68235,16440],{"class":169},[91,68237,68238],{"class":93,"line":134},[91,68239,1450],{"emptyLinePlaceholder":846},[91,68241,68242,68244,68246,68248,68250,68252,68254,68256],{"class":93,"line":228},[91,68243,2574],{"class":566},[91,68245,12107],{"class":566},[91,68247,17014],{"class":97},[91,68249,1169],{"class":101},[91,68251,17019],{"class":1172},[91,68253,1176],{"class":101},[91,68255,1179],{"class":566},[91,68257,102],{"class":101},[91,68259,68260,68262,68264,68266,68268],{"class":93,"line":250},[91,68261,2641],{"class":566},[91,68263,17032],{"class":108},[91,68265,1366],{"class":566},[91,68267,17037],{"class":97},[91,68269,9313],{"class":101},[91,68271,68272,68274,68276],{"class":93,"line":260},[91,68273,17044],{"class":101},[91,68275,14877],{"class":97},[91,68277,17049],{"class":101},[91,68279,68280],{"class":93,"line":274},[91,68281,9444],{"class":101},[16,68283,17056],{},[82,68285,68286],{"className":8477,"code":17059,"language":8479,"meta":87,"style":87},[31,68287,68288,68294,68304,68314,68324],{"__ignoreMap":87},[91,68289,68290,68292],{"class":93,"line":94},[91,68291,15325],{"class":169},[91,68293,8789],{"class":101},[91,68295,68296,68298,68300,68302],{"class":93,"line":105},[91,68297,17072],{"class":108},[91,68299,112],{"class":101},[91,68301,17077],{"class":169},[91,68303,7560],{"class":101},[91,68305,68306,68308,68310,68312],{"class":93,"line":121},[91,68307,17084],{"class":108},[91,68309,112],{"class":101},[91,68311,17089],{"class":169},[91,68313,7560],{"class":101},[91,68315,68316,68318,68320,68322],{"class":93,"line":134},[91,68317,17096],{"class":108},[91,68319,112],{"class":101},[91,68321,17101],{"class":169},[91,68323,7560],{"class":101},[91,68325,68326],{"class":93,"line":228},[91,68327,15376],{"class":101},[16,68329,17110],{},[829,68331,17113],{},{"title":87,"searchDepth":105,"depth":105,"links":68333},[68334,68335,68336,68337,68338],{"id":16338,"depth":105,"text":16339},{"id":16366,"depth":105,"text":16367},{"id":16407,"depth":105,"text":16408},{"id":16569,"depth":105,"text":16570},{"id":16693,"depth":105,"text":16694,"children":68339},[68340,68341],{"id":16798,"depth":121,"text":16799},{"id":16967,"depth":121,"text":16968},{},{"title":16330,"description":17124},{"loc":17127},[16322,16324,17132],{"id":17135,"title":17136,"body":68347,"created":17541,"description":17542,"extension":843,"filename":17543,"meta":68673,"navigation":846,"path":17545,"seo":68674,"sitemap":68675,"stem":17548,"subject":17549,"tags":68676,"updated":17541,"volume":1863,"__hash__":17554},{"type":8,"value":68348,"toc":68668},[68349,68351,68353,68355,68357,68362,68368,68374,68504,68510,68512,68518,68592,68598,68602,68604,68606,68666],[16,68350,17141],{},[16,68352,17144],{},[49,68354,17148],{"id":17147},[16,68356,17151],{},[82,68358,68360],{"className":68359,"code":17155,"language":1099,"meta":87},[1097],[31,68361,17155],{"__ignoreMap":87},[16,68363,17160,68364,15747,68366,17167],{},[792,68365,17163],{},[31,68367,17166],{},[16,68369,68370,17172,68372,17175],{},[31,68371,17163],{},[31,68373,17166],{},[82,68375,68376],{"className":1154,"code":17178,"language":1156,"meta":87,"style":87},[31,68377,68378,68394,68404,68432,68442,68454,68470,68478,68482,68490,68494,68500],{"__ignoreMap":87},[91,68379,68380,68382,68384,68386,68388,68390,68392],{"class":93,"line":94},[91,68381,7471],{"class":566},[91,68383,17187],{"class":97},[91,68385,795],{"class":101},[91,68387,17192],{"class":1172},[91,68389,64],{"class":101},[91,68391,17197],{"class":1172},[91,68393,3866],{"class":101},[91,68395,68396,68398,68400,68402],{"class":93,"line":105},[91,68397,2641],{"class":566},[91,68399,17206],{"class":108},[91,68401,1366],{"class":566},[91,68403,17211],{"class":101},[91,68405,68406,68408,68410,68412,68414,68416,68418,68420,68422,68424,68426,68428,68430],{"class":93,"line":121},[91,68407,17216],{"class":566},[91,68409,2662],{"class":101},[91,68411,1349],{"class":566},[91,68413,17223],{"class":101},[91,68415,166],{"class":566},[91,68417,11817],{"class":108},[91,68419,17230],{"class":101},[91,68421,156],{"class":566},[91,68423,17235],{"class":101},[91,68425,11811],{"class":108},[91,68427,17240],{"class":101},[91,68429,17243],{"class":566},[91,68431,3866],{"class":101},[91,68433,68434,68436,68438,68440],{"class":93,"line":134},[91,68435,1382],{"class":566},[91,68437,17252],{"class":108},[91,68439,1366],{"class":566},[91,68441,17257],{"class":101},[91,68443,68444,68446,68448,68450,68452],{"class":93,"line":228},[91,68445,1382],{"class":566},[91,68447,17264],{"class":108},[91,68449,1366],{"class":566},[91,68451,17269],{"class":97},[91,68453,17272],{"class":101},[91,68455,68456,68458,68460,68462,68464,68466,68468],{"class":93,"line":250},[91,68457,8218],{"class":566},[91,68459,2662],{"class":101},[91,68461,2665],{"class":566},[91,68463,17283],{"class":101},[91,68465,17286],{"class":97},[91,68467,17289],{"class":101},[91,68469,17292],{"class":1343},[91,68471,68472,68474,68476],{"class":93,"line":260},[91,68473,17297],{"class":101},[91,68475,166],{"class":566},[91,68477,11734],{"class":101},[91,68479,68480],{"class":93,"line":274},[91,68481,1693],{"class":101},[91,68483,68484,68486,68488],{"class":93,"line":284},[91,68485,17310],{"class":101},[91,68487,13348],{"class":97},[91,68489,17315],{"class":101},[91,68491,68492],{"class":93,"line":299},[91,68493,1698],{"class":101},[91,68495,68496,68498],{"class":93,"line":319},[91,68497,2695],{"class":566},[91,68499,17326],{"class":101},[91,68501,68502],{"class":93,"line":334},[91,68503,137],{"class":101},[16,68505,68506,17336,68508,17340],{},[31,68507,17335],{},[31,68509,17339],{},[49,68511,17344],{"id":17343},[16,68513,17347,68514,15747,68516,17353],{},[792,68515,17350],{},[31,68517,17166],{},[82,68519,68520],{"className":1154,"code":17356,"language":1156,"meta":87,"style":87},[31,68521,68522,68550,68562,68570,68578,68584,68588],{"__ignoreMap":87},[91,68523,68524,68526,68528,68530,68532,68534,68536,68538,68540,68542,68544,68546,68548],{"class":93,"line":94},[91,68525,5626],{"class":566},[91,68527,17365],{"class":101},[91,68529,166],{"class":566},[91,68531,17370],{"class":97},[91,68533,795],{"class":101},[91,68535,7471],{"class":566},[91,68537,795],{"class":101},[91,68539,17379],{"class":1172},[91,68541,64],{"class":101},[91,68543,8343],{"class":1172},[91,68545,64],{"class":101},[91,68547,9452],{"class":1172},[91,68549,3866],{"class":101},[91,68551,68552,68554,68556,68558,68560],{"class":93,"line":105},[91,68553,2439],{"class":566},[91,68555,17396],{"class":101},[91,68557,17399],{"class":97},[91,68559,17289],{"class":101},[91,68561,17404],{"class":1343},[91,68563,68564,68566,68568],{"class":93,"line":121},[91,68565,17310],{"class":101},[91,68567,13348],{"class":97},[91,68569,17413],{"class":101},[91,68571,68572,68574,68576],{"class":93,"line":134},[91,68573,2053],{"class":101},[91,68575,5258],{"class":566},[91,68577,102],{"class":101},[91,68579,68580,68582],{"class":93,"line":228},[91,68581,17426],{"class":97},[91,68583,17429],{"class":101},[91,68585,68586],{"class":93,"line":250},[91,68587,1698],{"class":101},[91,68589,68590],{"class":93,"line":260},[91,68591,1303],{"class":101},[16,68593,68594,17442,68596,17446],{},[31,68595,17350],{},[31,68597,17445],{},[16,68599,17449,68600,17452],{},[31,68601,17163],{},[49,68603,17456],{"id":17455},[16,68605,17459],{},[24,68607,68608,68612,68658],{},[27,68609,68610],{},[792,68611,17466],{},[27,68613,68614,68616,68622],{},[792,68615,17471],{},[24,68617,68618],{},[27,68619,17476,68620,17479],{},[31,68621,17335],{},[82,68623,68624],{"className":1154,"code":17482,"language":1156,"meta":87,"style":87},[31,68625,68626],{"__ignoreMap":87},[91,68627,68628,68630,68632,68634,68636,68638,68640,68642,68644,68646,68648,68650,68652,68654,68656],{"class":93,"line":94},[91,68629,1968],{"class":566},[91,68631,17491],{"class":97},[91,68633,1366],{"class":566},[91,68635,2662],{"class":101},[91,68637,17498],{"class":1172},[91,68639,64],{"class":101},[91,68641,9452],{"class":1172},[91,68643,1176],{"class":101},[91,68645,1179],{"class":566},[91,68647,17509],{"class":108},[91,68649,1235],{"class":101},[91,68651,17514],{"class":108},[91,68653,17517],{"class":101},[91,68655,17399],{"class":97},[91,68657,17522],{"class":101},[27,68659,68660,68662],{},[792,68661,17527],{},[24,68663,68664],{},[27,68665,17532],{},[829,68667,17535],{},{"title":87,"searchDepth":105,"depth":105,"links":68669},[68670,68671,68672],{"id":17147,"depth":105,"text":17148},{"id":17343,"depth":105,"text":17344},{"id":17455,"depth":105,"text":17456},{},{"title":17136,"description":17542},{"loc":17545},[2865,17551,17552,17553],{"id":17556,"title":17557,"body":68678,"created":17676,"description":17677,"extension":843,"filename":17678,"meta":68773,"navigation":846,"path":17680,"seo":68774,"sitemap":68775,"stem":17683,"subject":4438,"tags":68776,"updated":17676,"volume":1863,"__hash__":17687},{"type":8,"value":68679,"toc":68771},[68680,68685,68687,68691,68693,68699,68705,68767,68769],[82,68681,68683],{"className":68682,"code":17563,"language":1099},[1097],[31,68684,17563],{"__ignoreMap":87},[16,68686,17568],{},[16,68688,68689],{},[19,68690],{"alt":21,"src":17573},[16,68692,17576],{},[24,68694,68695,68697],{},[27,68696,17581],{},[27,68698,17584],{},[16,68700,68701,17590,68703,17594],{},[31,68702,17589],{},[31,68704,17593],{},[82,68706,68707],{"className":8477,"code":17597,"language":8479,"meta":87,"style":87},[31,68708,68709,68713,68723,68729,68739,68749,68759,68763],{"__ignoreMap":87},[91,68710,68711],{"class":93,"line":94},[91,68712,8486],{"class":101},[91,68714,68715,68717,68719,68721],{"class":93,"line":105},[91,68716,17608],{"class":108},[91,68718,1208],{"class":101},[91,68720,17613],{"class":169},[91,68722,7560],{"class":101},[91,68724,68725,68727],{"class":93,"line":121},[91,68726,17620],{"class":108},[91,68728,17623],{"class":101},[91,68730,68731,68733,68735,68737],{"class":93,"line":134},[91,68732,17628],{"class":108},[91,68734,1208],{"class":101},[91,68736,17633],{"class":169},[91,68738,7560],{"class":101},[91,68740,68741,68743,68745,68747],{"class":93,"line":228},[91,68742,17640],{"class":108},[91,68744,1208],{"class":101},[91,68746,17645],{"class":169},[91,68748,7560],{"class":101},[91,68750,68751,68753,68755,68757],{"class":93,"line":250},[91,68752,17652],{"class":108},[91,68754,1208],{"class":101},[91,68756,17657],{"class":169},[91,68758,7560],{"class":101},[91,68760,68761],{"class":93,"line":260},[91,68762,1693],{"class":101},[91,68764,68765],{"class":93,"line":274},[91,68766,137],{"class":101},[16,68768,17670],{},[829,68770,17673],{},{"title":87,"searchDepth":105,"depth":105,"links":68772},[],{},{"title":17557,"description":17677},{"loc":17680},[4438,17685,17686],{"id":17689,"title":17690,"body":68778,"created":18076,"description":18077,"extension":843,"filename":18078,"meta":69062,"navigation":846,"path":18080,"seo":69063,"sitemap":69064,"stem":18083,"subject":18084,"tags":69065,"updated":6033,"volume":853,"__hash__":18089},{"type":8,"value":68779,"toc":69056},[68780,68784,68796,68798,68806,68810,68812,68814,68818,68820,68822,68874,68878,68886,68888,68890,68892,68900,68908,68910,68912,69028,69032,69034,69036,69038,69050,69052,69054],[16,68781,17695,68782,17699],{},[31,68783,17698],{},[4530,68785,68786,68790,68792,68794],{},[27,68787,17704,68788,17707],{},[31,68789,17698],{},[27,68791,17710],{},[27,68793,17713],{},[27,68795,17716],{},[16,68797,17719],{},[4530,68799,68800,68802,68804],{},[27,68801,17724],{},[27,68803,17727],{},[27,68805,17730],{},[16,68807,17733,68808,17737],{},[31,68809,17736],{},[1112,68811],{"description":17740,"favicon":17741,"host":17742,"title":17743,"url":17744},[1112,68813],{"description":17747,"favicon":17741,"host":17742,"title":17748,"url":17749},[16,68815,17752,68816,17755],{},[31,68817,17698],{},[49,68819,17759],{"id":17758},[16,68821,17762],{},[812,68823,68824,68834],{},[3001,68825,68826],{},[3004,68827,68828,68830,68832],{},[3007,68829,17771],{},[3007,68831,17774],{},[3007,68833,17777],{},[3017,68835,68836,68850,68862],{},[3004,68837,68838,68844,68846],{},[3022,68839,68840,64,68842],{},[31,68841,17786],{},[31,68843,17789],{},[3022,68845,17792],{},[3022,68847,68848],{},[31,68849,17797],{},[3004,68851,68852,68856,68858],{},[3022,68853,68854],{},[31,68855,17698],{},[3022,68857,17806],{},[3022,68859,68860],{},[31,68861,17811],{},[3004,68863,68864,68868,68870],{},[3022,68865,68866,17819],{},[31,68867,17818],{},[3022,68869,17822],{},[3022,68871,68872],{},[31,68873,17811],{},[16,68875,17829,68876,17832],{},[31,68877,17698],{},[16,68879,68880,17837,68882,5733,68884,17843],{},[31,68881,17811],{},[31,68883,17811],{},[31,68885,17842],{},[1112,68887],{"description":17846,"favicon":17741,"host":17742,"title":17847,"url":17848},[16,68889,17851],{},[49,68891,17855],{"id":17854},[16,68893,17858,68894,17861,68896,17864,68898,15394],{},[31,68895,17698],{},[31,68897,17818],{},[792,68899,17867],{},[16,68901,17870,68902,34,68904,17876,68906,17879],{},[31,68903,8361],{},[31,68905,17875],{},[31,68907,8361],{},[49,68909,17883],{"id":17882},[16,68911,17886],{},[82,68913,68914],{"className":6839,"code":17889,"language":6841,"meta":87,"style":87},[31,68915,68916,68920,68938,68946,68954,68962,68968,68972,68976,68994,69000,69004,69022],{"__ignoreMap":87},[91,68917,68918],{"class":93,"line":94},[91,68919,17896],{"class":1343},[91,68921,68922,68924,68926,68928,68930,68932,68934,68936],{"class":93,"line":105},[91,68923,17901],{"class":97},[91,68925,17904],{"class":169},[91,68927,17907],{"class":169},[91,68929,17910],{"class":169},[91,68931,17913],{"class":169},[91,68933,17916],{"class":101},[91,68935,2139],{"class":169},[91,68937,8442],{"class":108},[91,68939,68940,68942,68944],{"class":93,"line":121},[91,68941,17925],{"class":108},[91,68943,17928],{"class":169},[91,68945,8442],{"class":108},[91,68947,68948,68950,68952],{"class":93,"line":134},[91,68949,17925],{"class":108},[91,68951,17937],{"class":169},[91,68953,8442],{"class":108},[91,68955,68956,68958,68960],{"class":93,"line":228},[91,68957,17925],{"class":108},[91,68959,17946],{"class":169},[91,68961,8442],{"class":108},[91,68963,68964,68966],{"class":93,"line":250},[91,68965,17953],{"class":108},[91,68967,17956],{"class":169},[91,68969,68970],{"class":93,"line":260},[91,68971,1450],{"emptyLinePlaceholder":846},[91,68973,68974],{"class":93,"line":274},[91,68975,17965],{"class":1343},[91,68977,68978,68980,68982,68984,68986,68988,68990,68992],{"class":93,"line":284},[91,68979,17901],{"class":97},[91,68981,17904],{"class":169},[91,68983,17974],{"class":169},[91,68985,17977],{"class":169},[91,68987,17913],{"class":169},[91,68989,17916],{"class":101},[91,68991,17984],{"class":169},[91,68993,8442],{"class":108},[91,68995,68996,68998],{"class":93,"line":299},[91,68997,17953],{"class":108},[91,68999,17993],{"class":169},[91,69001,69002],{"class":93,"line":319},[91,69003,1450],{"emptyLinePlaceholder":846},[91,69005,69006,69008,69010,69012,69014,69016,69018,69020],{"class":93,"line":334},[91,69007,17901],{"class":97},[91,69009,17904],{"class":169},[91,69011,17974],{"class":169},[91,69013,18008],{"class":169},[91,69015,17913],{"class":169},[91,69017,17916],{"class":101},[91,69019,18015],{"class":169},[91,69021,8442],{"class":108},[91,69023,69024,69026],{"class":93,"line":355},[91,69025,17953],{"class":108},[91,69027,17993],{"class":169},[16,69029,18026,69030,18029],{},[31,69031,17736],{},[16,69033,18032],{},[49,69035,18036],{"id":18035},[16,69037,18039],{},[24,69039,69040,69042,69044,69046],{},[27,69041,18044],{},[27,69043,18047],{},[27,69045,18050],{},[27,69047,18053,69048,18056],{},[31,69049,17736],{},[1112,69051],{"description":18059,"favicon":17741,"host":17742,"title":18060,"url":18061},[1112,69053],{"description":18064,"favicon":17741,"host":17742,"title":18065,"url":18066},[829,69055,18069],{},{"title":87,"searchDepth":105,"depth":105,"links":69057},[69058,69059,69060,69061],{"id":17758,"depth":105,"text":17759},{"id":17854,"depth":105,"text":17855},{"id":17882,"depth":105,"text":17883},{"id":18035,"depth":105,"text":18036},{},{"title":17690,"description":18077},{"loc":18080},[17901,18086,18087,18088,12668,4954],{"id":18091,"title":18092,"body":69067,"created":18462,"description":18463,"extension":843,"filename":18464,"meta":69345,"navigation":846,"path":18466,"seo":69346,"sitemap":69347,"stem":18469,"subject":4438,"tags":69348,"updated":6033,"volume":853,"__hash__":18471},{"type":8,"value":69068,"toc":69338},[69069,69071,69073,69081,69125,69131,69135,69137,69139,69141,69147,69151,69155,69157,69159,69161,69163,69195,69199,69201,69203,69211,69216,69226,69334,69336],[16,69070,18097],{},[49,69072,18101],{"id":18100},[16,69074,18104,69075,15747,69077,18110,69079,18114],{},[31,69076,18107],{},[31,69078,962],{},[31,69080,18113],{},[82,69082,69083],{"className":1000,"code":18117,"language":1002,"meta":87,"style":87},[31,69084,69085,69089,69093,69097,69101,69105,69109,69113,69117,69121],{"__ignoreMap":87},[91,69086,69087],{"class":93,"line":94},[91,69088,18124],{},[91,69090,69091],{"class":93,"line":105},[91,69092,18129],{},[91,69094,69095],{"class":93,"line":121},[91,69096,18134],{},[91,69098,69099],{"class":93,"line":134},[91,69100,18139],{},[91,69102,69103],{"class":93,"line":228},[91,69104,3487],{},[91,69106,69107],{"class":93,"line":250},[91,69108,18148],{},[91,69110,69111],{"class":93,"line":260},[91,69112,1450],{"emptyLinePlaceholder":846},[91,69114,69115],{"class":93,"line":274},[91,69116,18157],{},[91,69118,69119],{"class":93,"line":284},[91,69120,18162],{},[91,69122,69123],{"class":93,"line":299},[91,69124,137],{},[16,69126,18169,69127,18173,69129,18177],{},[31,69128,18172],{},[31,69130,18176],{},[16,69132,69133],{},[19,69134],{"alt":18182,"src":18183},[16,69136,18186],{},[49,69138,18190],{"id":18189},[757,69140,18194],{"id":18193},[16,69142,18197,69143,18200,69145,18204],{},[31,69144,18172],{},[31,69146,18203],{},[16,69148,69149],{},[19,69150],{"alt":18209,"src":18210},[16,69152,69153,18216],{},[31,69154,18215],{},[1112,69156],{"description":18219,"host":1714,"image":18220,"title":18221,"url":18222},[1112,69158],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[757,69160,18232],{"id":18231},[16,69162,18235],{},[82,69164,69165],{"className":1000,"code":18238,"language":1002,"meta":87,"style":87},[31,69166,69167,69171,69175,69179,69183,69187,69191],{"__ignoreMap":87},[91,69168,69169],{"class":93,"line":94},[91,69170,18157],{},[91,69172,69173],{"class":93,"line":105},[91,69174,18162],{},[91,69176,69177],{"class":93,"line":121},[91,69178,1674],{},[91,69180,69181],{"class":93,"line":134},[91,69182,18257],{},[91,69184,69185],{"class":93,"line":228},[91,69186,18262],{},[91,69188,69189],{"class":93,"line":250},[91,69190,18267],{},[91,69192,69193],{"class":93,"line":260},[91,69194,137],{},[16,69196,18274,69197,18278],{},[31,69198,18277],{},[1112,69200],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[771,69202,18284],{"id":18283},[16,69204,18287,69205,18290,69207,18294,69209,18298],{},[31,69206,18277],{},[31,69208,18293],{},[31,69210,18297],{},[82,69212,69214],{"className":69213,"code":18302,"language":1099,"meta":87},[1097],[31,69215,18302],{"__ignoreMap":87},[16,69217,18307,69218,18311,69220,18315,69222,5733,69224,18322],{},[31,69219,18310],{},[31,69221,18314],{},[31,69223,18318],{},[31,69225,18321],{},[82,69227,69228],{"className":1000,"code":18325,"language":1002,"meta":87,"style":87},[31,69229,69230,69234,69238,69242,69246,69250,69254,69258,69262,69266,69270,69274,69278,69282,69286,69290,69294,69298,69302,69306,69310,69314,69318,69322,69326,69330],{"__ignoreMap":87},[91,69231,69232],{"class":93,"line":94},[91,69233,18332],{},[91,69235,69236],{"class":93,"line":105},[91,69237,1450],{"emptyLinePlaceholder":846},[91,69239,69240],{"class":93,"line":121},[91,69241,18341],{},[91,69243,69244],{"class":93,"line":134},[91,69245,18346],{},[91,69247,69248],{"class":93,"line":228},[91,69249,18351],{},[91,69251,69252],{"class":93,"line":250},[91,69253,18356],{},[91,69255,69256],{"class":93,"line":260},[91,69257,18361],{},[91,69259,69260],{"class":93,"line":274},[91,69261,18366],{},[91,69263,69264],{"class":93,"line":284},[91,69265,18371],{},[91,69267,69268],{"class":93,"line":299},[91,69269,1674],{},[91,69271,69272],{"class":93,"line":319},[91,69273,18380],{},[91,69275,69276],{"class":93,"line":334},[91,69277,18385],{},[91,69279,69280],{"class":93,"line":355},[91,69281,18390],{},[91,69283,69284],{"class":93,"line":364},[91,69285,4267],{},[91,69287,69288],{"class":93,"line":378},[91,69289,18399],{},[91,69291,69292],{"class":93,"line":387},[91,69293,18404],{},[91,69295,69296],{"class":93,"line":402},[91,69297,1693],{},[91,69299,69300],{"class":93,"line":422},[91,69301,1674],{},[91,69303,69304],{"class":93,"line":438},[91,69305,18417],{},[91,69307,69308],{"class":93,"line":458},[91,69309,18422],{},[91,69311,69312],{"class":93,"line":467},[91,69313,1693],{},[91,69315,69316],{"class":93,"line":481},[91,69317,1674],{},[91,69319,69320],{"class":93,"line":490},[91,69321,18435],{},[91,69323,69324],{"class":93,"line":3310},[91,69325,18440],{},[91,69327,69328],{"class":93,"line":3315},[91,69329,18445],{},[91,69331,69332],{"class":93,"line":3321},[91,69333,137],{},[16,69335,18452],{},[829,69337,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":69339},[69340,69341],{"id":18100,"depth":105,"text":18101},{"id":18189,"depth":105,"text":18190,"children":69342},[69343,69344],{"id":18193,"depth":121,"text":18194},{"id":18231,"depth":121,"text":18232},{},{"title":18092,"description":18463},{"loc":18466},[1511,1002,4954],{"id":18473,"title":18474,"body":69350,"created":18579,"description":18580,"extension":843,"filename":18581,"meta":69434,"navigation":846,"path":18583,"seo":69435,"sitemap":69436,"stem":18586,"subject":15047,"tags":69437,"updated":18579,"volume":853,"__hash__":18590},{"type":8,"value":69351,"toc":69432},[69352,69356,69360,69426,69430],[16,69353,18479,69354,18483],{},[792,69355,18482],{},[16,69357,18486,69358,18490],{},[31,69359,18489],{},[82,69361,69362],{"className":147,"code":18493,"language":149,"meta":87,"style":87},[31,69363,69364,69378,69382,69386,69390,69394,69398,69402,69406,69410,69414,69418],{"__ignoreMap":87},[91,69365,69366,69368,69370,69372,69374,69376],{"class":93,"line":94},[91,69367,156],{"class":101},[91,69369,1945],{"class":159},[91,69371,18504],{"class":97},[91,69373,166],{"class":101},[91,69375,18509],{"class":169},[91,69377,173],{"class":101},[91,69379,69380],{"class":93,"line":105},[91,69381,8486],{"class":101},[91,69383,69384],{"class":93,"line":121},[91,69385,18520],{"class":101},[91,69387,69388],{"class":93,"line":134},[91,69389,18525],{"class":101},[91,69391,69392],{"class":93,"line":228},[91,69393,18530],{"class":101},[91,69395,69396],{"class":93,"line":250},[91,69397,18535],{"class":101},[91,69399,69400],{"class":93,"line":260},[91,69401,18540],{"class":101},[91,69403,69404],{"class":93,"line":274},[91,69405,18545],{"class":101},[91,69407,69408],{"class":93,"line":284},[91,69409,10581],{"class":101},[91,69411,69412],{"class":93,"line":299},[91,69413,18554],{"class":101},[91,69415,69416],{"class":93,"line":319},[91,69417,137],{"class":101},[91,69419,69420,69422,69424],{"class":93,"line":334},[91,69421,493],{"class":101},[91,69423,1945],{"class":159},[91,69425,173],{"class":101},[16,69427,18569,69428,18573],{},[792,69429,18572],{},[829,69431,18576],{},{"title":87,"searchDepth":105,"depth":105,"links":69433},[],{},{"title":18474,"description":18580},{"loc":18583},[18588,149,18589],{"id":18592,"title":18593,"body":69439,"created":18884,"description":18885,"extension":843,"filename":18886,"meta":69653,"navigation":846,"path":18888,"seo":69654,"sitemap":69655,"stem":18891,"subject":18892,"tags":69656,"updated":18884,"volume":853,"__hash__":18896},{"type":8,"value":69440,"toc":69647},[69441,69445,69447,69451,69453,69461,69467,69469,69471,69475,69483,69487,69493,69495,69505,69507,69509,69511,69575,69577,69633,69637,69639,69641,69643,69645],[16,69442,18598,69443,18602],{},[31,69444,18601],{},[16,69446,18605],{},[16,69448,69449],{},[19,69450],{"alt":18610,"src":18611},[49,69452,18615],{"id":18614},[16,69454,18618,69455,5321,69457,18625,69459,18628],{},[31,69456,18621],{},[31,69458,18624],{},[31,69460,18621],{},[16,69462,18631,69463,18634,69465,18638],{},[31,69464,8361],{},[31,69466,18637],{},[16,69468,18641],{},[49,69470,18645],{"id":18644},[16,69472,18648,69473,18652],{},[31,69474,18651],{},[16,69476,18655,69477,18659,69479,64,69481,18666],{},[31,69478,18658],{},[31,69480,18662],{},[31,69482,18665],{},[16,69484,69485],{},[19,69486],{"alt":18671,"src":18672},[16,69488,69489,18677,69491,18681],{},[31,69490,18658],{},[31,69492,18680],{},[16,69494,18684],{},[24,69496,69497,69501],{},[27,69498,69499,18691],{},[31,69500,18662],{},[27,69502,69503,18696],{},[31,69504,18665],{},[16,69506,18699],{},[49,69508,18703],{"id":18702},[16,69510,18706],{},[82,69512,69513],{"className":7462,"code":18709,"language":7464,"meta":87,"style":87},[31,69514,69515,69531,69535,69543,69559,69563,69567,69571],{"__ignoreMap":87},[91,69516,69517,69519,69521,69523,69525,69527,69529],{"class":93,"line":94},[91,69518,1968],{"class":566},[91,69520,18718],{"class":108},[91,69522,1366],{"class":566},[91,69524,1390],{"class":566},[91,69526,18725],{"class":101},[91,69528,18728],{"class":97},[91,69530,9313],{"class":101},[91,69532,69533],{"class":93,"line":105},[91,69534,1450],{"emptyLinePlaceholder":846},[91,69536,69537,69539,69541],{"class":93,"line":121},[91,69538,18739],{"class":101},[91,69540,812],{"class":97},[91,69542,9266],{"class":101},[91,69544,69545,69547,69549,69551,69553,69555,69557],{"class":93,"line":134},[91,69546,18748],{"class":101},[91,69548,13083],{"class":97},[91,69550,1169],{"class":101},[91,69552,18755],{"class":1172},[91,69554,1176],{"class":101},[91,69556,1179],{"class":566},[91,69558,18762],{"class":101},[91,69560,69561],{"class":93,"line":228},[91,69562,18767],{"class":101},[91,69564,69565],{"class":93,"line":250},[91,69566,18772],{"class":101},[91,69568,69569],{"class":93,"line":260},[91,69570,18777],{"class":101},[91,69572,69573],{"class":93,"line":274},[91,69574,3487],{"class":101},[16,69576,18784],{},[82,69578,69579],{"className":7462,"code":18787,"language":7464,"meta":87,"style":87},[31,69580,69581,69597,69625],{"__ignoreMap":87},[91,69582,69583,69585,69587,69589,69591,69593,69595],{"class":93,"line":94},[91,69584,1968],{"class":566},[91,69586,18718],{"class":108},[91,69588,1366],{"class":566},[91,69590,1390],{"class":566},[91,69592,18725],{"class":101},[91,69594,18728],{"class":97},[91,69596,9313],{"class":101},[91,69598,69599,69601,69603,69605,69607,69609,69611,69613,69615,69617,69619,69621,69623],{"class":93,"line":105},[91,69600,18810],{"class":566},[91,69602,1976],{"class":108},[91,69604,1235],{"class":101},[91,69606,18817],{"class":97},[91,69608,18820],{"class":101},[91,69610,13083],{"class":97},[91,69612,1169],{"class":101},[91,69614,18755],{"class":1172},[91,69616,1176],{"class":101},[91,69618,1179],{"class":566},[91,69620,18833],{"class":101},[91,69622,18836],{"class":97},[91,69624,18839],{"class":101},[91,69626,69627,69629,69631],{"class":93,"line":121},[91,69628,18844],{"class":101},[91,69630,18847],{"class":97},[91,69632,9313],{"class":101},[16,69634,18852,69635,18856],{},[31,69636,18855],{},[49,69638,6005],{"id":6004},[1112,69640],{"description":18861,"host":18862,"title":18863,"url":18864},[1112,69642],{"description":18867,"host":5541,"title":18868,"url":18869,"favicon":9248},[1112,69644],{"description":18872,"host":5541,"title":18873,"url":18874,"favicon":9248},[829,69646,18877],{},{"title":87,"searchDepth":105,"depth":105,"links":69648},[69649,69650,69651,69652],{"id":18614,"depth":105,"text":18615},{"id":18644,"depth":105,"text":18645},{"id":18702,"depth":105,"text":18703},{"id":6004,"depth":105,"text":6005},{},{"title":18593,"description":18885},{"loc":18888},[10141,18088,18894,18895,14430],{"id":18898,"title":18899,"body":69658,"created":19588,"description":19589,"extension":843,"filename":19590,"meta":70215,"navigation":846,"path":19592,"seo":70216,"sitemap":70217,"stem":19595,"subject":851,"tags":70218,"updated":19588,"volume":1863,"__hash__":19597},{"type":8,"value":69659,"toc":70210},[69660,69662,69698,69700,69702,69704,69744,69748,69750,69752,69754,69756,69792,69814,69820,69824,69826,69828,69830,69914,69922,69944,69950,69990,69996,70120,70130,70132,70134,70202,70208],[16,69661,18904],{},[812,69663,69664,69676],{},[3001,69665,69666],{},[3004,69667,69668,69672],{},[3007,69669,69670],{},[31,69671,18915],{},[3007,69673,69674],{},[31,69675,18920],{},[3017,69677,69678,69688],{},[3004,69679,69680,69684],{},[3022,69681,69682],{},[31,69683,18929],{},[3022,69685,69686],{},[31,69687,18934],{},[3004,69689,69690,69694],{},[3022,69691,69692],{},[31,69693,18941],{},[3022,69695,69696],{},[31,69697,18946],{},[16,69699,18949],{},[49,69701,18953],{"id":18952},[1112,69703],{"host":5599,"title":18956,"url":18957,"description":18958,"image":18959,"favicon":5598},[82,69705,69706],{"className":147,"code":18962,"language":149,"meta":87,"style":87},[31,69707,69708,69726],{"__ignoreMap":87},[91,69709,69710,69712,69714,69716,69718,69720,69722,69724],{"class":93,"line":94},[91,69711,156],{"class":101},[91,69713,16],{"class":159},[91,69715,163],{"class":97},[91,69717,166],{"class":101},[91,69719,18977],{"class":169},[91,69721,12566],{"class":101},[91,69723,16],{"class":159},[91,69725,173],{"class":101},[91,69727,69728,69730,69732,69734,69736,69738,69740,69742],{"class":93,"line":105},[91,69729,156],{"class":101},[91,69731,16],{"class":159},[91,69733,163],{"class":97},[91,69735,166],{"class":101},[91,69737,18996],{"class":169},[91,69739,12566],{"class":101},[91,69741,16],{"class":159},[91,69743,173],{"class":101},[16,69745,19005,69746,19009],{},[31,69747,19008],{},[49,69749,19013],{"id":19012},[16,69751,19016],{},[1112,69753],{"host":5599,"title":18956,"url":19019,"description":18958,"image":18959,"favicon":5598},[1112,69755],{"host":5599,"title":19022,"url":19023,"description":19024,"image":19025,"favicon":5598},[82,69757,69758],{"className":84,"code":19028,"language":86,"meta":87,"style":87},[31,69759,69760,69766,69772,69778,69784,69788],{"__ignoreMap":87},[91,69761,69762,69764],{"class":93,"line":94},[91,69763,19035],{"class":566},[91,69765,102],{"class":101},[91,69767,69768,69770],{"class":93,"line":105},[91,69769,19042],{"class":101},[91,69771,19045],{"class":5466},[91,69773,69774,69776],{"class":93,"line":121},[91,69775,19050],{"class":101},[91,69777,19053],{"class":5466},[91,69779,69780,69782],{"class":93,"line":134},[91,69781,19058],{"class":101},[91,69783,19061],{"class":5466},[91,69785,69786],{"class":93,"line":228},[91,69787,19066],{"class":101},[91,69789,69790],{"class":93,"line":250},[91,69791,137],{"class":101},[82,69793,69794],{"className":147,"code":19073,"language":149,"meta":87,"style":87},[31,69795,69796],{"__ignoreMap":87},[91,69797,69798,69800,69802,69804,69806,69808,69810,69812],{"class":93,"line":94},[91,69799,156],{"class":101},[91,69801,16],{"class":159},[91,69803,163],{"class":97},[91,69805,166],{"class":101},[91,69807,19088],{"class":169},[91,69809,12566],{"class":101},[91,69811,16],{"class":159},[91,69813,173],{"class":101},[16,69815,69816,19100,69818,19104],{},[31,69817,19099],{},[31,69819,19103],{},[16,69821,69822],{},[19,69823],{"alt":21,"src":19109},[16,69825,19112],{},[1112,69827],{"host":1714,"title":19115,"url":19116,"description":19117,"image":19118},[16,69829,19121],{},[82,69831,69832],{"className":84,"code":19124,"language":86,"meta":87,"style":87},[31,69833,69834,69838,69844,69850,69856,69862,69868,69872,69876,69882,69890,69898,69906,69910],{"__ignoreMap":87},[91,69835,69836],{"class":93,"line":94},[91,69837,1450],{"emptyLinePlaceholder":846},[91,69839,69840,69842],{"class":93,"line":105},[91,69841,19135],{"class":566},[91,69843,19138],{"class":101},[91,69845,69846,69848],{"class":93,"line":121},[91,69847,19035],{"class":566},[91,69849,102],{"class":101},[91,69851,69852,69854],{"class":93,"line":134},[91,69853,19149],{"class":101},[91,69855,19045],{"class":5466},[91,69857,69858,69860],{"class":93,"line":228},[91,69859,19156],{"class":101},[91,69861,19053],{"class":5466},[91,69863,69864,69866],{"class":93,"line":250},[91,69865,19163],{"class":101},[91,69867,19061],{"class":5466},[91,69869,69870],{"class":93,"line":260},[91,69871,14989],{"class":101},[91,69873,69874],{"class":93,"line":274},[91,69875,137],{"class":101},[91,69877,69878,69880],{"class":93,"line":284},[91,69879,19178],{"class":566},[91,69881,19181],{"class":101},[91,69883,69884,69886,69888],{"class":93,"line":299},[91,69885,19149],{"class":101},[91,69887,19188],{"class":5466},[91,69889,118],{"class":101},[91,69891,69892,69894,69896],{"class":93,"line":319},[91,69893,19156],{"class":101},[91,69895,19197],{"class":5466},[91,69897,118],{"class":101},[91,69899,69900,69902,69904],{"class":93,"line":334},[91,69901,19163],{"class":101},[91,69903,19206],{"class":5466},[91,69905,118],{"class":101},[91,69907,69908],{"class":93,"line":355},[91,69909,14989],{"class":101},[91,69911,69912],{"class":93,"line":364},[91,69913,137],{"class":101},[16,69915,18274,69916,19222,69918,19226,69920,19230],{},[31,69917,19221],{},[31,69919,19225],{},[31,69921,19229],{},[82,69923,69924],{"className":147,"code":19233,"language":149,"meta":87,"style":87},[31,69925,69926],{"__ignoreMap":87},[91,69927,69928,69930,69932,69934,69936,69938,69940,69942],{"class":93,"line":94},[91,69929,156],{"class":101},[91,69931,149],{"class":159},[91,69933,163],{"class":97},[91,69935,166],{"class":101},[91,69937,19248],{"class":169},[91,69939,12566],{"class":101},[91,69941,149],{"class":159},[91,69943,173],{"class":101},[16,69945,19257,69946,19260,69948,19263],{},[31,69947,149],{},[31,69949,19221],{},[82,69951,69952],{"className":147,"code":19266,"language":149,"meta":87,"style":87},[31,69953,69954,69972],{"__ignoreMap":87},[91,69955,69956,69958,69960,69962,69964,69966,69968,69970],{"class":93,"line":94},[91,69957,156],{"class":101},[91,69959,160],{"class":159},[91,69961,163],{"class":97},[91,69963,166],{"class":101},[91,69965,19281],{"class":169},[91,69967,19284],{"class":101},[91,69969,160],{"class":159},[91,69971,173],{"class":101},[91,69973,69974,69976,69978,69980,69982,69984,69986,69988],{"class":93,"line":105},[91,69975,156],{"class":101},[91,69977,160],{"class":159},[91,69979,163],{"class":97},[91,69981,166],{"class":101},[91,69983,19301],{"class":169},[91,69985,19284],{"class":101},[91,69987,160],{"class":159},[91,69989,173],{"class":101},[16,69991,19310,69992,19314,69994,19318],{},[31,69993,19313],{},[31,69995,19317],{},[82,69997,69998],{"className":1154,"code":19321,"language":1156,"meta":87,"style":87},[31,69999,70000,70004,70008,70012,70028,70048,70062,70074,70096,70108,70116],{"__ignoreMap":87},[91,70001,70002],{"class":93,"line":94},[91,70003,2559],{"class":1343},[91,70005,70006],{"class":93,"line":105},[91,70007,19332],{"class":1343},[91,70009,70010],{"class":93,"line":121},[91,70011,2569],{"class":1343},[91,70013,70014,70016,70018,70020,70022,70024,70026],{"class":93,"line":134},[91,70015,7471],{"class":566},[91,70017,19343],{"class":97},[91,70019,795],{"class":101},[91,70021,19348],{"class":1172},[91,70023,1208],{"class":566},[91,70025,19353],{"class":97},[91,70027,3866],{"class":101},[91,70029,70030,70032,70034,70036,70038,70040,70042,70044,70046],{"class":93,"line":228},[91,70031,19360],{"class":101},[91,70033,19363],{"class":97},[91,70035,795],{"class":101},[91,70037,1442],{"class":566},[91,70039,19370],{"class":101},[91,70041,19373],{"class":169},[91,70043,64],{"class":101},[91,70045,1442],{"class":566},[91,70047,19380],{"class":101},[91,70049,70050,70052,70054,70056,70058,70060],{"class":93,"line":250},[91,70051,8218],{"class":566},[91,70053,19387],{"class":101},[91,70055,9382],{"class":566},[91,70057,19392],{"class":101},[91,70059,19395],{"class":108},[91,70061,3866],{"class":101},[91,70063,70064,70066,70068,70070,70072],{"class":93,"line":260},[91,70065,19402],{"class":101},[91,70067,19405],{"class":97},[91,70069,795],{"class":101},[91,70071,19373],{"class":169},[91,70073,1594],{"class":101},[91,70075,70076,70078,70080,70082,70084,70086,70088,70090,70092,70094],{"class":93,"line":274},[91,70077,12893],{"class":101},[91,70079,5258],{"class":566},[91,70081,19420],{"class":566},[91,70083,19387],{"class":101},[91,70085,9382],{"class":566},[91,70087,19392],{"class":101},[91,70089,19429],{"class":108},[91,70091,19432],{"class":101},[91,70093,1442],{"class":566},[91,70095,1445],{"class":101},[91,70097,70098,70100,70102,70104,70106],{"class":93,"line":284},[91,70099,19441],{"class":101},[91,70101,9263],{"class":97},[91,70103,795],{"class":101},[91,70105,19448],{"class":108},[91,70107,19451],{"class":101},[91,70109,70110,70112,70114],{"class":93,"line":299},[91,70111,19456],{"class":101},[91,70113,166],{"class":566},[91,70115,19461],{"class":101},[91,70117,70118],{"class":93,"line":319},[91,70119,137],{"class":101},[16,70121,19468,70122,19471,70124,19474,70126,19478,70128,19481],{},[31,70123,7479],{},[31,70125,149],{},[31,70127,19477],{},[31,70129,19178],{},[49,70131,19485],{"id":19484},[1112,70133],{"host":10802,"title":19488,"url":19489},[82,70135,70136],{"className":1154,"code":19492,"language":1156,"meta":87,"style":87},[31,70137,70138,70156,70162,70168,70190,70194,70198],{"__ignoreMap":87},[91,70139,70140,70142,70144,70146,70148,70150,70152,70154],{"class":93,"line":94},[91,70141,1968],{"class":566},[91,70143,19501],{"class":108},[91,70145,1366],{"class":566},[91,70147,5025],{"class":101},[91,70149,19508],{"class":97},[91,70151,795],{"class":101},[91,70153,19513],{"class":169},[91,70155,1594],{"class":101},[91,70157,70158,70160],{"class":93,"line":105},[91,70159,5226],{"class":566},[91,70161,19522],{"class":101},[91,70163,70164,70166],{"class":93,"line":121},[91,70165,7717],{"class":566},[91,70167,102],{"class":101},[91,70169,70170,70172,70174,70176,70178,70180,70182,70184,70186,70188],{"class":93,"line":134},[91,70171,19533],{"class":108},[91,70173,112],{"class":101},[91,70175,19538],{"class":97},[91,70177,19541],{"class":101},[91,70179,19544],{"class":97},[91,70181,795],{"class":101},[91,70183,19549],{"class":169},[91,70185,16],{"class":101},[91,70187,19554],{"class":169},[91,70189,8037],{"class":101},[91,70191,70192],{"class":93,"line":228},[91,70193,19561],{"class":566},[91,70195,70196],{"class":93,"line":250},[91,70197,19566],{"class":101},[91,70199,70200],{"class":93,"line":260},[91,70201,137],{"class":101},[16,70203,70204,19575,70206,19579],{},[31,70205,19178],{},[31,70207,19578],{},[829,70209,19582],{},{"title":87,"searchDepth":105,"depth":105,"links":70211},[70212,70213,70214],{"id":18952,"depth":105,"text":18953},{"id":19012,"depth":105,"text":19013},{"id":19484,"depth":105,"text":19485},{},{"title":18899,"description":19589},{"loc":19592},[86,5721],{"id":19599,"title":19600,"body":70220,"created":19751,"description":19752,"extension":843,"filename":19753,"meta":70324,"navigation":846,"path":19755,"seo":70325,"sitemap":70326,"stem":19758,"subject":19759,"tags":70327,"updated":19751,"volume":853,"__hash__":19763},{"type":8,"value":70221,"toc":70319},[70222,70224,70226,70228,70238,70243,70245,70247,70249,70251,70257,70261,70265,70267,70272,70274,70280,70282,70287,70293,70315,70317],[49,70223,19606],{"id":19605},[16,70225,19609],{},[16,70227,19612],{},[24,70229,70230,70232,70234,70236],{},[27,70231,19617],{},[27,70233,19620],{},[27,70235,19623],{},[27,70237,19626],{},[82,70239,70241],{"className":70240,"code":19630,"language":1099},[1097],[31,70242,19630],{"__ignoreMap":87},[16,70244,19635],{},[1112,70246],{"description":19638,"favicon":1320,"host":1317,"image":19639,"title":19640,"url":19641},[1112,70248],{"description":19644,"favicon":1320,"host":1317,"image":19645,"title":19646,"url":19647},[16,70250,19650],{},[1722,70252,70253],{},[16,70254,70255,19658],{},[91,70256,19657],{},[16,70258,70259],{},[19,70260],{"alt":21,"src":19663},[16,70262,19666,70263,19670],{},[31,70264,19669],{},[49,70266,19674],{"id":19673},[82,70268,70270],{"className":70269,"code":19678,"language":1099},[1097],[31,70271,19678],{"__ignoreMap":87},[16,70273,19683],{},[16,70275,19686,70276,19690,70278,19694],{},[31,70277,19689],{},[31,70279,19693],{},[49,70281,19698],{"id":19697},[82,70283,70285],{"className":70284,"code":19702,"language":1099},[1097],[31,70286,19702],{"__ignoreMap":87},[16,70288,19707,70289,19711,70291,19715],{},[31,70290,19710],{},[31,70292,19714],{},[82,70294,70295],{"className":8477,"code":19718,"language":8479,"meta":87,"style":87},[31,70296,70297,70303,70311],{"__ignoreMap":87},[91,70298,70299,70301],{"class":93,"line":94},[91,70300,15360],{"class":169},[91,70302,8789],{"class":101},[91,70304,70305,70307,70309],{"class":93,"line":105},[91,70306,19731],{"class":108},[91,70308,112],{"class":101},[91,70310,19736],{"class":169},[91,70312,70313],{"class":93,"line":121},[91,70314,137],{"class":101},[16,70316,19743],{},[829,70318,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":70320},[70321,70322,70323],{"id":19605,"depth":105,"text":19606},{"id":19673,"depth":105,"text":19674},{"id":19697,"depth":105,"text":19698},{},{"title":19600,"description":19752},{"loc":19755},[5721,1261,19761,16324,19762],{"id":19765,"title":19766,"body":70329,"created":19923,"description":19924,"extension":843,"filename":19925,"meta":70446,"navigation":846,"path":19927,"seo":70447,"sitemap":70448,"stem":19930,"subject":19759,"tags":70449,"updated":19923,"volume":1863,"__hash__":19933},{"type":8,"value":70330,"toc":70444},[70331,70339,70343,70423,70425,70430,70442],[16,70332,19771,70333,19775,70335,19778,70337,19782],{},[31,70334,19774],{},[31,70336,19774],{},[31,70338,19781],{},[16,70340,19785,70341,2997],{},[31,70342,19781],{},[82,70344,70345],{"className":84,"code":19790,"language":86,"meta":87,"style":87},[31,70346,70347,70357,70363,70367,70393,70397,70401,70411,70415],{"__ignoreMap":87},[91,70348,70349,70351,70353,70355],{"class":93,"line":94},[91,70350,156],{"class":101},[91,70352,829],{"class":159},[91,70354,19801],{"class":101},[91,70356,173],{"class":566},[91,70358,70359,70361],{"class":93,"line":105},[91,70360,19808],{"class":97},[91,70362,102],{"class":101},[91,70364,70365],{"class":93,"line":121},[91,70366,19815],{"class":1343},[91,70368,70369,70371,70373,70375,70377,70379,70381,70383,70385,70387,70389,70391],{"class":93,"line":134},[91,70370,19820],{"class":101},[91,70372,19823],{"class":108},[91,70374,19826],{"class":108},[91,70376,19829],{"class":101},[91,70378,18929],{"class":108},[91,70380,19834],{"class":108},[91,70382,19837],{"class":108},[91,70384,19840],{"class":101},[91,70386,19843],{"class":108},[91,70388,19846],{"class":101},[91,70390,19849],{"class":108},[91,70392,118],{"class":101},[91,70394,70395],{"class":93,"line":228},[91,70396,1629],{"class":101},[91,70398,70399],{"class":93,"line":250},[91,70400,19860],{"class":1343},[91,70402,70403,70405,70407,70409],{"class":93,"line":260},[91,70404,19865],{"class":108},[91,70406,112],{"class":101},[91,70408,19870],{"class":108},[91,70410,19873],{"class":101},[91,70412,70413],{"class":93,"line":274},[91,70414,137],{"class":101},[91,70416,70417,70419,70421],{"class":93,"line":284},[91,70418,493],{"class":101},[91,70420,829],{"class":159},[91,70422,173],{"class":566},[16,70424,19888],{},[16,70426,19891,70427,19897],{},[4306,70428,19896],{"href":19894,"rel":70429},[4310],[16,70431,19900,70432,19903,70434,19906,70436,19910,70438,19914,70440,19917],{},[31,70433,19774],{},[31,70435,19781],{},[31,70437,19909],{},[31,70439,19913],{},[31,70441,19781],{},[829,70443,19920],{},{"title":87,"searchDepth":105,"depth":105,"links":70445},[],{},{"title":19766,"description":19924},{"loc":19927},[5721,86,1936,19932],{"id":19935,"title":19936,"body":70451,"created":20877,"description":20878,"extension":843,"filename":20879,"meta":71218,"navigation":846,"path":20881,"seo":71219,"sitemap":71220,"stem":20884,"subject":17549,"tags":71221,"updated":20877,"volume":853,"__hash__":20887},{"type":8,"value":70452,"toc":71208},[70453,70461,70463,70537,70545,70635,70641,70759,70763,70774,70776,70840,70846,70855,70857,70935,70939,70943,70945,70947,70951,70956,70958,70960,70962,70964,70968,71034,71038,71040,71044,71056,71136,71142,71148,71150,71152,71206],[16,70454,19941,70455,5321,70457,19948,70459,19952],{},[31,70456,19944],{},[31,70458,19947],{},[31,70460,19951],{},[49,70462,19956],{"id":19955},[82,70464,70465],{"className":1154,"code":19959,"language":1156,"meta":87,"style":87},[31,70466,70467,70475,70485,70495,70499,70503,70513,70523,70533],{"__ignoreMap":87},[91,70468,70469,70471,70473],{"class":93,"line":94},[91,70470,19947],{"class":566},[91,70472,19968],{"class":97},[91,70474,102],{"class":101},[91,70476,70477,70479,70481,70483],{"class":93,"line":105},[91,70478,19975],{"class":1172},[91,70480,1208],{"class":566},[91,70482,1357],{"class":108},[91,70484,118],{"class":101},[91,70486,70487,70489,70491,70493],{"class":93,"line":121},[91,70488,19986],{"class":1172},[91,70490,1208],{"class":566},[91,70492,1357],{"class":108},[91,70494,118],{"class":101},[91,70496,70497],{"class":93,"line":134},[91,70498,137],{"class":101},[91,70500,70501],{"class":93,"line":228},[91,70502,1450],{"emptyLinePlaceholder":846},[91,70504,70505,70507,70509,70511],{"class":93,"line":250},[91,70506,19944],{"class":566},[91,70508,20007],{"class":97},[91,70510,1366],{"class":566},[91,70512,102],{"class":101},[91,70514,70515,70517,70519,70521],{"class":93,"line":260},[91,70516,19975],{"class":1172},[91,70518,1208],{"class":566},[91,70520,1357],{"class":108},[91,70522,118],{"class":101},[91,70524,70525,70527,70529,70531],{"class":93,"line":274},[91,70526,19986],{"class":1172},[91,70528,1208],{"class":566},[91,70530,1357],{"class":108},[91,70532,118],{"class":101},[91,70534,70535],{"class":93,"line":284},[91,70536,20036],{"class":101},[16,70538,70539,20041,70541,20044,70543,20048],{},[31,70540,19947],{},[31,70542,19944],{},[31,70544,20047],{},[82,70546,70547],{"className":1154,"code":20051,"language":1156,"meta":87,"style":87},[31,70548,70549,70557,70567,70571,70575,70583,70593,70597,70601,70615,70623,70631],{"__ignoreMap":87},[91,70550,70551,70553,70555],{"class":93,"line":94},[91,70552,19947],{"class":566},[91,70554,20060],{"class":97},[91,70556,102],{"class":101},[91,70558,70559,70561,70563,70565],{"class":93,"line":105},[91,70560,20067],{"class":1172},[91,70562,1208],{"class":566},[91,70564,1357],{"class":108},[91,70566,118],{"class":101},[91,70568,70569],{"class":93,"line":121},[91,70570,137],{"class":101},[91,70572,70573],{"class":93,"line":134},[91,70574,1450],{"emptyLinePlaceholder":846},[91,70576,70577,70579,70581],{"class":93,"line":228},[91,70578,19947],{"class":566},[91,70580,20060],{"class":97},[91,70582,102],{"class":101},[91,70584,70585,70587,70589,70591],{"class":93,"line":250},[91,70586,20094],{"class":1172},[91,70588,1208],{"class":566},[91,70590,1357],{"class":108},[91,70592,118],{"class":101},[91,70594,70595],{"class":93,"line":260},[91,70596,137],{"class":101},[91,70598,70599],{"class":93,"line":274},[91,70600,1450],{"emptyLinePlaceholder":846},[91,70602,70603,70605,70607,70609,70611,70613],{"class":93,"line":284},[91,70604,1968],{"class":566},[91,70606,20115],{"class":108},[91,70608,1208],{"class":566},[91,70610,20060],{"class":97},[91,70612,1366],{"class":566},[91,70614,102],{"class":101},[91,70616,70617,70619,70621],{"class":93,"line":299},[91,70618,20128],{"class":101},[91,70620,20131],{"class":169},[91,70622,7560],{"class":101},[91,70624,70625,70627,70629],{"class":93,"line":319},[91,70626,20138],{"class":101},[91,70628,20141],{"class":169},[91,70630,7560],{"class":101},[91,70632,70633],{"class":93,"line":334},[91,70634,20036],{"class":101},[16,70636,20150,70637,20153,70639,20157],{},[31,70638,19947],{},[31,70640,20156],{},[82,70642,70643],{"className":1154,"code":20160,"language":1156,"meta":87,"style":87},[31,70644,70645,70669,70673,70687,70709,70731,70735],{"__ignoreMap":87},[91,70646,70647,70649,70651,70653,70655,70657,70659,70661,70663,70665,70667],{"class":93,"line":94},[91,70648,19944],{"class":566},[91,70650,20169],{"class":97},[91,70652,1366],{"class":566},[91,70654,20174],{"class":169},[91,70656,1360],{"class":566},[91,70658,20179],{"class":169},[91,70660,1360],{"class":566},[91,70662,20184],{"class":169},[91,70664,1360],{"class":566},[91,70666,20189],{"class":169},[91,70668,118],{"class":101},[91,70670,70671],{"class":93,"line":105},[91,70672,1450],{"emptyLinePlaceholder":846},[91,70674,70675,70677,70679,70681,70683,70685],{"class":93,"line":121},[91,70676,19944],{"class":566},[91,70678,20202],{"class":97},[91,70680,156],{"class":101},[91,70682,20207],{"class":97},[91,70684,20210],{"class":101},[91,70686,20213],{"class":566},[91,70688,70689,70691,70693,70695,70697,70699,70701,70703,70705,70707],{"class":93,"line":134},[91,70690,20218],{"class":566},[91,70692,13969],{"class":101},[91,70694,20223],{"class":1172},[91,70696,1208],{"class":566},[91,70698,20228],{"class":108},[91,70700,20231],{"class":101},[91,70702,7901],{"class":1172},[91,70704,1208],{"class":566},[91,70706,20238],{"class":97},[91,70708,1445],{"class":101},[91,70710,70711,70713,70715,70717,70719,70721,70723,70725,70727,70729],{"class":93,"line":228},[91,70712,20218],{"class":566},[91,70714,13969],{"class":101},[91,70716,20223],{"class":1172},[91,70718,1208],{"class":566},[91,70720,20253],{"class":108},[91,70722,20231],{"class":101},[91,70724,9808],{"class":1172},[91,70726,1208],{"class":566},[91,70728,1357],{"class":108},[91,70730,20264],{"class":101},[91,70732,70733],{"class":93,"line":250},[91,70734,1450],{"emptyLinePlaceholder":846},[91,70736,70737,70739,70741,70743,70745,70747,70749,70751,70753,70755,70757],{"class":93,"line":260},[91,70738,19944],{"class":566},[91,70740,20275],{"class":97},[91,70742,1366],{"class":566},[91,70744,2662],{"class":101},[91,70746,9340],{"class":1172},[91,70748,1208],{"class":566},[91,70750,20286],{"class":97},[91,70752,1176],{"class":101},[91,70754,1179],{"class":566},[91,70756,20293],{"class":108},[91,70758,118],{"class":101},[16,70760,20298,70761,20301],{},[31,70762,19944],{},[16,70764,70765,20309,70768,20312,70770,20315,70772,20318],{},[4306,70766,20308],{"href":20306,"rel":70767},[4310],[31,70769,19947],{},[31,70771,19944],{},[31,70773,19944],{},[49,70775,20322],{"id":20321},[82,70777,70778],{"className":1154,"code":20325,"language":1156,"meta":87,"style":87},[31,70779,70780,70798,70816,70820,70836],{"__ignoreMap":87},[91,70781,70782,70784,70786,70788,70790,70792,70794,70796],{"class":93,"line":94},[91,70783,19944],{"class":566},[91,70785,20334],{"class":97},[91,70787,1366],{"class":566},[91,70789,13969],{"class":101},[91,70791,9066],{"class":1172},[91,70793,1208],{"class":566},[91,70795,1357],{"class":108},[91,70797,20264],{"class":101},[91,70799,70800,70802,70804,70806,70808,70810,70812,70814],{"class":93,"line":105},[91,70801,19944],{"class":566},[91,70803,20353],{"class":97},[91,70805,1366],{"class":566},[91,70807,13969],{"class":101},[91,70809,9066],{"class":1172},[91,70811,1208],{"class":566},[91,70813,20364],{"class":108},[91,70815,20264],{"class":101},[91,70817,70818],{"class":93,"line":121},[91,70819,1450],{"emptyLinePlaceholder":846},[91,70821,70822,70824,70826,70828,70830,70832,70834],{"class":93,"line":134},[91,70823,19944],{"class":566},[91,70825,20377],{"class":97},[91,70827,1366],{"class":566},[91,70829,20334],{"class":97},[91,70831,20384],{"class":566},[91,70833,20353],{"class":97},[91,70835,118],{"class":101},[91,70837,70838],{"class":93,"line":228},[91,70839,20393],{"class":1343},[16,70841,70842,20399,70844,20403],{},[31,70843,20398],{},[31,70845,20402],{},[16,70847,20406,70848,20409,70850,20413,70852,20419],{},[31,70849,19944],{},[31,70851,20412],{},[4306,70853,20418],{"href":20416,"rel":70854},[4310],[49,70856,20423],{"id":20422},[82,70858,70859],{"className":1154,"code":20426,"language":1156,"meta":87,"style":87},[31,70860,70861,70869,70879,70889,70899,70903,70907,70923,70931],{"__ignoreMap":87},[91,70862,70863,70865,70867],{"class":93,"line":94},[91,70864,19951],{"class":566},[91,70866,20435],{"class":97},[91,70868,102],{"class":101},[91,70870,70871,70873,70875,70877],{"class":93,"line":105},[91,70872,20442],{"class":108},[91,70874,1366],{"class":566},[91,70876,20447],{"class":169},[91,70878,7560],{"class":101},[91,70880,70881,70883,70885,70887],{"class":93,"line":121},[91,70882,20454],{"class":108},[91,70884,1366],{"class":566},[91,70886,20459],{"class":169},[91,70888,7560],{"class":101},[91,70890,70891,70893,70895,70897],{"class":93,"line":134},[91,70892,20466],{"class":108},[91,70894,1366],{"class":566},[91,70896,20471],{"class":169},[91,70898,7560],{"class":101},[91,70900,70901],{"class":93,"line":228},[91,70902,137],{"class":101},[91,70904,70905],{"class":93,"line":250},[91,70906,1450],{"emptyLinePlaceholder":846},[91,70908,70909,70911,70913,70915,70917,70919,70921],{"class":93,"line":260},[91,70910,7471],{"class":566},[91,70912,20488],{"class":97},[91,70914,795],{"class":101},[91,70916,20493],{"class":1172},[91,70918,1208],{"class":566},[91,70920,20435],{"class":97},[91,70922,3866],{"class":101},[91,70924,70925,70927,70929],{"class":93,"line":274},[91,70926,2271],{"class":101},[91,70928,1225],{"class":97},[91,70930,20508],{"class":101},[91,70932,70933],{"class":93,"line":284},[91,70934,137],{"class":101},[16,70936,70937,20517],{},[31,70938,19951],{},[16,70940,70941],{},[19,70942],{"alt":20522,"src":20523},[16,70944,20526],{},[16,70946,20529],{},[16,70948,20532,70949,20535],{},[31,70950,2499],{},[16,70952,20538,70953,20544],{},[4306,70954,20543],{"href":20541,"rel":70955},[4310],[16,70957,20547],{},[49,70959,20551],{"id":20550},[16,70961,20554],{},[757,70963,20558],{"id":20557},[16,70965,20561,70966,20564],{},[31,70967,1968],{},[82,70969,70970],{"className":1154,"code":20567,"language":1156,"meta":87,"style":87},[31,70971,70972,70982,70988,70994,70998,71002,71012,71016,71020],{"__ignoreMap":87},[91,70973,70974,70976,70978,70980],{"class":93,"line":94},[91,70975,1968],{"class":566},[91,70977,20576],{"class":566},[91,70979,20579],{"class":97},[91,70981,102],{"class":101},[91,70983,70984,70986],{"class":93,"line":105},[91,70985,20586],{"class":108},[91,70987,7560],{"class":101},[91,70989,70990,70992],{"class":93,"line":121},[91,70991,20593],{"class":108},[91,70993,7560],{"class":101},[91,70995,70996],{"class":93,"line":134},[91,70997,137],{"class":101},[91,70999,71000],{"class":93,"line":228},[91,71001,1450],{"emptyLinePlaceholder":846},[91,71003,71004,71006,71008,71010],{"class":93,"line":250},[91,71005,1349],{"class":566},[91,71007,20610],{"class":101},[91,71009,166],{"class":566},[91,71011,20615],{"class":101},[91,71013,71014],{"class":93,"line":260},[91,71015,1450],{"emptyLinePlaceholder":846},[91,71017,71018],{"class":93,"line":274},[91,71019,20624],{"class":1343},[91,71021,71022,71024,71026,71028,71030,71032],{"class":93,"line":284},[91,71023,1349],{"class":566},[91,71025,20610],{"class":101},[91,71027,166],{"class":566},[91,71029,11817],{"class":108},[91,71031,20637],{"class":1343},[91,71033,118],{"class":101},[16,71035,20642,71036,20646],{},[31,71037,20645],{},[757,71039,20650],{"id":20649},[16,71041,20653,71042,20657],{},[31,71043,20656],{},[16,71045,20660,71046,20663,71048,64,71050,20670,71052,20673,71054,20677],{},[31,71047,1968],{},[31,71049,20666],{},[31,71051,20669],{},[31,71053,20656],{},[31,71055,20676],{},[82,71057,71058],{"className":1154,"code":20680,"language":1156,"meta":87,"style":87},[31,71059,71060,71070,71078,71086,71094,71102,71112,71116,71126],{"__ignoreMap":87},[91,71061,71062,71064,71066,71068],{"class":93,"line":94},[91,71063,1968],{"class":566},[91,71065,20689],{"class":108},[91,71067,1366],{"class":566},[91,71069,102],{"class":101},[91,71071,71072,71074,71076],{"class":93,"line":105},[91,71073,20698],{"class":101},[91,71075,20701],{"class":108},[91,71077,7560],{"class":101},[91,71079,71080,71082,71084],{"class":93,"line":121},[91,71081,20708],{"class":101},[91,71083,20711],{"class":108},[91,71085,7560],{"class":101},[91,71087,71088,71090,71092],{"class":93,"line":134},[91,71089,20718],{"class":101},[91,71091,20721],{"class":108},[91,71093,7560],{"class":101},[91,71095,71096,71098,71100],{"class":93,"line":228},[91,71097,20728],{"class":101},[91,71099,8075],{"class":108},[91,71101,7560],{"class":101},[91,71103,71104,71106,71108,71110],{"class":93,"line":250},[91,71105,1434],{"class":101},[91,71107,20739],{"class":566},[91,71109,16463],{"class":566},[91,71111,118],{"class":101},[91,71113,71114],{"class":93,"line":260},[91,71115,1450],{"emptyLinePlaceholder":846},[91,71117,71118,71120,71122,71124],{"class":93,"line":274},[91,71119,2574],{"class":566},[91,71121,18504],{"class":566},[91,71123,20756],{"class":97},[91,71125,20759],{"class":566},[91,71127,71128,71130,71132,71134],{"class":93,"line":284},[91,71129,20764],{"class":566},[91,71131,20767],{"class":101},[91,71133,20770],{"class":566},[91,71135,20773],{"class":101},[16,71137,20776,71138,20780,71140,20784],{},[31,71139,20779],{},[31,71141,20783],{},[16,71143,20787,71144,5733,71146,20793],{},[31,71145,20645],{},[31,71147,20792],{},[49,71149,20797],{"id":20796},[16,71151,20800],{},[812,71153,71154,71162],{},[3001,71155,71156],{},[3004,71157,71158,71160],{},[3007,71159,9219],{},[3007,71161,20811],{},[3017,71163,71164,71172,71180,71188,71198],{},[3004,71165,71166,71168],{},[3022,71167,20818],{},[3022,71169,71170],{},[31,71171,19947],{},[3004,71173,71174,71176],{},[3022,71175,20827],{},[3022,71177,71178],{},[31,71179,19944],{},[3004,71181,71182,71184],{},[3022,71183,20836],{},[3022,71185,71186],{},[31,71187,19951],{},[3004,71189,71190,71192],{},[3022,71191,20845],{},[3022,71193,71194,20850,71196],{},[31,71195,20656],{},[31,71197,20770],{},[3004,71199,71200,71202],{},[3022,71201,20857],{},[3022,71203,20860,71204],{},[31,71205,20863],{},[829,71207,20866],{},{"title":87,"searchDepth":105,"depth":105,"links":71209},[71210,71211,71212,71213,71217],{"id":19955,"depth":105,"text":19956},{"id":20321,"depth":105,"text":20322},{"id":20422,"depth":105,"text":20423},{"id":20550,"depth":105,"text":20551,"children":71214},[71215,71216],{"id":20557,"depth":121,"text":20558},{"id":20649,"depth":121,"text":20650},{"id":20796,"depth":105,"text":20797},{},{"title":19936,"description":20878},{"loc":20881},[2864,19944,19947,19951,20886],{"id":20889,"title":20890,"body":71223,"created":18076,"description":21610,"extension":843,"filename":21611,"meta":71816,"navigation":846,"path":21613,"seo":71817,"sitemap":71818,"stem":21616,"subject":15282,"tags":71819,"updated":6033,"volume":853,"__hash__":21621},{"type":8,"value":71224,"toc":71810},[71225,71227,71229,71233,71245,71247,71253,71337,71341,71415,71419,71421,71432,71434,71590,71598,71600,71760,71764,71766,71768,71804,71806,71808],[16,71226,20895],{},[49,71228,20899],{"id":20898},[16,71230,20902,71231,20906],{},[31,71232,20905],{},[16,71234,20909,71235,20912,71237,20915,71239,5321,71242,20926],{},[31,71236,17698],{},[31,71238,17698],{},[4306,71240,20920],{"href":20918,"rel":71241},[4310],[4306,71243,20925],{"href":20923,"rel":71244},[4310],[49,71246,20930],{"id":20929},[16,71248,20933,71249,20937,71251,20941],{},[31,71250,20936],{},[31,71252,20940],{},[82,71254,71255],{"className":1154,"code":20944,"language":1156,"meta":87,"style":87},[31,71256,71257,71261,71273,71285,71293,71301,71305,71317,71321],{"__ignoreMap":87},[91,71258,71259],{"class":93,"line":94},[91,71260,20951],{"class":1343},[91,71262,71263,71265,71267,71269,71271],{"class":93,"line":105},[91,71264,2499],{"class":566},[91,71266,20958],{"class":101},[91,71268,2505],{"class":566},[91,71270,20963],{"class":169},[91,71272,118],{"class":101},[91,71274,71275,71277,71279,71281,71283],{"class":93,"line":121},[91,71276,2499],{"class":566},[91,71278,20972],{"class":101},[91,71280,2505],{"class":566},[91,71282,20977],{"class":169},[91,71284,118],{"class":101},[91,71286,71287,71289,71291],{"class":93,"line":134},[91,71288,2499],{"class":566},[91,71290,20986],{"class":169},[91,71292,118],{"class":101},[91,71294,71295,71297,71299],{"class":93,"line":228},[91,71296,2499],{"class":566},[91,71298,20995],{"class":169},[91,71300,118],{"class":101},[91,71302,71303],{"class":93,"line":250},[91,71304,1450],{"emptyLinePlaceholder":846},[91,71306,71307,71309,71311,71313,71315],{"class":93,"line":260},[91,71308,1968],{"class":566},[91,71310,14977],{"class":108},[91,71312,1366],{"class":566},[91,71314,21012],{"class":97},[91,71316,2030],{"class":101},[91,71318,71319],{"class":93,"line":274},[91,71320,1450],{"emptyLinePlaceholder":846},[91,71322,71323,71325,71327,71329,71331,71333,71335],{"class":93,"line":284},[91,71324,21023],{"class":101},[91,71326,14877],{"class":97},[91,71328,21028],{"class":101},[91,71330,14936],{"class":97},[91,71332,795],{"class":101},[91,71334,21035],{"class":169},[91,71336,1594],{"class":101},[16,71338,21040,71339,21044],{},[31,71340,21043],{},[82,71342,71343],{"className":1154,"code":21047,"language":1156,"meta":87,"style":87},[31,71344,71345,71349,71361,71373,71377,71387,71395,71403,71407,71411],{"__ignoreMap":87},[91,71346,71347],{"class":93,"line":94},[91,71348,21054],{"class":1343},[91,71350,71351,71353,71355,71357,71359],{"class":93,"line":105},[91,71352,2499],{"class":566},[91,71354,21061],{"class":101},[91,71356,2505],{"class":566},[91,71358,21066],{"class":169},[91,71360,118],{"class":101},[91,71362,71363,71365,71367,71369,71371],{"class":93,"line":121},[91,71364,2499],{"class":566},[91,71366,21075],{"class":101},[91,71368,2505],{"class":566},[91,71370,21080],{"class":169},[91,71372,118],{"class":101},[91,71374,71375],{"class":93,"line":134},[91,71376,1450],{"emptyLinePlaceholder":846},[91,71378,71379,71381,71383,71385],{"class":93,"line":228},[91,71380,2574],{"class":566},[91,71382,2001],{"class":566},[91,71384,21012],{"class":97},[91,71386,2007],{"class":101},[91,71388,71389,71391,71393],{"class":93,"line":250},[91,71390,2695],{"class":566},[91,71392,14982],{"class":97},[91,71394,7549],{"class":101},[91,71396,71397,71399,71401],{"class":93,"line":260},[91,71398,21109],{"class":101},[91,71400,21112],{"class":97},[91,71402,8275],{"class":101},[91,71404,71405],{"class":93,"line":274},[91,71406,21119],{"class":101},[91,71408,71409],{"class":93,"line":284},[91,71410,7575],{"class":101},[91,71412,71413],{"class":93,"line":299},[91,71414,137],{"class":101},[16,71416,21130,71417,21134],{},[31,71418,21133],{},[49,71420,21138],{"id":21137},[16,71422,21141,71423,21144,71425,21148,71427,21152,71429,21158],{},[31,71424,17698],{},[31,71426,21147],{},[31,71428,21151],{},[4306,71430,21157],{"href":21155,"rel":71431},[4310],[16,71433,21161],{},[82,71435,71436],{"className":1154,"code":21164,"language":1156,"meta":87,"style":87},[31,71437,71438,71442,71456,71460,71484,71490,71498,71502,71510,71520,71530,71536,71540,71544,71554,71560,71570,71574,71578,71582,71586],{"__ignoreMap":87},[91,71439,71440],{"class":93,"line":94},[91,71441,21171],{"class":1343},[91,71443,71444,71446,71448,71450,71452,71454],{"class":93,"line":105},[91,71445,2499],{"class":566},[91,71447,18504],{"class":566},[91,71449,21180],{"class":101},[91,71451,2505],{"class":566},[91,71453,21185],{"class":169},[91,71455,118],{"class":101},[91,71457,71458],{"class":93,"line":121},[91,71459,1450],{"emptyLinePlaceholder":846},[91,71461,71462,71464,71466,71468,71470,71472,71474,71476,71478,71480,71482],{"class":93,"line":134},[91,71463,2574],{"class":566},[91,71465,2001],{"class":566},[91,71467,21200],{"class":97},[91,71469,795],{"class":101},[91,71471,21205],{"class":1172},[91,71473,16037],{"class":566},[91,71475,1357],{"class":108},[91,71477,4618],{"class":101},[91,71479,1208],{"class":566},[91,71481,21216],{"class":97},[91,71483,102],{"class":101},[91,71485,71486,71488],{"class":93,"line":228},[91,71487,2695],{"class":566},[91,71489,102],{"class":101},[91,71491,71492,71494,71496],{"class":93,"line":250},[91,71493,8003],{"class":101},[91,71495,21231],{"class":169},[91,71497,7560],{"class":101},[91,71499,71500],{"class":93,"line":260},[91,71501,21238],{"class":101},[91,71503,71504,71506,71508],{"class":93,"line":274},[91,71505,21243],{"class":101},[91,71507,21246],{"class":169},[91,71509,7560],{"class":101},[91,71511,71512,71514,71516,71518],{"class":93,"line":284},[91,71513,21253],{"class":97},[91,71515,795],{"class":101},[91,71517,149],{"class":1172},[91,71519,3866],{"class":101},[91,71521,71522,71524,71526,71528],{"class":93,"line":299},[91,71523,10068],{"class":566},[91,71525,2662],{"class":101},[91,71527,2665],{"class":566},[91,71529,21270],{"class":101},[91,71531,71532,71534],{"class":93,"line":319},[91,71533,21275],{"class":566},[91,71535,14355],{"class":101},[91,71537,71538],{"class":93,"line":334},[91,71539,3307],{"class":101},[91,71541,71542],{"class":93,"line":355},[91,71543,1450],{"emptyLinePlaceholder":846},[91,71545,71546,71548,71550,71552],{"class":93,"line":364},[91,71547,11866],{"class":566},[91,71549,14292],{"class":101},[91,71551,14010],{"class":97},[91,71553,9266],{"class":101},[91,71555,71556,71558],{"class":93,"line":378},[91,71557,21300],{"class":169},[91,71559,7560],{"class":101},[91,71561,71562,71564,71566,71568],{"class":93,"line":387},[91,71563,21307],{"class":169},[91,71565,21205],{"class":101},[91,71567,21312],{"class":169},[91,71569,7560],{"class":101},[91,71571,71572],{"class":93,"line":402},[91,71573,21319],{"class":101},[91,71575,71576],{"class":93,"line":422},[91,71577,21324],{"class":101},[91,71579,71580],{"class":93,"line":438},[91,71581,3477],{"class":101},[91,71583,71584],{"class":93,"line":458},[91,71585,8083],{"class":101},[91,71587,71588],{"class":93,"line":467},[91,71589,137],{"class":101},[16,71591,21339,71592,15747,71594,3752,71596,21348],{},[31,71593,17698],{},[31,71595,21344],{},[31,71597,21347],{},[16,71599,21351],{},[82,71601,71602],{"className":1154,"code":21354,"language":1156,"meta":87,"style":87},[31,71603,71604,71608,71620,71632,71636,71654,71672,71690,71698,71702,71708,71712,71718,71722,71726,71730,71748,71752,71756],{"__ignoreMap":87},[91,71605,71606],{"class":93,"line":94},[91,71607,21361],{"class":1343},[91,71609,71610,71612,71614,71616,71618],{"class":93,"line":105},[91,71611,2499],{"class":566},[91,71613,21368],{"class":101},[91,71615,2505],{"class":566},[91,71617,21185],{"class":169},[91,71619,118],{"class":101},[91,71621,71622,71624,71626,71628,71630],{"class":93,"line":121},[91,71623,2499],{"class":566},[91,71625,21381],{"class":101},[91,71627,2505],{"class":566},[91,71629,21386],{"class":169},[91,71631,118],{"class":101},[91,71633,71634],{"class":93,"line":134},[91,71635,1450],{"emptyLinePlaceholder":846},[91,71637,71638,71640,71642,71644,71646,71648,71650,71652],{"class":93,"line":228},[91,71639,2574],{"class":566},[91,71641,12107],{"class":566},[91,71643,21401],{"class":97},[91,71645,21404],{"class":101},[91,71647,21407],{"class":1172},[91,71649,21410],{"class":101},[91,71651,1179],{"class":566},[91,71653,102],{"class":101},[91,71655,71656,71658,71660,71662,71664,71666,71668,71670],{"class":93,"line":250},[91,71657,2641],{"class":566},[91,71659,21421],{"class":108},[91,71661,1366],{"class":566},[91,71663,21426],{"class":101},[91,71665,21429],{"class":97},[91,71667,795],{"class":101},[91,71669,21434],{"class":169},[91,71671,3487],{"class":101},[91,71673,71674,71676,71678,71680,71682,71684,71686,71688],{"class":93,"line":260},[91,71675,21441],{"class":566},[91,71677,21426],{"class":101},[91,71679,14010],{"class":97},[91,71681,795],{"class":101},[91,71683,21434],{"class":169},[91,71685,64],{"class":101},[91,71687,13747],{"class":169},[91,71689,3487],{"class":101},[91,71691,71692,71694,71696],{"class":93,"line":274},[91,71693,21460],{"class":566},[91,71695,11771],{"class":108},[91,71697,118],{"class":101},[91,71699,71700],{"class":93,"line":284},[91,71701,1450],{"emptyLinePlaceholder":846},[91,71703,71704,71706],{"class":93,"line":299},[91,71705,2695],{"class":566},[91,71707,102],{"class":101},[91,71709,71710],{"class":93,"line":319},[91,71711,21479],{"class":101},[91,71713,71714,71716],{"class":93,"line":334},[91,71715,21484],{"class":97},[91,71717,21487],{"class":101},[91,71719,71720],{"class":93,"line":355},[91,71721,21492],{"class":1343},[91,71723,71724],{"class":93,"line":364},[91,71725,21497],{"class":101},[91,71727,71728],{"class":93,"line":378},[91,71729,21502],{"class":101},[91,71731,71732,71734,71736,71738,71740,71742,71744,71746],{"class":93,"line":387},[91,71733,21507],{"class":101},[91,71735,8372],{"class":566},[91,71737,21512],{"class":169},[91,71739,21205],{"class":101},[91,71741,1241],{"class":169},[91,71743,2131],{"class":566},[91,71745,21521],{"class":169},[91,71747,7560],{"class":101},[91,71749,71750],{"class":93,"line":402},[91,71751,3477],{"class":101},[91,71753,71754],{"class":93,"line":422},[91,71755,8083],{"class":101},[91,71757,71758],{"class":93,"line":438},[91,71759,1303],{"class":101},[16,71761,21538,71762,21541],{},[31,71763,17698],{},[49,71765,21545],{"id":21544},[16,71767,21548],{},[812,71769,71770,71778],{},[3001,71771,71772],{},[3004,71773,71774,71776],{},[3007,71775,21557],{},[3007,71777,21560],{"align":19870},[3017,71779,71780,71786,71792,71798],{},[3004,71781,71782,71784],{},[3022,71783,21567],{},[3022,71785,21570],{"align":19870},[3004,71787,71788,71790],{},[3022,71789,21575],{},[3022,71791,21578],{"align":19870},[3004,71793,71794,71796],{},[3022,71795,21583],{},[3022,71797,21586],{"align":19870},[3004,71799,71800,71802],{},[3022,71801,21591],{},[3022,71803,21594],{"align":19870},[16,71805,21597],{},[16,71807,21600],{},[829,71809,21603],{},{"title":87,"searchDepth":105,"depth":105,"links":71811},[71812,71813,71814,71815],{"id":20898,"depth":105,"text":20899},{"id":20929,"depth":105,"text":20930},{"id":21137,"depth":105,"text":21138},{"id":21544,"depth":105,"text":21545},{},{"title":20890,"description":21610},{"loc":21613},[16324,21618,21619,21620,15415],{"id":21623,"title":21624,"body":71821,"created":24437,"description":24438,"extension":843,"filename":24439,"meta":74218,"navigation":846,"path":24441,"seo":74219,"sitemap":74220,"stem":24444,"subject":2862,"tags":74221,"updated":24437,"volume":4441,"__hash__":24446},{"type":8,"value":71822,"toc":74195},[71823,71825,71830,71832,71837,71839,71841,71850,71852,71857,71865,71891,71893,71963,71969,71971,71980,71986,71991,72065,72069,72077,72079,72088,72090,72095,72097,72231,72235,72237,72245,72255,72257,72259,72268,72270,72274,72384,72388,72476,72482,72484,72493,72495,72500,72548,72552,72602,72606,72740,72742,72744,72753,72755,72760,72846,72854,72856,72861,72875,72911,72915,72951,72953,73011,73015,73017,73019,73028,73032,73034,73043,73047,73049,73051,73217,73221,73235,73281,73285,73287,73296,73302,73364,73368,73396,73402,73404,73409,73411,73427,73429,73434,73630,73634,73912,73914,74036,74038,74040,74042,74047,74052,74116,74124,74126,74132,74137,74141,74189,74193],[16,71824,21629],{},[16,71826,21632,71827,21637],{},[4306,71828,10845],{"href":21635,"rel":71829},[4310],[49,71831,21641],{"id":21640},[82,71833,71835],{"className":71834,"code":21645,"language":1099},[1097],[31,71836,21645],{"__ignoreMap":87},[16,71838,21650],{},[49,71840,21653],{"id":21653},[1722,71842,71843],{},[16,71844,21658,71845,71847],{},[21660,71846],{},[4306,71848,21664],{"href":21664,"rel":71849},[4310],[16,71851,21668],{},[82,71853,71855],{"className":71854,"code":21672,"language":1099},[1097],[31,71856,21672],{"__ignoreMap":87},[16,71858,21677,71859,21681,71861,21685,71863,21689],{},[31,71860,21680],{},[31,71862,21684],{},[31,71864,21688],{},[82,71866,71867],{"className":8477,"code":21692,"language":8479,"meta":87,"style":87},[31,71868,71869,71873,71879,71887],{"__ignoreMap":87},[91,71870,71871],{"class":93,"line":94},[91,71872,21699],{"class":1343},[91,71874,71875,71877],{"class":93,"line":105},[91,71876,21704],{"class":169},[91,71878,8789],{"class":101},[91,71880,71881,71883,71885],{"class":93,"line":121},[91,71882,21711],{"class":108},[91,71884,112],{"class":101},[91,71886,21716],{"class":169},[91,71888,71889],{"class":93,"line":134},[91,71890,137],{"class":101},[16,71892,21723],{},[82,71894,71895],{"className":1154,"code":21726,"filename":20905,"language":1156,"meta":87,"style":87},[31,71896,71897,71911,71915,71919,71923,71951,71955,71959],{"__ignoreMap":87},[91,71898,71899,71901,71903,71905,71907,71909],{"class":93,"line":94},[91,71900,2574],{"class":566},[91,71902,16463],{"class":566},[91,71904,14867],{"class":108},[91,71906,1366],{"class":566},[91,71908,21741],{"class":97},[91,71910,9266],{"class":101},[91,71912,71913],{"class":93,"line":105},[91,71914,21748],{"class":1343},[91,71916,71917],{"class":93,"line":121},[91,71918,21753],{"class":101},[91,71920,71921],{"class":93,"line":134},[91,71922,21758],{"class":101},[91,71924,71925,71927,71929,71931,71933,71935,71937,71939,71941,71943,71945,71947,71949],{"class":93,"line":228},[91,71926,21763],{"class":101},[91,71928,21766],{"class":1172},[91,71930,64],{"class":101},[91,71932,21771],{"class":1172},[91,71934,64],{"class":101},[91,71936,21776],{"class":1172},[91,71938,64],{"class":101},[91,71940,21781],{"class":1172},[91,71942,64],{"class":101},[91,71944,21786],{"class":1172},[91,71946,21410],{"class":101},[91,71948,1179],{"class":566},[91,71950,102],{"class":101},[91,71952,71953],{"class":93,"line":250},[91,71954,21797],{"class":1343},[91,71956,71957],{"class":93,"line":260},[91,71958,3477],{"class":101},[91,71960,71961],{"class":93,"line":274},[91,71962,3487],{"class":101},[16,71964,71965,21811,71967,21815],{},[31,71966,21810],{},[31,71968,21814],{},[49,71970,21818],{"id":21818},[1722,71972,71973],{},[16,71974,21818,71975,71977],{},[21660,71976],{},[4306,71978,21827],{"href":21827,"rel":71979},[4310],[16,71981,21831,71982,21834,71984,21838],{},[31,71983,21653],{},[31,71985,21837],{},[82,71987,71989],{"className":71988,"code":21842,"language":1099},[1097],[31,71990,21842],{"__ignoreMap":87},[82,71992,71993],{"className":1154,"code":21847,"language":1156,"meta":87,"style":87},[31,71994,71995,72005,72015,72023,72027,72031,72037,72053,72057,72061],{"__ignoreMap":87},[91,71996,71997,71999,72001,72003],{"class":93,"line":94},[91,71998,2499],{"class":566},[91,72000,21856],{"class":101},[91,72002,2505],{"class":566},[91,72004,21861],{"class":169},[91,72006,72007,72009,72011,72013],{"class":93,"line":105},[91,72008,2499],{"class":566},[91,72010,21868],{"class":101},[91,72012,2505],{"class":566},[91,72014,21873],{"class":169},[91,72016,72017,72019,72021],{"class":93,"line":121},[91,72018,2574],{"class":566},[91,72020,12107],{"class":566},[91,72022,102],{"class":101},[91,72024,72025],{"class":93,"line":134},[91,72026,21886],{"class":101},[91,72028,72029],{"class":93,"line":228},[91,72030,21891],{"class":1343},[91,72032,72033,72035],{"class":93,"line":250},[91,72034,21896],{"class":97},[91,72036,7549],{"class":101},[91,72038,72039,72041,72043,72045,72047,72049,72051],{"class":93,"line":260},[91,72040,21903],{"class":97},[91,72042,112],{"class":101},[91,72044,21776],{"class":1172},[91,72046,11859],{"class":566},[91,72048,2662],{"class":101},[91,72050,21914],{"class":97},[91,72052,21917],{"class":101},[91,72054,72055],{"class":93,"line":274},[91,72056,10100],{"class":101},[91,72058,72059],{"class":93,"line":284},[91,72060,21926],{"class":101},[91,72062,72063],{"class":93,"line":299},[91,72064,137],{"class":101},[16,72066,72067],{},[19,72068],{"alt":87,"src":21935},[16,72070,72071,21940,72073,21943,72075,21947],{},[31,72072,11295],{},[31,72074,14430],{},[31,72076,21946],{},[49,72078,21837],{"id":21837},[1722,72080,72081],{},[16,72082,21837,72083,72085],{},[21660,72084],{},[4306,72086,21958],{"href":21958,"rel":72087},[4310],[16,72089,21962],{},[82,72091,72093],{"className":72092,"code":21966,"language":1099},[1097],[31,72094,21966],{"__ignoreMap":87},[16,72096,21971],{},[82,72098,72099],{"className":1154,"code":21974,"language":1156,"meta":87,"style":87},[31,72100,72101,72105,72117,72127,72131,72137,72149,72157,72161,72165,72175,72183,72187,72197,72209,72215,72219,72223,72227],{"__ignoreMap":87},[91,72102,72103],{"class":93,"line":94},[91,72104,21361],{"class":1343},[91,72106,72107,72109,72111,72113,72115],{"class":93,"line":105},[91,72108,2499],{"class":566},[91,72110,21856],{"class":101},[91,72112,2505],{"class":566},[91,72114,21991],{"class":169},[91,72116,118],{"class":101},[91,72118,72119,72121,72123,72125],{"class":93,"line":121},[91,72120,2574],{"class":566},[91,72122,12107],{"class":566},[91,72124,21401],{"class":97},[91,72126,7549],{"class":101},[91,72128,72129],{"class":93,"line":134},[91,72130,21886],{"class":101},[91,72132,72133,72135],{"class":93,"line":228},[91,72134,21896],{"class":97},[91,72136,7549],{"class":101},[91,72138,72139,72141,72143,72145,72147],{"class":93,"line":250},[91,72140,22018],{"class":101},[91,72142,22021],{"class":169},[91,72144,64],{"class":101},[91,72146,22026],{"class":169},[91,72148,16394],{"class":101},[91,72150,72151,72153,72155],{"class":93,"line":260},[91,72152,22033],{"class":101},[91,72154,22036],{"class":169},[91,72156,7560],{"class":101},[91,72158,72159],{"class":93,"line":274},[91,72160,22043],{"class":1343},[91,72162,72163],{"class":93,"line":284},[91,72164,22048],{"class":1343},[91,72166,72167,72169,72171,72173],{"class":93,"line":299},[91,72168,22053],{"class":1343},[91,72170,22056],{"class":566},[91,72172,12259],{"class":101},[91,72174,22061],{"class":1343},[91,72176,72177,72179,72181],{"class":93,"line":319},[91,72178,22053],{"class":1343},[91,72180,22068],{"class":566},[91,72182,8723],{"class":1343},[91,72184,72185],{"class":93,"line":334},[91,72186,22075],{"class":1343},[91,72188,72189,72191,72193,72195],{"class":93,"line":355},[91,72190,22080],{"class":97},[91,72192,795],{"class":101},[91,72194,14102],{"class":1172},[91,72196,3866],{"class":101},[91,72198,72199,72201,72203,72205,72207],{"class":93,"line":364},[91,72200,22091],{"class":101},[91,72202,1225],{"class":97},[91,72204,795],{"class":101},[91,72206,22098],{"class":169},[91,72208,22101],{"class":101},[91,72210,72211,72213],{"class":93,"line":378},[91,72212,11866],{"class":566},[91,72214,22108],{"class":101},[91,72216,72217],{"class":93,"line":387},[91,72218,10095],{"class":101},[91,72220,72221],{"class":93,"line":402},[91,72222,10100],{"class":101},[91,72224,72225],{"class":93,"line":422},[91,72226,21926],{"class":101},[91,72228,72229],{"class":93,"line":438},[91,72230,9444],{"class":101},[16,72232,72233,22130],{},[31,72234,22129],{},[757,72236,22134],{"id":22133},[16,72238,72239,22139,72241,22143,72243,22147],{},[31,72240,22129],{},[31,72242,22142],{},[31,72244,22146],{},[24,72246,72247,72251],{},[27,72248,72249,22155],{},[792,72250,22154],{},[27,72252,72253,22161],{},[792,72254,22160],{},[16,72256,22164],{},[757,72258,22168],{"id":22167},[1722,72260,72261],{},[16,72262,22173,72263,72265],{},[21660,72264],{},[4306,72266,22178],{"href":22178,"rel":72267},[4310],[16,72269,22182],{},[16,72271,72272],{},[19,72273],{"alt":87,"src":22187},[82,72275,72276],{"className":1154,"code":22190,"language":1156,"meta":87,"style":87},[31,72277,72278,72282,72292,72302,72312,72318,72322,72330,72338,72346,72354,72360,72364,72368,72372,72380],{"__ignoreMap":87},[91,72279,72280],{"class":93,"line":94},[91,72281,22197],{"class":101},[91,72283,72284,72286,72288,72290],{"class":93,"line":105},[91,72285,22202],{"class":97},[91,72287,112],{"class":101},[91,72289,22207],{"class":169},[91,72291,7560],{"class":101},[91,72293,72294,72296,72298,72300],{"class":93,"line":121},[91,72295,22214],{"class":97},[91,72297,112],{"class":101},[91,72299,22219],{"class":169},[91,72301,7560],{"class":101},[91,72303,72304,72306,72308,72310],{"class":93,"line":134},[91,72305,22226],{"class":97},[91,72307,112],{"class":101},[91,72309,22231],{"class":108},[91,72311,7560],{"class":101},[91,72313,72314,72316],{"class":93,"line":228},[91,72315,22238],{"class":97},[91,72317,10596],{"class":101},[91,72319,72320],{"class":93,"line":250},[91,72321,22245],{"class":101},[91,72323,72324,72326,72328],{"class":93,"line":260},[91,72325,22250],{"class":101},[91,72327,22253],{"class":169},[91,72329,7560],{"class":101},[91,72331,72332,72334,72336],{"class":93,"line":274},[91,72333,22260],{"class":101},[91,72335,22263],{"class":169},[91,72337,7560],{"class":101},[91,72339,72340,72342,72344],{"class":93,"line":284},[91,72341,22270],{"class":101},[91,72343,22273],{"class":169},[91,72345,7560],{"class":101},[91,72347,72348,72350,72352],{"class":93,"line":299},[91,72349,22280],{"class":101},[91,72351,22231],{"class":108},[91,72353,7560],{"class":101},[91,72355,72356,72358],{"class":93,"line":319},[91,72357,22289],{"class":101},[91,72359,11269],{"class":108},[91,72361,72362],{"class":93,"line":334},[91,72363,3477],{"class":101},[91,72365,72366],{"class":93,"line":355},[91,72367,22300],{"class":1343},[91,72369,72370],{"class":93,"line":364},[91,72371,21926],{"class":101},[91,72373,72374,72376,72378],{"class":93,"line":378},[91,72375,22309],{"class":97},[91,72377,112],{"class":101},[91,72379,11269],{"class":108},[91,72381,72382],{"class":93,"line":387},[91,72383,137],{"class":101},[16,72385,22320,72386,22324],{},[31,72387,22323],{},[82,72389,72390],{"className":1934,"code":22327,"language":1936,"meta":87,"style":87},[31,72391,72392,72406,72414,72428,72440,72448,72456,72460,72468],{"__ignoreMap":87},[91,72393,72394,72396,72398,72400,72402,72404],{"class":93,"line":94},[91,72395,156],{"class":101},[91,72397,1945],{"class":159},[91,72399,1948],{"class":97},[91,72401,12566],{"class":101},[91,72403,1945],{"class":159},[91,72405,173],{"class":101},[91,72407,72408,72410,72412],{"class":93,"line":105},[91,72409,156],{"class":101},[91,72411,2118],{"class":159},[91,72413,173],{"class":101},[91,72415,72416,72418,72420,72422,72424,72426],{"class":93,"line":121},[91,72417,2125],{"class":101},[91,72419,160],{"class":159},[91,72421,163],{"class":97},[91,72423,166],{"class":101},[91,72425,22364],{"class":169},[91,72427,173],{"class":101},[91,72429,72430,72432,72434,72436,72438],{"class":93,"line":134},[91,72431,178],{"class":101},[91,72433,22373],{"class":159},[91,72435,12566],{"class":101},[91,72437,22373],{"class":159},[91,72439,173],{"class":101},[91,72441,72442,72444,72446],{"class":93,"line":228},[91,72443,15729],{"class":101},[91,72445,160],{"class":159},[91,72447,173],{"class":101},[91,72449,72450,72452,72454],{"class":93,"line":250},[91,72451,493],{"class":101},[91,72453,2118],{"class":159},[91,72455,173],{"class":101},[91,72457,72458],{"class":93,"line":260},[91,72459,1450],{"emptyLinePlaceholder":846},[91,72461,72462,72464,72466],{"class":93,"line":274},[91,72463,156],{"class":101},[91,72465,829],{"class":159},[91,72467,173],{"class":101},[91,72469,72470,72472,72474],{"class":93,"line":284},[91,72471,493],{"class":101},[91,72473,829],{"class":159},[91,72475,173],{"class":101},[16,72477,72478,22421,72480,22424],{},[31,72479,22420],{},[31,72481,22373],{},[49,72483,22427],{"id":22427},[1722,72485,72486],{},[16,72487,22427,72488,72490],{},[21660,72489],{},[4306,72491,22436],{"href":22436,"rel":72492},[4310],[16,72494,22440],{},[82,72496,72498],{"className":72497,"code":22444,"language":1099},[1097],[31,72499,22444],{"__ignoreMap":87},[82,72501,72502],{"className":1154,"code":22449,"language":1156,"meta":87,"style":87},[31,72503,72504,72508,72520,72530,72534,72540,72544],{"__ignoreMap":87},[91,72505,72506],{"class":93,"line":94},[91,72507,21361],{"class":1343},[91,72509,72510,72512,72514,72516,72518],{"class":93,"line":105},[91,72511,2499],{"class":566},[91,72513,22462],{"class":101},[91,72515,2505],{"class":566},[91,72517,22467],{"class":169},[91,72519,118],{"class":101},[91,72521,72522,72524,72526,72528],{"class":93,"line":121},[91,72523,2574],{"class":566},[91,72525,12107],{"class":566},[91,72527,21401],{"class":97},[91,72529,7549],{"class":101},[91,72531,72532],{"class":93,"line":134},[91,72533,21886],{"class":101},[91,72535,72536,72538],{"class":93,"line":228},[91,72537,22488],{"class":97},[91,72539,8275],{"class":101},[91,72541,72542],{"class":93,"line":250},[91,72543,22495],{"class":101},[91,72545,72546],{"class":93,"line":260},[91,72547,9444],{"class":101},[16,72549,22502,72550,22506],{},[31,72551,22505],{},[82,72553,72554],{"className":8477,"code":22509,"language":8479,"meta":87,"style":87},[31,72555,72556,72560,72566,72572,72578,72584,72590,72594,72598],{"__ignoreMap":87},[91,72557,72558],{"class":93,"line":94},[91,72559,22516],{"class":1343},[91,72561,72562,72564],{"class":93,"line":105},[91,72563,22521],{"class":169},[91,72565,8789],{"class":101},[91,72567,72568,72570],{"class":93,"line":121},[91,72569,22528],{"class":108},[91,72571,10596],{"class":101},[91,72573,72574,72576],{"class":93,"line":134},[91,72575,22535],{"class":169},[91,72577,10624],{"class":101},[91,72579,72580,72582],{"class":93,"line":228},[91,72581,22542],{"class":169},[91,72583,10624],{"class":101},[91,72585,72586,72588],{"class":93,"line":250},[91,72587,22549],{"class":169},[91,72589,10624],{"class":101},[91,72591,72592],{"class":93,"line":260},[91,72593,22556],{"class":169},[91,72595,72596],{"class":93,"line":274},[91,72597,21497],{"class":101},[91,72599,72600],{"class":93,"line":284},[91,72601,137],{"class":101},[16,72603,72604,22570],{},[31,72605,22569],{},[82,72607,72608],{"className":1154,"code":22573,"language":1156,"meta":87,"style":87},[31,72609,72610,72614,72618,72622,72626,72636,72640,72644,72648,72658,72662,72674,72688,72692,72696,72700,72728,72732,72736],{"__ignoreMap":87},[91,72611,72612],{"class":93,"line":94},[91,72613,14780],{"class":1343},[91,72615,72616],{"class":93,"line":105},[91,72617,22584],{"class":1343},[91,72619,72620],{"class":93,"line":121},[91,72621,22589],{"class":1343},[91,72623,72624],{"class":93,"line":134},[91,72625,22594],{"class":1343},[91,72627,72628,72630,72632,72634],{"class":93,"line":228},[91,72629,2499],{"class":566},[91,72631,22601],{"class":101},[91,72633,2505],{"class":566},[91,72635,22606],{"class":169},[91,72637,72638],{"class":93,"line":250},[91,72639,22611],{"class":1343},[91,72641,72642],{"class":93,"line":260},[91,72643,22589],{"class":1343},[91,72645,72646],{"class":93,"line":274},[91,72647,22620],{"class":1343},[91,72649,72650,72652,72654,72656],{"class":93,"line":284},[91,72651,2499],{"class":566},[91,72653,22627],{"class":101},[91,72655,2505],{"class":566},[91,72657,22632],{"class":169},[91,72659,72660],{"class":93,"line":299},[91,72661,1450],{"emptyLinePlaceholder":846},[91,72663,72664,72666,72668,72670,72672],{"class":93,"line":319},[91,72665,1968],{"class":566},[91,72667,13075],{"class":108},[91,72669,1366],{"class":566},[91,72671,22647],{"class":97},[91,72673,22650],{"class":101},[91,72675,72676,72678,72680,72682,72684,72686],{"class":93,"line":334},[91,72677,2574],{"class":566},[91,72679,16463],{"class":566},[91,72681,14867],{"class":108},[91,72683,1366],{"class":566},[91,72685,21741],{"class":97},[91,72687,9266],{"class":101},[91,72689,72690],{"class":93,"line":355},[91,72691,21748],{"class":1343},[91,72693,72694],{"class":93,"line":364},[91,72695,21753],{"class":101},[91,72697,72698],{"class":93,"line":378},[91,72699,22677],{"class":101},[91,72701,72702,72704,72706,72708,72710,72712,72714,72716,72718,72720,72722,72724,72726],{"class":93,"line":387},[91,72703,21763],{"class":101},[91,72705,21766],{"class":1172},[91,72707,64],{"class":101},[91,72709,21771],{"class":1172},[91,72711,64],{"class":101},[91,72713,21776],{"class":1172},[91,72715,64],{"class":101},[91,72717,21781],{"class":1172},[91,72719,64],{"class":101},[91,72721,21786],{"class":1172},[91,72723,21410],{"class":101},[91,72725,1179],{"class":566},[91,72727,102],{"class":101},[91,72729,72730],{"class":93,"line":402},[91,72731,21797],{"class":1343},[91,72733,72734],{"class":93,"line":422},[91,72735,3477],{"class":101},[91,72737,72738],{"class":93,"line":438},[91,72739,3487],{"class":101},[16,72741,22720],{},[49,72743,22723],{"id":22723},[1722,72745,72746],{},[16,72747,22723,72748,72750],{},[21660,72749],{},[4306,72751,22732],{"href":22732,"rel":72752},[4310],[16,72754,22736],{},[82,72756,72758],{"className":72757,"code":22740,"language":1099},[1097],[31,72759,22740],{"__ignoreMap":87},[82,72761,72762],{"className":1154,"code":22745,"language":1156,"meta":87,"style":87},[31,72763,72764,72774,72778,72788,72792,72798,72828,72832,72838,72842],{"__ignoreMap":87},[91,72765,72766,72768,72770,72772],{"class":93,"line":94},[91,72767,2499],{"class":566},[91,72769,22754],{"class":101},[91,72771,2505],{"class":566},[91,72773,22759],{"class":169},[91,72775,72776],{"class":93,"line":105},[91,72777,1450],{"emptyLinePlaceholder":846},[91,72779,72780,72782,72784,72786],{"class":93,"line":121},[91,72781,2574],{"class":566},[91,72783,12107],{"class":566},[91,72785,21401],{"class":97},[91,72787,7549],{"class":101},[91,72789,72790],{"class":93,"line":134},[91,72791,21886],{"class":101},[91,72793,72794,72796],{"class":93,"line":228},[91,72795,22782],{"class":97},[91,72797,7549],{"class":101},[91,72799,72800,72802,72804,72806,72808,72810,72812,72814,72816,72818,72820,72822,72824,72826],{"class":93,"line":250},[91,72801,22789],{"class":101},[91,72803,8361],{"class":169},[91,72805,22795],{"class":22794},[91,72807,1936],{"class":14017},[91,72809,22800],{"class":566},[91,72811,8361],{"class":169},[91,72813,6373],{"class":101},[91,72815,8352],{"class":169},[91,72817,22795],{"class":22794},[91,72819,843],{"class":14017},[91,72821,22800],{"class":566},[91,72823,8361],{"class":169},[91,72825,22817],{"class":101},[91,72827,22820],{"class":1343},[91,72829,72830],{"class":93,"line":260},[91,72831,10100],{"class":101},[91,72833,72834,72836],{"class":93,"line":274},[91,72835,22829],{"class":97},[91,72837,8275],{"class":101},[91,72839,72840],{"class":93,"line":284},[91,72841,21926],{"class":101},[91,72843,72844],{"class":93,"line":299},[91,72845,9444],{"class":101},[16,72847,22842,72848,22845,72850,22848,72852,22851],{},[31,72849,1936],{},[31,72851,843],{},[31,72853,15046],{},[757,72855,22855],{"id":22854},[16,72857,72858],{},[4306,72859,22862],{"href":22860,"rel":72860},[4310],[16,72862,22865,72863,22868,72865,22871,72867,22874,72869,22878,72871,22882,72873,22885],{},[31,72864,22146],{},[31,72866,21653],{},[31,72868,22723],{},[31,72870,22877],{},[31,72872,22881],{},[31,72874,22877],{},[82,72876,72877],{"className":15447,"code":22888,"language":843,"meta":87,"style":87},[31,72878,72879,72883,72889,72899,72907],{"__ignoreMap":87},[91,72880,72881],{"class":93,"line":94},[91,72882,15943],{"class":101},[91,72884,72885,72887],{"class":93,"line":105},[91,72886,13765],{"class":159},[91,72888,7265],{"class":101},[91,72890,72891,72893,72895,72897],{"class":93,"line":121},[91,72892,22905],{"class":101},[91,72894,1238],{"class":159},[91,72896,112],{"class":101},[91,72898,22912],{"class":169},[91,72900,72901,72903,72905],{"class":93,"line":134},[91,72902,11634],{"class":159},[91,72904,112],{"class":101},[91,72906,22921],{"class":169},[91,72908,72909],{"class":93,"line":228},[91,72910,15943],{"class":101},[16,72912,22928,72913,22932],{},[31,72914,22931],{},[82,72916,72917],{"className":15447,"code":22935,"language":843,"meta":87,"style":87},[31,72918,72919,72923,72929,72939,72947],{"__ignoreMap":87},[91,72920,72921],{"class":93,"line":94},[91,72922,15943],{"class":101},[91,72924,72925,72927],{"class":93,"line":105},[91,72926,13765],{"class":159},[91,72928,7265],{"class":101},[91,72930,72931,72933,72935,72937],{"class":93,"line":121},[91,72932,22905],{"class":101},[91,72934,1238],{"class":159},[91,72936,112],{"class":101},[91,72938,22958],{"class":169},[91,72940,72941,72943,72945],{"class":93,"line":134},[91,72942,22963],{"class":159},[91,72944,112],{"class":101},[91,72946,22968],{"class":169},[91,72948,72949],{"class":93,"line":228},[91,72950,15943],{"class":101},[16,72952,22975],{},[82,72954,72955],{"className":147,"code":22978,"language":149,"meta":87,"style":87},[31,72956,72957,72969,72981,72991],{"__ignoreMap":87},[91,72958,72959,72961,72963,72965,72967],{"class":93,"line":94},[91,72960,156],{"class":101},[91,72962,13972],{"class":159},[91,72964,22989],{"class":101},[91,72966,13972],{"class":159},[91,72968,173],{"class":101},[91,72970,72971,72973,72975,72977,72979],{"class":93,"line":105},[91,72972,156],{"class":101},[91,72974,13765],{"class":159},[91,72976,13768],{"class":97},[91,72978,166],{"class":101},[91,72980,23006],{"class":169},[91,72982,72983,72985,72987,72989],{"class":93,"line":121},[91,72984,808],{"class":97},[91,72986,166],{"class":101},[91,72988,23015],{"class":169},[91,72990,173],{"class":101},[91,72992,72993,72995,72997,72999,73001,73003,73005,73007,73009],{"class":93,"line":134},[91,72994,156],{"class":101},[91,72996,13765],{"class":159},[91,72998,23026],{"class":97},[91,73000,166],{"class":101},[91,73002,23031],{"class":169},[91,73004,13776],{"class":97},[91,73006,166],{"class":101},[91,73008,23038],{"class":169},[91,73010,173],{"class":101},[16,73012,23043,73013,23046],{},[31,73014,13765],{},[49,73016,23050],{"id":23049},[757,73018,23053],{"id":23053},[1722,73020,73021],{},[16,73022,23053,73023,73025],{},[21660,73024],{},[4306,73026,23062],{"href":23062,"rel":73027},[4310],[16,73029,73030,23069],{},[31,73031,23068],{},[757,73033,23072],{"id":23072},[1722,73035,73036],{},[16,73037,23072,73038,73040],{},[21660,73039],{},[4306,73041,23081],{"href":23081,"rel":73042},[4310],[16,73044,73045,23088],{},[31,73046,23087],{},[771,73048,23092],{"id":23091},[16,73050,23095],{},[82,73052,73053],{"className":1154,"code":23098,"language":1156,"meta":87,"style":87},[31,73054,73055,73065,73069,73073,73091,73109,73127,73145,73149,73167,73179,73183,73187,73209,73213],{"__ignoreMap":87},[91,73056,73057,73059,73061,73063],{"class":93,"line":94},[91,73058,2085],{"class":97},[91,73060,2088],{"class":101},[91,73062,1179],{"class":566},[91,73064,102],{"class":101},[91,73066,73067],{"class":93,"line":105},[91,73068,23115],{"class":1343},[91,73070,73071],{"class":93,"line":121},[91,73072,23120],{"class":1343},[91,73074,73075,73077,73079,73081,73083,73085,73087,73089],{"class":93,"line":134},[91,73076,2641],{"class":566},[91,73078,23127],{"class":108},[91,73080,1366],{"class":566},[91,73082,5025],{"class":101},[91,73084,19508],{"class":97},[91,73086,795],{"class":101},[91,73088,23138],{"class":169},[91,73090,1594],{"class":101},[91,73092,73093,73095,73097,73099,73101,73103,73105,73107],{"class":93,"line":228},[91,73094,2641],{"class":566},[91,73096,23147],{"class":108},[91,73098,1366],{"class":566},[91,73100,5025],{"class":101},[91,73102,19508],{"class":97},[91,73104,795],{"class":101},[91,73106,23158],{"class":169},[91,73108,1594],{"class":101},[91,73110,73111,73113,73115,73117,73119,73121,73123,73125],{"class":93,"line":250},[91,73112,2641],{"class":566},[91,73114,23167],{"class":108},[91,73116,1366],{"class":566},[91,73118,5025],{"class":101},[91,73120,19508],{"class":97},[91,73122,795],{"class":101},[91,73124,23178],{"class":169},[91,73126,1594],{"class":101},[91,73128,73129,73131,73133,73135,73137,73139,73141,73143],{"class":93,"line":260},[91,73130,2641],{"class":566},[91,73132,23187],{"class":108},[91,73134,1366],{"class":566},[91,73136,5025],{"class":101},[91,73138,19508],{"class":97},[91,73140,795],{"class":101},[91,73142,23198],{"class":169},[91,73144,1594],{"class":101},[91,73146,73147],{"class":93,"line":274},[91,73148,1450],{"emptyLinePlaceholder":846},[91,73150,73151,73153,73155,73157,73159,73161,73163,73165],{"class":93,"line":284},[91,73152,2439],{"class":566},[91,73154,23211],{"class":101},[91,73156,5232],{"class":566},[91,73158,23216],{"class":101},[91,73160,5232],{"class":566},[91,73162,23221],{"class":101},[91,73164,5232],{"class":566},[91,73166,23226],{"class":101},[91,73168,73169,73171,73173,73175,73177],{"class":93,"line":299},[91,73170,23231],{"class":101},[91,73172,166],{"class":566},[91,73174,23236],{"class":101},[91,73176,2665],{"class":566},[91,73178,118],{"class":101},[91,73180,73181],{"class":93,"line":319},[91,73182,23245],{"class":1343},[91,73184,73185],{"class":93,"line":334},[91,73186,23250],{"class":1343},[91,73188,73189,73191,73193,73195,73197,73199,73201,73203,73205,73207],{"class":93,"line":355},[91,73190,23255],{"class":101},[91,73192,20739],{"class":566},[91,73194,23260],{"class":97},[91,73196,23263],{"class":101},[91,73198,23266],{"class":97},[91,73200,795],{"class":101},[91,73202,23271],{"class":169},[91,73204,64],{"class":101},[91,73206,23276],{"class":169},[91,73208,1594],{"class":101},[91,73210,73211],{"class":93,"line":364},[91,73212,1698],{"class":101},[91,73214,73215],{"class":93,"line":378},[91,73216,9444],{"class":101},[16,73218,23289,73219,23293],{},[31,73220,23292],{},[1722,73222,73223],{},[16,73224,73225,23301,73227,23305,73229,23309,73231,23312,73233,23316],{},[91,73226,23300],{},[31,73228,23304],{},[31,73230,23308],{},[31,73232,22231],{},[31,73234,23315],{},[82,73236,73237],{"className":1154,"code":23319,"language":1156,"meta":87,"style":87},[31,73238,73239,73253,73257,73267,73273,73277],{"__ignoreMap":87},[91,73240,73241,73243,73245,73247,73249,73251],{"class":93,"line":94},[91,73242,1884],{"class":97},[91,73244,2088],{"class":101},[91,73246,1179],{"class":566},[91,73248,23332],{"class":101},[91,73250,1179],{"class":566},[91,73252,102],{"class":101},[91,73254,73255],{"class":93,"line":105},[91,73256,23341],{"class":1343},[91,73258,73259,73261,73263,73265],{"class":93,"line":121},[91,73260,23346],{"class":97},[91,73262,2088],{"class":101},[91,73264,1179],{"class":566},[91,73266,102],{"class":101},[91,73268,73269,73271],{"class":93,"line":134},[91,73270,23357],{"class":97},[91,73272,2030],{"class":101},[91,73274,73275],{"class":93,"line":228},[91,73276,7745],{"class":101},[91,73278,73279],{"class":93,"line":250},[91,73280,1303],{"class":101},[16,73282,23370,73283,23373],{},[31,73284,1884],{},[757,73286,23376],{"id":23376},[1722,73288,73289],{},[16,73290,23376,73291,73293],{},[21660,73292],{},[4306,73294,23385],{"href":23385,"rel":73295},[4310],[16,73297,73298,23392,73300,23395],{},[31,73299,23391],{},[31,73301,82],{},[82,73303,73304],{"className":1154,"code":23398,"language":1156,"meta":87,"style":87},[31,73305,73306,73316,73320,73326,73336,73340,73348,73352,73356,73360],{"__ignoreMap":87},[91,73307,73308,73310,73312,73314],{"class":93,"line":94},[91,73309,2574],{"class":566},[91,73311,12107],{"class":566},[91,73313,21401],{"class":97},[91,73315,7549],{"class":101},[91,73317,73318],{"class":93,"line":105},[91,73319,21886],{"class":101},[91,73321,73322,73324],{"class":93,"line":121},[91,73323,22829],{"class":97},[91,73325,7549],{"class":101},[91,73327,73328,73330,73332,73334],{"class":93,"line":134},[91,73329,23425],{"class":97},[91,73331,795],{"class":101},[91,73333,843],{"class":1172},[91,73335,3866],{"class":101},[91,73337,73338],{"class":93,"line":228},[91,73339,23436],{"class":1343},[91,73341,73342,73344,73346],{"class":93,"line":250},[91,73343,23441],{"class":101},[91,73345,14877],{"class":97},[91,73347,23446],{"class":101},[91,73349,73350],{"class":93,"line":260},[91,73351,21324],{"class":101},[91,73353,73354],{"class":93,"line":274},[91,73355,10100],{"class":101},[91,73357,73358],{"class":93,"line":284},[91,73359,21926],{"class":101},[91,73361,73362],{"class":93,"line":299},[91,73363,9444],{"class":101},[16,73365,73366,23468],{},[31,73367,23467],{},[82,73369,73370],{"className":23471,"code":23472,"language":23473,"meta":87,"style":87},[31,73371,73372,73380,73388],{"__ignoreMap":87},[91,73373,73374,73376,73378],{"class":93,"line":94},[91,73375,156],{"class":101},[91,73377,829],{"class":159},[91,73379,173],{"class":101},[91,73381,73382,73384,73386],{"class":93,"line":105},[91,73383,23488],{"class":566},[91,73385,23491],{"class":169},[91,73387,19873],{"class":101},[91,73389,73390,73392,73394],{"class":93,"line":121},[91,73391,493],{"class":101},[91,73393,829],{"class":159},[91,73395,173],{"class":101},[16,73397,23504,73398,23508,73400,23512],{},[31,73399,23507],{},[31,73401,23511],{},[771,73403,23515],{"id":23515},[16,73405,73406,23523],{},[4306,73407,23522],{"href":23520,"rel":73408},[4310],[49,73410,23526],{"id":23526},[1722,73412,73413],{},[16,73414,23526,73415,73417,73420,23539,73422,73424],{},[21660,73416],{},[4306,73418,23535],{"href":23535,"rel":73419},[4310],[21660,73421],{},[21660,73423],{},[4306,73425,23544],{"href":23544,"rel":73426},[4310],[16,73428,23548],{},[82,73430,73432],{"className":73431,"code":23552,"language":1099},[1097],[31,73433,23552],{"__ignoreMap":87},[82,73435,73436],{"className":1154,"code":23557,"language":1156,"meta":87,"style":87},[31,73437,73438,73442,73456,73460,73464,73484,73496,73504,73508,73526,73534,73538,73550,73554,73578,73590,73600,73604,73612,73618,73622,73626],{"__ignoreMap":87},[91,73439,73440],{"class":93,"line":94},[91,73441,14780],{"class":1343},[91,73443,73444,73446,73448,73450,73452,73454],{"class":93,"line":105},[91,73445,2574],{"class":566},[91,73447,16463],{"class":566},[91,73449,14867],{"class":108},[91,73451,1366],{"class":566},[91,73453,21741],{"class":97},[91,73455,9266],{"class":101},[91,73457,73458],{"class":93,"line":121},[91,73459,23582],{"class":101},[91,73461,73462],{"class":93,"line":134},[91,73463,23587],{"class":101},[91,73465,73466,73468,73470,73472,73474,73476,73478,73480,73482],{"class":93,"line":228},[91,73467,23592],{"class":101},[91,73469,21766],{"class":1172},[91,73471,64],{"class":101},[91,73473,21771],{"class":1172},[91,73475,64],{"class":101},[91,73477,21786],{"class":1172},[91,73479,21410],{"class":101},[91,73481,1179],{"class":566},[91,73483,102],{"class":101},[91,73485,73486,73488,73490,73492,73494],{"class":93,"line":250},[91,73487,1382],{"class":566},[91,73489,17032],{"class":108},[91,73491,1366],{"class":566},[91,73493,17037],{"class":97},[91,73495,9313],{"class":101},[91,73497,73498,73500,73502],{"class":93,"line":260},[91,73499,23625],{"class":101},[91,73501,14877],{"class":97},[91,73503,17049],{"class":101},[91,73505,73506],{"class":93,"line":274},[91,73507,1450],{"emptyLinePlaceholder":846},[91,73509,73510,73512,73514,73516,73518,73520,73522,73524],{"class":93,"line":284},[91,73511,8218],{"class":566},[91,73513,2662],{"class":101},[91,73515,2499],{"class":566},[91,73517,1235],{"class":101},[91,73519,13765],{"class":108},[91,73521,23648],{"class":101},[91,73523,23651],{"class":108},[91,73525,3487],{"class":101},[91,73527,73528,73530,73532],{"class":93,"line":299},[91,73529,23658],{"class":101},[91,73531,166],{"class":566},[91,73533,23663],{"class":101},[91,73535,73536],{"class":93,"line":319},[91,73537,23668],{"class":566},[91,73539,73540,73542,73544,73546,73548],{"class":93,"line":334},[91,73541,23673],{"class":101},[91,73543,166],{"class":566},[91,73545,23678],{"class":101},[91,73547,7829],{"class":566},[91,73549,23683],{"class":101},[91,73551,73552],{"class":93,"line":355},[91,73553,1450],{"emptyLinePlaceholder":846},[91,73555,73556,73558,73560,73562,73564,73566,73568,73570,73572,73574,73576],{"class":93,"line":364},[91,73557,23692],{"class":101},[91,73559,23695],{"class":97},[91,73561,1169],{"class":101},[91,73563,23700],{"class":1172},[91,73565,64],{"class":101},[91,73567,2505],{"class":1172},[91,73569,64],{"class":101},[91,73571,23709],{"class":1172},[91,73573,1176],{"class":101},[91,73575,1179],{"class":566},[91,73577,102],{"class":101},[91,73579,73580,73582,73584,73586,73588],{"class":93,"line":378},[91,73581,13915],{"class":566},[91,73583,12158],{"class":108},[91,73585,1366],{"class":566},[91,73587,23726],{"class":97},[91,73589,17049],{"class":101},[91,73591,73592,73594,73596,73598],{"class":93,"line":387},[91,73593,13326],{"class":566},[91,73595,2662],{"class":101},[91,73597,2665],{"class":566},[91,73599,23739],{"class":101},[91,73601,73602],{"class":93,"line":402},[91,73603,23744],{"class":1343},[91,73605,73606,73608,73610],{"class":93,"line":422},[91,73607,23749],{"class":101},[91,73609,23752],{"class":97},[91,73611,9313],{"class":101},[91,73613,73614,73616],{"class":93,"line":438},[91,73615,23759],{"class":97},[91,73617,9313],{"class":101},[91,73619,73620],{"class":93,"line":458},[91,73621,23766],{"class":101},[91,73623,73624],{"class":93,"line":467},[91,73625,10581],{"class":101},[91,73627,73628],{"class":93,"line":481},[91,73629,3487],{"class":101},[16,73631,23777,73632,23781],{},[31,73633,23780],{},[82,73635,73636],{"className":1154,"code":23784,"language":1156,"meta":87,"style":87},[31,73637,73638,73642,73654,73664,73676,73680,73690,73700,73710,73720,73730,73740,73750,73754,73758,73780,73796,73816,73820,73830,73834,73860,73868,73874,73878,73882,73886,73892,73896,73900,73904,73908],{"__ignoreMap":87},[91,73639,73640],{"class":93,"line":94},[91,73641,12391],{"class":1343},[91,73643,73644,73646,73648,73650,73652],{"class":93,"line":105},[91,73645,2499],{"class":566},[91,73647,11584],{"class":101},[91,73649,2505],{"class":566},[91,73651,23801],{"class":169},[91,73653,118],{"class":101},[91,73655,73656,73658,73660,73662],{"class":93,"line":121},[91,73657,2499],{"class":566},[91,73659,16435],{"class":101},[91,73661,2505],{"class":566},[91,73663,16440],{"class":169},[91,73665,73666,73668,73670,73672,73674],{"class":93,"line":134},[91,73667,2499],{"class":566},[91,73669,16447],{"class":101},[91,73671,2505],{"class":566},[91,73673,2508],{"class":169},[91,73675,118],{"class":101},[91,73677,73678],{"class":93,"line":228},[91,73679,1450],{"emptyLinePlaceholder":846},[91,73681,73682,73684,73686,73688],{"class":93,"line":250},[91,73683,2574],{"class":566},[91,73685,11602],{"class":566},[91,73687,11605],{"class":97},[91,73689,102],{"class":101},[91,73691,73692,73694,73696,73698],{"class":93,"line":260},[91,73693,11612],{"class":1172},[91,73695,1208],{"class":566},[91,73697,1357],{"class":108},[91,73699,118],{"class":101},[91,73701,73702,73704,73706,73708],{"class":93,"line":274},[91,73703,11623],{"class":1172},[91,73705,1208],{"class":566},[91,73707,1357],{"class":108},[91,73709,118],{"class":101},[91,73711,73712,73714,73716,73718],{"class":93,"line":284},[91,73713,11645],{"class":1172},[91,73715,1208],{"class":566},[91,73717,1357],{"class":108},[91,73719,118],{"class":101},[91,73721,73722,73724,73726,73728],{"class":93,"line":299},[91,73723,16034],{"class":1172},[91,73725,1208],{"class":566},[91,73727,1357],{"class":108},[91,73729,118],{"class":101},[91,73731,73732,73734,73736,73738],{"class":93,"line":319},[91,73733,11656],{"class":1172},[91,73735,1208],{"class":566},[91,73737,1357],{"class":108},[91,73739,11663],{"class":101},[91,73741,73742,73744,73746,73748],{"class":93,"line":334},[91,73743,11668],{"class":1172},[91,73745,1208],{"class":566},[91,73747,1357],{"class":108},[91,73749,118],{"class":101},[91,73751,73752],{"class":93,"line":355},[91,73753,137],{"class":101},[91,73755,73756],{"class":93,"line":364},[91,73757,1450],{"emptyLinePlaceholder":846},[91,73759,73760,73762,73764,73766,73768,73770,73772,73774,73776,73778],{"class":93,"line":378},[91,73761,2574],{"class":566},[91,73763,16463],{"class":566},[91,73765,23916],{"class":108},[91,73767,1366],{"class":566},[91,73769,16471],{"class":97},[91,73771,795],{"class":101},[91,73773,23925],{"class":169},[91,73775,9612],{"class":101},[91,73777,1179],{"class":566},[91,73779,102],{"class":101},[91,73781,73782,73784,73786,73788,73790,73792,73794],{"class":93,"line":387},[91,73783,2641],{"class":566},[91,73785,11721],{"class":108},[91,73787,1366],{"class":566},[91,73789,16494],{"class":97},[91,73791,156],{"class":101},[91,73793,11726],{"class":97},[91,73795,23948],{"class":101},[91,73797,73798,73800,73802,73804,73806,73808,73810,73812,73814],{"class":93,"line":402},[91,73799,2641],{"class":566},[91,73801,11741],{"class":108},[91,73803,1366],{"class":566},[91,73805,16494],{"class":97},[91,73807,156],{"class":101},[91,73809,20666],{"class":108},[91,73811,23965],{"class":101},[91,73813,14028],{"class":169},[91,73815,1594],{"class":101},[91,73817,73818],{"class":93,"line":422},[91,73819,1450],{"emptyLinePlaceholder":846},[91,73821,73822,73824,73826,73828],{"class":93,"line":438},[91,73823,23978],{"class":566},[91,73825,2001],{"class":566},[91,73827,23983],{"class":97},[91,73829,9266],{"class":101},[91,73831,73832],{"class":93,"line":458},[91,73833,3866],{"class":101},[91,73835,73836,73838,73840,73842,73844,73846,73848,73850,73852,73854,73856,73858],{"class":93,"line":467},[91,73837,11994],{"class":101},[91,73839,5938],{"class":97},[91,73841,156],{"class":101},[91,73843,11726],{"class":97},[91,73845,24002],{"class":101},[91,73847,24005],{"class":169},[91,73849,8017],{"class":101},[91,73851,1200],{"class":97},[91,73853,795],{"class":101},[91,73855,12010],{"class":1172},[91,73857,11859],{"class":566},[91,73859,102],{"class":101},[91,73861,73862,73864,73866],{"class":93,"line":481},[91,73863,24022],{"class":101},[91,73865,166],{"class":566},[91,73867,12451],{"class":101},[91,73869,73870,73872],{"class":93,"line":490},[91,73871,11825],{"class":566},[91,73873,12451],{"class":101},[91,73875,73876],{"class":93,"line":3310},[91,73877,7745],{"class":101},[91,73879,73880],{"class":93,"line":3315},[91,73881,1698],{"class":101},[91,73883,73884],{"class":93,"line":3321},[91,73885,1450],{"emptyLinePlaceholder":846},[91,73887,73888,73890],{"class":93,"line":3327},[91,73889,2695],{"class":566},[91,73891,102],{"class":101},[91,73893,73894],{"class":93,"line":3333},[91,73895,24055],{"class":101},[91,73897,73898],{"class":93,"line":3338},[91,73899,24060],{"class":101},[91,73901,73902],{"class":93,"line":3343},[91,73903,24065],{"class":101},[91,73905,73906],{"class":93,"line":7882},[91,73907,1698],{"class":101},[91,73909,73910],{"class":93,"line":7887},[91,73911,9444],{"class":101},[16,73913,24076],{},[82,73915,73916],{"className":1154,"code":24079,"language":1156,"meta":87,"style":87},[31,73917,73918,73922,73926,73930,73940,73950,73960,73970,73980,73990,74024,74028,74032],{"__ignoreMap":87},[91,73919,73920],{"class":93,"line":94},[91,73921,24086],{"class":1343},[91,73923,73924],{"class":93,"line":105},[91,73925,11369],{"class":101},[91,73927,73928],{"class":93,"line":121},[91,73929,11374],{"class":101},[91,73931,73932,73934,73936,73938],{"class":93,"line":134},[91,73933,24099],{"class":169},[91,73935,112],{"class":101},[91,73937,24104],{"class":169},[91,73939,7560],{"class":101},[91,73941,73942,73944,73946,73948],{"class":93,"line":228},[91,73943,24111],{"class":169},[91,73945,112],{"class":101},[91,73947,24104],{"class":169},[91,73949,7560],{"class":101},[91,73951,73952,73954,73956,73958],{"class":93,"line":250},[91,73953,17628],{"class":169},[91,73955,112],{"class":101},[91,73957,24126],{"class":169},[91,73959,7560],{"class":101},[91,73961,73962,73964,73966,73968],{"class":93,"line":260},[91,73963,24133],{"class":169},[91,73965,112],{"class":101},[91,73967,24138],{"class":169},[91,73969,7560],{"class":101},[91,73971,73972,73974,73976,73978],{"class":93,"line":274},[91,73973,24145],{"class":169},[91,73975,112],{"class":101},[91,73977,24150],{"class":169},[91,73979,7560],{"class":101},[91,73981,73982,73984,73986,73988],{"class":93,"line":284},[91,73983,24157],{"class":169},[91,73985,112],{"class":101},[91,73987,24150],{"class":169},[91,73989,7560],{"class":101},[91,73991,73992,73994,73996,73998,74000,74002,74004,74006,74008,74010,74012,74014,74016,74018,74020,74022],{"class":93,"line":299},[91,73993,24168],{"class":169},[91,73995,11454],{"class":101},[91,73997,24173],{"class":169},[91,73999,64],{"class":101},[91,74001,24178],{"class":169},[91,74003,64],{"class":101},[91,74005,24183],{"class":169},[91,74007,64],{"class":101},[91,74009,24188],{"class":169},[91,74011,64],{"class":101},[91,74013,24193],{"class":169},[91,74015,64],{"class":101},[91,74017,24198],{"class":169},[91,74019,64],{"class":101},[91,74021,24203],{"class":169},[91,74023,11460],{"class":101},[91,74025,74026],{"class":93,"line":319},[91,74027,10581],{"class":101},[91,74029,74030],{"class":93,"line":334},[91,74031,24214],{"class":1343},[91,74033,74034],{"class":93,"line":355},[91,74035,11460],{"class":101},[16,74037,24221],{},[49,74039,15123],{"id":15123},[757,74041,24227],{"id":24226},[82,74043,74045],{"className":74044,"code":24231,"language":1099},[1097],[31,74046,24231],{"__ignoreMap":87},[16,74048,74049],{},[4306,74050,24240],{"href":24238,"rel":74051},[4310],[82,74053,74054],{"className":1154,"code":24243,"language":1156,"meta":87,"style":87},[31,74055,74056,74068,74080,74084,74100,74108],{"__ignoreMap":87},[91,74057,74058,74060,74062,74064,74066],{"class":93,"line":94},[91,74059,2499],{"class":566},[91,74061,24252],{"class":101},[91,74063,2505],{"class":566},[91,74065,24257],{"class":169},[91,74067,118],{"class":101},[91,74069,74070,74072,74074,74076,74078],{"class":93,"line":105},[91,74071,2499],{"class":566},[91,74073,24266],{"class":101},[91,74075,2505],{"class":566},[91,74077,24271],{"class":169},[91,74079,118],{"class":101},[91,74081,74082],{"class":93,"line":121},[91,74083,1450],{"emptyLinePlaceholder":846},[91,74085,74086,74088,74090,74092,74094,74096,74098],{"class":93,"line":134},[91,74087,1968],{"class":566},[91,74089,13969],{"class":101},[91,74091,24286],{"class":108},[91,74093,13985],{"class":101},[91,74095,166],{"class":566},[91,74097,24293],{"class":108},[91,74099,118],{"class":101},[91,74101,74102,74104,74106],{"class":93,"line":228},[91,74103,24300],{"class":101},[91,74105,24303],{"class":97},[91,74107,24306],{"class":101},[91,74109,74110,74112,74114],{"class":93,"line":250},[91,74111,24300],{"class":101},[91,74113,24303],{"class":97},[91,74115,24315],{"class":101},[16,74117,24318,74118,24321,74120,24325,74122,24329],{},[31,74119,21653],{},[31,74121,24324],{},[31,74123,24328],{},[757,74125,5310],{"id":5310},[16,74127,74128,24336,74130,24340],{},[31,74129,21653],{},[31,74131,24339],{},[82,74133,74135],{"className":74134,"code":24344,"language":1099},[1097],[31,74136,24344],{"__ignoreMap":87},[16,74138,74139,24352],{},[31,74140,24351],{},[82,74142,74143],{"className":1154,"code":24355,"language":1156,"meta":87,"style":87},[31,74144,74145,74157,74161,74171,74177,74185],{"__ignoreMap":87},[91,74146,74147,74149,74151,74153,74155],{"class":93,"line":94},[91,74148,1968],{"class":566},[91,74150,13057],{"class":108},[91,74152,1366],{"class":566},[91,74154,23916],{"class":97},[91,74156,2030],{"class":101},[91,74158,74159],{"class":93,"line":105},[91,74160,1450],{"emptyLinePlaceholder":846},[91,74162,74163,74165,74167,74169],{"class":93,"line":121},[91,74164,2085],{"class":97},[91,74166,2088],{"class":101},[91,74168,1179],{"class":566},[91,74170,102],{"class":101},[91,74172,74173,74175],{"class":93,"line":134},[91,74174,24388],{"class":97},[91,74176,2030],{"class":101},[91,74178,74179,74181,74183],{"class":93,"line":228},[91,74180,24395],{"class":101},[91,74182,24398],{"class":97},[91,74184,2030],{"class":101},[91,74186,74187],{"class":93,"line":250},[91,74188,9444],{"class":101},[16,74190,24407,74191,24410],{},[31,74192,24339],{},[829,74194,24413],{},{"title":87,"searchDepth":105,"depth":105,"links":74196},[74197,74198,74199,74200,74204,74205,74208,74213,74214],{"id":21640,"depth":105,"text":21641},{"id":21653,"depth":105,"text":21653},{"id":21818,"depth":105,"text":21818},{"id":21837,"depth":105,"text":21837,"children":74201},[74202,74203],{"id":22133,"depth":121,"text":22134},{"id":22167,"depth":121,"text":22168},{"id":22427,"depth":105,"text":22427},{"id":22723,"depth":105,"text":22723,"children":74206},[74207],{"id":22854,"depth":121,"text":22855},{"id":23049,"depth":105,"text":23050,"children":74209},[74210,74211,74212],{"id":23053,"depth":121,"text":23053},{"id":23072,"depth":121,"text":23072},{"id":23376,"depth":121,"text":23376},{"id":23526,"depth":105,"text":23526},{"id":15123,"depth":105,"text":15123,"children":74215},[74216,74217],{"id":24226,"depth":121,"text":24227},{"id":5310,"depth":121,"text":5310},{},{"title":21624,"description":24438},{"loc":24441},[19761,15042,15043,15044,15045,15046],{"id":24448,"title":24449,"body":74223,"created":24632,"description":24633,"extension":843,"filename":24634,"meta":74375,"navigation":846,"path":24636,"seo":74376,"sitemap":74377,"stem":24639,"subject":2862,"tags":74378,"updated":24632,"volume":1863,"__hash__":24645},{"type":8,"value":74224,"toc":74372},[74225,74230,74232,74300,74302,74366,74370],[16,74226,74227],{},[4306,74228,24458],{"href":24456,"rel":74229},[4310],[16,74231,24461],{},[82,74233,74234],{"className":1154,"code":24464,"language":1156,"meta":87,"style":87},[31,74235,74236,74246,74268,74272,74284,74288,74292,74296],{"__ignoreMap":87},[91,74237,74238,74240,74242,74244],{"class":93,"line":94},[91,74239,1349],{"class":566},[91,74241,17223],{"class":101},[91,74243,166],{"class":566},[91,74245,24477],{"class":108},[91,74247,74248,74250,74252,74254,74256,74258,74260,74262,74264,74266],{"class":93,"line":105},[91,74249,24482],{"class":97},[91,74251,2088],{"class":101},[91,74253,1179],{"class":566},[91,74255,24489],{"class":101},[91,74257,1225],{"class":97},[91,74259,795],{"class":101},[91,74261,17243],{"class":566},[91,74263,24498],{"class":101},[91,74265,5637],{"class":108},[91,74267,3487],{"class":101},[91,74269,74270],{"class":93,"line":121},[91,74271,1450],{"emptyLinePlaceholder":846},[91,74273,74274,74276,74278,74280,74282],{"class":93,"line":134},[91,74275,24511],{"class":101},[91,74277,24514],{"class":97},[91,74279,795],{"class":101},[91,74281,24519],{"class":108},[91,74283,3487],{"class":101},[91,74285,74286],{"class":93,"line":228},[91,74287,1450],{"emptyLinePlaceholder":846},[91,74289,74290],{"class":93,"line":250},[91,74291,24530],{"class":1343},[91,74293,74294],{"class":93,"line":260},[91,74295,24535],{"class":1343},[91,74297,74298],{"class":93,"line":274},[91,74299,24540],{"class":1343},[49,74301,24544],{"id":24543},[82,74303,74304],{"className":1154,"code":24547,"language":1156,"meta":87,"style":87},[31,74305,74306,74316,74324,74328,74332,74336,74344,74362],{"__ignoreMap":87},[91,74307,74308,74310,74312,74314],{"class":93,"line":94},[91,74309,1998],{"class":566},[91,74311,2001],{"class":566},[91,74313,24558],{"class":97},[91,74315,2007],{"class":101},[91,74317,74318,74320,74322],{"class":93,"line":105},[91,74319,2254],{"class":566},[91,74321,24567],{"class":97},[91,74323,2030],{"class":101},[91,74325,74326],{"class":93,"line":121},[91,74327,21891],{"class":1343},[91,74329,74330],{"class":93,"line":134},[91,74331,137],{"class":101},[91,74333,74334],{"class":93,"line":228},[91,74335,1450],{"emptyLinePlaceholder":846},[91,74337,74338,74340,74342],{"class":93,"line":250},[91,74339,7471],{"class":566},[91,74341,24588],{"class":97},[91,74343,2007],{"class":101},[91,74345,74346,74348,74350,74352,74354,74356,74358,74360],{"class":93,"line":260},[91,74347,24595],{"class":101},[91,74349,166],{"class":566},[91,74351,24600],{"class":97},[91,74353,24603],{"class":101},[91,74355,24606],{"class":108},[91,74357,24609],{"class":566},[91,74359,24612],{"class":108},[91,74361,1594],{"class":101},[91,74363,74364],{"class":93,"line":274},[91,74365,137],{"class":101},[16,74367,24621,74368,24625],{},[31,74369,24624],{},[829,74371,24628],{},{"title":87,"searchDepth":105,"depth":105,"links":74373},[74374],{"id":24543,"depth":105,"text":24544},{},{"title":24449,"description":24633},{"loc":24636},[24641,24642,24643,24644],{"id":24647,"title":24648,"body":74380,"created":25157,"description":25158,"extension":843,"filename":25159,"meta":74810,"navigation":846,"path":25161,"seo":74811,"sitemap":74812,"stem":25164,"subject":2862,"tags":74813,"updated":25157,"volume":1863,"__hash__":25170},{"type":8,"value":74381,"toc":74802},[74382,74384,74388,74390,74476,74482,74484,74580,74582,74590,74594,74612,74614,74620,74680,74682,74684,74732,74740,74790,74794,74796,74798,74800],[49,74383,24654],{"id":24653},[16,74385,24657,74386,24661],{},[792,74387,24660],{},[757,74389,24665],{"id":24664},[82,74391,74392],{"className":11559,"code":24668,"language":11561,"meta":87,"style":87},[31,74393,74394,74404,74408,74418,74428,74434,74438,74446,74454,74472],{"__ignoreMap":87},[91,74395,74396,74398,74400,74402],{"class":93,"line":94},[91,74397,2499],{"class":566},[91,74399,24677],{"class":101},[91,74401,2505],{"class":566},[91,74403,24682],{"class":169},[91,74405,74406],{"class":93,"line":105},[91,74407,8486],{"class":101},[91,74409,74410,74412,74414,74416],{"class":93,"line":121},[91,74411,22202],{"class":97},[91,74413,112],{"class":101},[91,74415,24695],{"class":169},[91,74417,7560],{"class":101},[91,74419,74420,74422,74424,74426],{"class":93,"line":134},[91,74421,19986],{"class":97},[91,74423,112],{"class":101},[91,74425,24706],{"class":169},[91,74427,7560],{"class":101},[91,74429,74430,74432],{"class":93,"line":228},[91,74431,22214],{"class":97},[91,74433,24715],{"class":101},[91,74435,74436],{"class":93,"line":250},[91,74437,24720],{"class":101},[91,74439,74440,74442,74444],{"class":93,"line":260},[91,74441,24725],{"class":101},[91,74443,24728],{"class":169},[91,74445,7560],{"class":101},[91,74447,74448,74450,74452],{"class":93,"line":274},[91,74449,24735],{"class":101},[91,74451,24738],{"class":169},[91,74453,7560],{"class":101},[91,74455,74456,74458,74460,74462,74464,74466,74468,74470],{"class":93,"line":284},[91,74457,22214],{"class":97},[91,74459,24747],{"class":101},[91,74461,1179],{"class":566},[91,74463,24752],{"class":97},[91,74465,795],{"class":101},[91,74467,24757],{"class":1343},[91,74469,24760],{"class":169},[91,74471,3487],{"class":101},[91,74473,74474],{"class":93,"line":299},[91,74475,137],{"class":101},[16,74477,24769,74478,24773,74480,24776],{},[31,74479,24772],{},[31,74481,24772],{},[771,74483,24780],{"id":24779},[82,74485,74486],{"className":11559,"code":24783,"language":11561,"meta":87,"style":87},[31,74487,74488,74492,74496,74506,74516,74534,74538,74542,74550,74558,74576],{"__ignoreMap":87},[91,74489,74490],{"class":93,"line":94},[91,74491,8486],{"class":101},[91,74493,74494],{"class":93,"line":105},[91,74495,24794],{"class":1343},[91,74497,74498,74500,74502,74504],{"class":93,"line":121},[91,74499,22202],{"class":97},[91,74501,112],{"class":101},[91,74503,24695],{"class":169},[91,74505,7560],{"class":101},[91,74507,74508,74510,74512,74514],{"class":93,"line":134},[91,74509,19986],{"class":97},[91,74511,112],{"class":101},[91,74513,24706],{"class":169},[91,74515,7560],{"class":101},[91,74517,74518,74520,74522,74524,74526,74528,74530,74532],{"class":93,"line":228},[91,74519,24819],{"class":97},[91,74521,24747],{"class":101},[91,74523,1179],{"class":566},[91,74525,24752],{"class":97},[91,74527,795],{"class":101},[91,74529,24830],{"class":1343},[91,74531,24833],{"class":169},[91,74533,3487],{"class":101},[91,74535,74536],{"class":93,"line":250},[91,74537,24720],{"class":101},[91,74539,74540],{"class":93,"line":260},[91,74541,24844],{"class":1343},[91,74543,74544,74546,74548],{"class":93,"line":274},[91,74545,24725],{"class":101},[91,74547,24728],{"class":169},[91,74549,7560],{"class":101},[91,74551,74552,74554,74556],{"class":93,"line":284},[91,74553,24735],{"class":101},[91,74555,24738],{"class":169},[91,74557,7560],{"class":101},[91,74559,74560,74562,74564,74566,74568,74570,74572,74574],{"class":93,"line":299},[91,74561,22214],{"class":97},[91,74563,24747],{"class":101},[91,74565,1179],{"class":566},[91,74567,24752],{"class":97},[91,74569,795],{"class":101},[91,74571,24757],{"class":1343},[91,74573,24760],{"class":169},[91,74575,3487],{"class":101},[91,74577,74578],{"class":93,"line":319},[91,74579,137],{"class":101},[16,74581,24885],{},[24,74583,74584,74586,74588],{},[27,74585,24890],{},[27,74587,24893],{},[27,74589,24896],{},[16,74591,24899,74592,24902],{},[792,74593,24896],{},[24,74595,74596,74604],{},[27,74597,24907,74598,22871,74600,24912,74602,24915],{},[792,74599,24890],{},[792,74601,24896],{},[792,74603,24893],{},[27,74605,24918,74606,22871,74608,24912,74610,24915],{},[792,74607,24893],{},[792,74609,24896],{},[792,74611,24890],{},[49,74613,24928],{"id":24927},[16,74615,24931,74616,24934,74618,24937],{},[31,74617,24927],{},[31,74619,17698],{},[82,74621,74622],{"className":11559,"code":24940,"language":11561,"meta":87,"style":87},[31,74623,74624,74632,74652,74672],{"__ignoreMap":87},[91,74625,74626,74628,74630],{"class":93,"line":94},[91,74627,156],{"class":101},[91,74629,13756],{"class":159},[91,74631,173],{"class":101},[91,74633,74634,74636,74638,74640,74642,74644,74646,74648,74650],{"class":93,"line":105},[91,74635,178],{"class":101},[91,74637,24957],{"class":159},[91,74639,24960],{"class":97},[91,74641,166],{"class":566},[91,74643,24965],{"class":169},[91,74645,16123],{"class":97},[91,74647,166],{"class":566},[91,74649,24972],{"class":169},[91,74651,173],{"class":101},[91,74653,74654,74656,74658,74660,74662,74664,74666,74668,74670],{"class":93,"line":121},[91,74655,178],{"class":101},[91,74657,24957],{"class":159},[91,74659,24960],{"class":97},[91,74661,166],{"class":566},[91,74663,24987],{"class":169},[91,74665,16123],{"class":97},[91,74667,166],{"class":566},[91,74669,24972],{"class":169},[91,74671,173],{"class":101},[91,74673,74674,74676,74678],{"class":93,"line":134},[91,74675,156],{"class":101},[91,74677,13756],{"class":159},[91,74679,173],{"class":101},[16,74681,25006],{},[49,74683,25010],{"id":25009},[82,74685,74686],{"className":11559,"code":25013,"language":11561,"meta":87,"style":87},[31,74687,74688,74700,74712,74724,74728],{"__ignoreMap":87},[91,74689,74690,74692,74694,74696,74698],{"class":93,"line":94},[91,74691,10966],{"class":108},[91,74693,1235],{"class":101},[91,74695,10971],{"class":108},[91,74697,1366],{"class":566},[91,74699,102],{"class":101},[91,74701,74702,74704,74706,74708,74710],{"class":93,"line":105},[91,74703,25032],{"class":97},[91,74705,112],{"class":101},[91,74707,13315],{"class":1172},[91,74709,11859],{"class":566},[91,74711,102],{"class":101},[91,74713,74714,74716,74718,74720,74722],{"class":93,"line":121},[91,74715,13345],{"class":101},[91,74717,25047],{"class":97},[91,74719,795],{"class":101},[91,74721,25052],{"class":169},[91,74723,1594],{"class":101},[91,74725,74726],{"class":93,"line":134},[91,74727,1693],{"class":101},[91,74729,74730],{"class":93,"line":228},[91,74731,137],{"class":101},[16,74733,74734,25067,74736,25071,74738,25074],{},[792,74735,25009],{},[31,74737,25070],{},[31,74739,24927],{},[82,74741,74742],{"className":11559,"code":25077,"language":11561,"meta":87,"style":87},[31,74743,74744,74748,74758,74768,74786],{"__ignoreMap":87},[91,74745,74746],{"class":93,"line":94},[91,74747,8486],{"class":101},[91,74749,74750,74752,74754,74756],{"class":93,"line":105},[91,74751,25088],{"class":97},[91,74753,112],{"class":101},[91,74755,25093],{"class":169},[91,74757,7560],{"class":101},[91,74759,74760,74762,74764,74766],{"class":93,"line":121},[91,74761,25100],{"class":97},[91,74763,112],{"class":101},[91,74765,25105],{"class":169},[91,74767,7560],{"class":101},[91,74769,74770,74772,74774,74776,74778,74780,74782,74784],{"class":93,"line":134},[91,74771,24819],{"class":97},[91,74773,24747],{"class":101},[91,74775,1179],{"class":566},[91,74777,24752],{"class":97},[91,74779,795],{"class":101},[91,74781,25122],{"class":1343},[91,74783,25125],{"class":169},[91,74785,8037],{"class":101},[91,74787,74788],{"class":93,"line":228},[91,74789,137],{"class":101},[16,74791,25134,74792,25137],{},[792,74793,21680],{},[49,74795,19761],{"id":21618},[16,74797,25142],{},[16,74799,25145],{},[829,74801,25148],{},{"title":87,"searchDepth":105,"depth":105,"links":74803},[74804,74807,74808,74809],{"id":24653,"depth":105,"text":24654,"children":74805},[74806],{"id":24664,"depth":121,"text":24665},{"id":24927,"depth":105,"text":24928},{"id":25009,"depth":105,"text":25010},{"id":21618,"depth":105,"text":19761},{},{"title":24648,"description":25158},{"loc":25161},[15042,25166,15043,24654,25167,25168,25169],{"id":25172,"title":25173,"body":74815,"created":29552,"description":29553,"extension":843,"filename":29554,"meta":78571,"navigation":846,"path":29556,"seo":78572,"sitemap":78573,"stem":29559,"subject":2862,"tags":78574,"updated":29552,"volume":4441,"__hash__":29563},{"type":8,"value":74816,"toc":78557},[74817,74819,74821,74823,74825,74827,74831,74839,74841,74843,74847,75333,75345,75373,75377,75379,75397,75399,75553,75565,75875,75877,75885,75893,75903,75909,76121,76127,76133,76341,76347,76897,76901,76915,76923,76939,76941,76947,77169,77175,77177,77183,77185,77223,77229,77255,77259,77261,77273,77325,77327,77329,77331,77337,77405,77407,77417,77439,77443,77445,77531,77533,77553,77555,77559,77561,77565,77567,77571,77577,77697,77699,77701,77881,77883,78041,78043,78047,78051,78055,78151,78159,78161,78163,78167,78283,78291,78293,78295,78433,78439,78553,78555],[49,74818,25179],{"id":25178},[16,74820,25182],{},[16,74822,25185],{},[16,74824,25188],{},[49,74826,25192],{"id":25191},[16,74828,74829],{},[19,74830],{"alt":21,"src":25197},[16,74832,25200,74833,22871,74835,25207,74837,25210],{},[31,74834,25203],{},[31,74836,25206],{},[31,74838,25206],{},[757,74840,25214],{"id":25213},[16,74842,25217],{},[16,74844,25220,74845,25224],{},[31,74846,25223],{},[82,74848,74849],{"className":10952,"code":25227,"language":10954,"meta":87,"style":87},[31,74850,74851,74859,74867,74875,74887,74909,74915,74929,74937,74941,74951,74955,74959,74963,74969,74977,74981,74987,74995,75005,75011,75015,75019,75023,75045,75049,75065,75087,75099,75105,75109,75125,75131,75135,75141,75149,75153,75161,75165,75171,75175,75195,75203,75209,75213,75219,75227,75231,75251,75265,75273,75283,75287,75291,75295,75299,75303,75307,75313,75321,75325,75329],{"__ignoreMap":87},[91,74852,74853,74855,74857],{"class":93,"line":94},[91,74854,17283],{"class":101},[91,74856,25236],{"class":97},[91,74858,25239],{"class":101},[91,74860,74861,74863,74865],{"class":93,"line":105},[91,74862,25244],{"class":101},[91,74864,7557],{"class":108},[91,74866,7560],{"class":101},[91,74868,74869,74871,74873],{"class":93,"line":121},[91,74870,25253],{"class":101},[91,74872,7557],{"class":108},[91,74874,7560],{"class":101},[91,74876,74877,74879,74881,74883,74885],{"class":93,"line":134},[91,74878,11756],{"class":97},[91,74880,112],{"class":101},[91,74882,7471],{"class":566},[91,74884,25268],{"class":97},[91,74886,2007],{"class":101},[91,74888,74889,74891,74893,74895,74897,74899,74901,74903,74905,74907],{"class":93,"line":228},[91,74890,25275],{"class":566},[91,74892,25278],{"class":101},[91,74894,166],{"class":566},[91,74896,25283],{"class":101},[91,74898,8372],{"class":566},[91,74900,25288],{"class":101},[91,74902,17399],{"class":97},[91,74904,25293],{"class":101},[91,74906,1208],{"class":566},[91,74908,25298],{"class":101},[91,74910,74911,74913],{"class":93,"line":250},[91,74912,13326],{"class":566},[91,74914,25305],{"class":101},[91,74916,74917,74919,74921,74923,74925,74927],{"class":93,"line":260},[91,74918,25310],{"class":566},[91,74920,13329],{"class":101},[91,74922,13332],{"class":108},[91,74924,25317],{"class":566},[91,74926,13338],{"class":169},[91,74928,3866],{"class":101},[91,74930,74931,74933,74935],{"class":93,"line":274},[91,74932,25326],{"class":101},[91,74934,25329],{"class":97},[91,74936,7549],{"class":101},[91,74938,74939],{"class":93,"line":284},[91,74940,25336],{"class":101},[91,74942,74943,74945,74947,74949],{"class":93,"line":299},[91,74944,25341],{"class":101},[91,74946,25344],{"class":169},[91,74948,25347],{"class":1343},[91,74950,7560],{"class":101},[91,74952,74953],{"class":93,"line":319},[91,74954,25354],{"class":101},[91,74956,74957],{"class":93,"line":334},[91,74958,25359],{"class":101},[91,74960,74961],{"class":93,"line":355},[91,74962,25364],{"class":101},[91,74964,74965,74967],{"class":93,"line":364},[91,74966,25369],{"class":566},[91,74968,102],{"class":101},[91,74970,74971,74973,74975],{"class":93,"line":378},[91,74972,25326],{"class":101},[91,74974,25329],{"class":97},[91,74976,2030],{"class":101},[91,74978,74979],{"class":93,"line":387},[91,74980,25364],{"class":101},[91,74982,74983,74985],{"class":93,"line":402},[91,74984,25310],{"class":566},[91,74986,25390],{"class":101},[91,74988,74989,74991,74993],{"class":93,"line":422},[91,74990,25395],{"class":101},[91,74992,25329],{"class":97},[91,74994,2030],{"class":101},[91,74996,74997,74999,75001,75003],{"class":93,"line":438},[91,74998,25404],{"class":566},[91,75000,2662],{"class":101},[91,75002,25409],{"class":97},[91,75004,25412],{"class":101},[91,75006,75007,75009],{"class":93,"line":458},[91,75008,25417],{"class":97},[91,75010,17413],{"class":101},[91,75012,75013],{"class":93,"line":467},[91,75014,25424],{"class":101},[91,75016,75017],{"class":93,"line":481},[91,75018,25364],{"class":101},[91,75020,75021],{"class":93,"line":490},[91,75022,10095],{"class":101},[91,75024,75025,75027,75029,75031,75033,75035,75037,75039,75041,75043],{"class":93,"line":3310},[91,75026,11825],{"class":566},[91,75028,25439],{"class":97},[91,75030,8369],{"class":101},[91,75032,5232],{"class":566},[91,75034,7832],{"class":566},[91,75036,25448],{"class":101},[91,75038,8372],{"class":566},[91,75040,25453],{"class":101},[91,75042,1208],{"class":566},[91,75044,8384],{"class":101},[91,75046,75047],{"class":93,"line":3315},[91,75048,10581],{"class":101},[91,75050,75051,75053,75055,75057,75059,75061,75063],{"class":93,"line":3321},[91,75052,25466],{"class":97},[91,75054,112],{"class":101},[91,75056,7471],{"class":566},[91,75058,25473],{"class":97},[91,75060,795],{"class":101},[91,75062,25478],{"class":1172},[91,75064,3866],{"class":101},[91,75066,75067,75069,75071,75073,75075,75077,75079,75081,75083,75085],{"class":93,"line":3327},[91,75068,25275],{"class":566},[91,75070,25278],{"class":101},[91,75072,166],{"class":566},[91,75074,25283],{"class":101},[91,75076,8372],{"class":566},[91,75078,25288],{"class":101},[91,75080,17399],{"class":97},[91,75082,25293],{"class":101},[91,75084,1208],{"class":566},[91,75086,25298],{"class":101},[91,75088,75089,75091,75093,75095,75097],{"class":93,"line":3333},[91,75090,13326],{"class":566},[91,75092,2662],{"class":101},[91,75094,2665],{"class":566},[91,75096,25513],{"class":97},[91,75098,25516],{"class":101},[91,75100,75101,75103],{"class":93,"line":3338},[91,75102,21275],{"class":566},[91,75104,118],{"class":101},[91,75106,75107],{"class":93,"line":3343},[91,75108,10095],{"class":101},[91,75110,75111,75113,75115,75117,75119,75121,75123],{"class":93,"line":7882},[91,75112,13326],{"class":566},[91,75114,13329],{"class":101},[91,75116,13332],{"class":108},[91,75118,25317],{"class":566},[91,75120,13338],{"class":169},[91,75122,25541],{"class":566},[91,75124,25544],{"class":101},[91,75126,75127,75129],{"class":93,"line":7887},[91,75128,25549],{"class":97},[91,75130,2030],{"class":101},[91,75132,75133],{"class":93,"line":7892},[91,75134,10095],{"class":101},[91,75136,75137,75139],{"class":93,"line":7906},[91,75138,13326],{"class":566},[91,75140,25562],{"class":101},[91,75142,75143,75145,75147],{"class":93,"line":7922},[91,75144,25567],{"class":101},[91,75146,17399],{"class":97},[91,75148,25572],{"class":101},[91,75150,75151],{"class":93,"line":7927},[91,75152,10095],{"class":101},[91,75154,75155,75157,75159],{"class":93,"line":7967},[91,75156,25581],{"class":566},[91,75158,19420],{"class":566},[91,75160,25586],{"class":101},[91,75162,75163],{"class":93,"line":7983},[91,75164,25591],{"class":1343},[91,75166,75167,75169],{"class":93,"line":7988},[91,75168,21275],{"class":566},[91,75170,118],{"class":101},[91,75172,75173],{"class":93,"line":7993},[91,75174,10095],{"class":101},[91,75176,75177,75179,75181,75183,75185,75187,75189,75191,75193],{"class":93,"line":8000},[91,75178,25581],{"class":566},[91,75180,19420],{"class":566},[91,75182,2662],{"class":101},[91,75184,25612],{"class":97},[91,75186,8369],{"class":101},[91,75188,5232],{"class":566},[91,75190,7832],{"class":566},[91,75192,25612],{"class":97},[91,75194,25623],{"class":101},[91,75196,75197,75199,75201],{"class":93,"line":8040},[91,75198,25628],{"class":101},[91,75200,166],{"class":566},[91,75202,25633],{"class":101},[91,75204,75205,75207],{"class":93,"line":8046},[91,75206,21275],{"class":566},[91,75208,118],{"class":101},[91,75210,75211],{"class":93,"line":8080},[91,75212,10095],{"class":101},[91,75214,75215,75217],{"class":93,"line":8086},[91,75216,25581],{"class":566},[91,75218,102],{"class":101},[91,75220,75221,75223,75225],{"class":93,"line":12052},[91,75222,25654],{"class":101},[91,75224,166],{"class":566},[91,75226,25633],{"class":101},[91,75228,75229],{"class":93,"line":12070},[91,75230,10095],{"class":101},[91,75232,75233,75235,75237,75239,75241,75243,75245,75247,75249],{"class":93,"line":12087},[91,75234,25667],{"class":101},[91,75236,166],{"class":566},[91,75238,7832],{"class":566},[91,75240,25448],{"class":101},[91,75242,5232],{"class":566},[91,75244,25678],{"class":97},[91,75246,25681],{"class":101},[91,75248,7780],{"class":108},[91,75250,25686],{"class":101},[91,75252,75253,75255,75257,75259,75261,75263],{"class":93,"line":12092},[91,75254,13326],{"class":566},[91,75256,13329],{"class":101},[91,75258,13332],{"class":108},[91,75260,25317],{"class":566},[91,75262,13338],{"class":169},[91,75264,3866],{"class":101},[91,75266,75267,75269,75271],{"class":93,"line":12097},[91,75268,25705],{"class":101},[91,75270,25708],{"class":97},[91,75272,7549],{"class":101},[91,75274,75275,75277,75279,75281],{"class":93,"line":12102},[91,75276,25715],{"class":101},[91,75278,25718],{"class":169},[91,75280,25721],{"class":1343},[91,75282,7560],{"class":101},[91,75284,75285],{"class":93,"line":25726},[91,75286,25729],{"class":101},[91,75288,75289],{"class":93,"line":25732},[91,75290,25735],{"class":101},[91,75292,75293],{"class":93,"line":25738},[91,75294,25741],{"class":101},[91,75296,75297],{"class":93,"line":25744},[91,75298,25747],{"class":101},[91,75300,75301],{"class":93,"line":25750},[91,75302,25753],{"class":101},[91,75304,75305],{"class":93,"line":25756},[91,75306,10095],{"class":101},[91,75308,75309,75311],{"class":93,"line":25761},[91,75310,25581],{"class":566},[91,75312,102],{"class":101},[91,75314,75315,75317,75319],{"class":93,"line":25768},[91,75316,25705],{"class":101},[91,75318,25708],{"class":97},[91,75320,2030],{"class":101},[91,75322,75323],{"class":93,"line":25777},[91,75324,10095],{"class":101},[91,75326,75327],{"class":93,"line":25782},[91,75328,1698],{"class":101},[91,75330,75331],{"class":93,"line":25787},[91,75332,1303],{"class":101},[16,75334,25792,75335,14382,75337,25799,75339,14382,75341,25805,75343,25809],{},[31,75336,25795],{},[31,75338,25798],{},[31,75340,5938],{},[31,75342,25804],{},[31,75344,25808],{},[4530,75346,75347,75351,75353,75355,75359,75363,75367],{},[27,75348,75349,25816],{},[31,75350,25804],{},[27,75352,25819],{},[27,75354,25822],{},[27,75356,75357,25828],{},[31,75358,25827],{},[27,75360,75361,25834],{},[31,75362,25833],{},[27,75364,25837,75365,25841],{},[31,75366,25840],{},[27,75368,25844,75369,25848,75371,25852],{},[31,75370,25847],{},[31,75372,25851],{},[16,75374,75375],{},[19,75376],{"alt":21,"src":25857},[16,75378,25860],{},[24,75380,75381,75383,75385,75387,75389,75393,75395],{},[27,75382,25865],{},[27,75384,25868],{},[27,75386,25871],{},[27,75388,25874],{},[27,75390,25877,75391,25881],{},[792,75392,25880],{},[27,75394,25884],{},[27,75396,25887],{},[757,75398,25891],{"id":25890},[82,75400,75401],{"className":10952,"code":25894,"language":10954,"meta":87,"style":87},[31,75402,75403,75423,75445,75463,75473,75485,75489,75501,75511,75515,75521,75531,75535,75539,75543,75549],{"__ignoreMap":87},[91,75404,75405,75407,75409,75411,75413,75415,75417,75419,75421],{"class":93,"line":94},[91,75406,5626],{"class":566},[91,75408,25903],{"class":101},[91,75410,166],{"class":566},[91,75412,25908],{"class":1343},[91,75414,25911],{"class":566},[91,75416,25914],{"class":1343},[91,75418,2662],{"class":101},[91,75420,7471],{"class":566},[91,75422,25921],{"class":101},[91,75424,75425,75427,75429,75431,75433,75435,75437,75439,75441,75443],{"class":93,"line":105},[91,75426,25926],{"class":108},[91,75428,1235],{"class":101},[91,75430,17514],{"class":108},[91,75432,1235],{"class":101},[91,75434,25935],{"class":97},[91,75436,1366],{"class":566},[91,75438,2001],{"class":566},[91,75440,2662],{"class":101},[91,75442,25944],{"class":1172},[91,75444,25947],{"class":101},[91,75446,75447,75449,75451,75453,75455,75457,75459,75461],{"class":93,"line":121},[91,75448,25926],{"class":108},[91,75450,1235],{"class":101},[91,75452,17514],{"class":108},[91,75454,1235],{"class":101},[91,75456,25960],{"class":97},[91,75458,1366],{"class":566},[91,75460,2001],{"class":566},[91,75462,25921],{"class":101},[91,75464,75465,75467,75469,75471],{"class":93,"line":134},[91,75466,10068],{"class":566},[91,75468,2662],{"class":101},[91,75470,11782],{"class":108},[91,75472,25977],{"class":101},[91,75474,75475,75477,75479,75481,75483],{"class":93,"line":228},[91,75476,25982],{"class":108},[91,75478,25985],{"class":101},[91,75480,166],{"class":566},[91,75482,20228],{"class":108},[91,75484,118],{"class":101},[91,75486,75487],{"class":93,"line":250},[91,75488,3307],{"class":101},[91,75490,75491,75493,75495,75497,75499],{"class":93,"line":260},[91,75492,26000],{"class":566},[91,75494,19420],{"class":566},[91,75496,2662],{"class":101},[91,75498,11782],{"class":108},[91,75500,26009],{"class":101},[91,75502,75503,75505,75507,75509],{"class":93,"line":274},[91,75504,25982],{"class":108},[91,75506,1235],{"class":101},[91,75508,25847],{"class":97},[91,75510,2030],{"class":101},[91,75512,75513],{"class":93,"line":284},[91,75514,3307],{"class":101},[91,75516,75517,75519],{"class":93,"line":299},[91,75518,26000],{"class":566},[91,75520,102],{"class":101},[91,75522,75523,75525,75527,75529],{"class":93,"line":319},[91,75524,26034],{"class":97},[91,75526,795],{"class":101},[91,75528,11782],{"class":108},[91,75530,1594],{"class":101},[91,75532,75533],{"class":93,"line":334},[91,75534,3307],{"class":101},[91,75536,75537],{"class":93,"line":355},[91,75538,19566],{"class":101},[91,75540,75541],{"class":93,"line":364},[91,75542,26053],{"class":1343},[91,75544,75545,75547],{"class":93,"line":378},[91,75546,2695],{"class":566},[91,75548,26060],{"class":101},[91,75550,75551],{"class":93,"line":387},[91,75552,26065],{"class":101},[16,75554,26068,75555,26071,75557,26074,75559,26078,75561,26082,75563,26085],{},[31,75556,25804],{},[31,75558,25708],{},[31,75560,26077],{},[31,75562,26081],{},[31,75564,25847],{},[82,75566,75567],{"className":10952,"code":26088,"language":10954,"meta":87,"style":87},[31,75568,75569,75577,75587,75597,75603,75631,75655,75663,75669,75677,75681,75689,75699,75707,75729,75749,75761,75771,75775,75799,75807,75813,75817,75821,75825,75839,75853,75859,75865,75871],{"__ignoreMap":87},[91,75570,75571,75573,75575],{"class":93,"line":94},[91,75572,7471],{"class":566},[91,75574,26097],{"class":97},[91,75576,2007],{"class":101},[91,75578,75579,75581,75583,75585],{"class":93,"line":105},[91,75580,26104],{"class":101},[91,75582,166],{"class":566},[91,75584,26109],{"class":97},[91,75586,2030],{"class":101},[91,75588,75589,75591,75593,75595],{"class":93,"line":121},[91,75590,26116],{"class":101},[91,75592,166],{"class":566},[91,75594,20228],{"class":108},[91,75596,118],{"class":101},[91,75598,75599,75601],{"class":93,"line":134},[91,75600,26127],{"class":566},[91,75602,26130],{"class":101},[91,75604,75605,75607,75609,75611,75613,75615,75617,75619,75621,75623,75625,75627,75629],{"class":93,"line":228},[91,75606,26135],{"class":101},[91,75608,26138],{"class":97},[91,75610,795],{"class":101},[91,75612,7471],{"class":566},[91,75614,2662],{"class":101},[91,75616,4306],{"class":1172},[91,75618,64],{"class":101},[91,75620,26151],{"class":1172},[91,75622,19432],{"class":101},[91,75624,12966],{"class":566},[91,75626,26158],{"class":101},[91,75628,8409],{"class":566},[91,75630,26163],{"class":101},[91,75632,75633,75635,75637,75639,75641,75643,75645,75647,75649,75651,75653],{"class":93,"line":250},[91,75634,26168],{"class":566},[91,75636,26171],{"class":101},[91,75638,166],{"class":566},[91,75640,11817],{"class":108},[91,75642,26178],{"class":101},[91,75644,156],{"class":566},[91,75646,26183],{"class":101},[91,75648,11811],{"class":108},[91,75650,26188],{"class":101},[91,75652,17243],{"class":566},[91,75654,3866],{"class":101},[91,75656,75657,75659,75661],{"class":93,"line":260},[91,75658,26197],{"class":101},[91,75660,166],{"class":566},[91,75662,26202],{"class":101},[91,75664,75665,75667],{"class":93,"line":274},[91,75666,10068],{"class":566},[91,75668,26209],{"class":101},[91,75670,75671,75673,75675],{"class":93,"line":284},[91,75672,26214],{"class":101},[91,75674,26217],{"class":97},[91,75676,2030],{"class":101},[91,75678,75679],{"class":93,"line":299},[91,75680,3307],{"class":101},[91,75682,75683,75685,75687],{"class":93,"line":319},[91,75684,26228],{"class":101},[91,75686,166],{"class":566},[91,75688,26233],{"class":101},[91,75690,75691,75693,75695,75697],{"class":93,"line":334},[91,75692,26238],{"class":101},[91,75694,166],{"class":566},[91,75696,1363],{"class":108},[91,75698,118],{"class":101},[91,75700,75701,75703,75705],{"class":93,"line":355},[91,75702,26249],{"class":101},[91,75704,25847],{"class":97},[91,75706,2030],{"class":101},[91,75708,75709,75711,75713,75715,75717,75719,75721,75723,75725,75727],{"class":93,"line":364},[91,75710,10068],{"class":566},[91,75712,13329],{"class":101},[91,75714,13332],{"class":108},[91,75716,25317],{"class":566},[91,75718,13338],{"class":169},[91,75720,25541],{"class":566},[91,75722,26270],{"class":101},[91,75724,26273],{"class":566},[91,75726,1363],{"class":108},[91,75728,3866],{"class":101},[91,75730,75731,75733,75735,75737,75739,75741,75743,75745,75747],{"class":93,"line":378},[91,75732,26282],{"class":101},[91,75734,166],{"class":566},[91,75736,26287],{"class":101},[91,75738,7829],{"class":566},[91,75740,11817],{"class":108},[91,75742,1176],{"class":101},[91,75744,8406],{"class":566},[91,75746,6594],{"class":108},[91,75748,118],{"class":101},[91,75750,75751,75753,75755,75757,75759],{"class":93,"line":387},[91,75752,26304],{"class":566},[91,75754,26287],{"class":101},[91,75756,7959],{"class":566},[91,75758,26311],{"class":108},[91,75760,3866],{"class":101},[91,75762,75763,75765,75767,75769],{"class":93,"line":402},[91,75764,26318],{"class":97},[91,75766,795],{"class":101},[91,75768,26323],{"class":169},[91,75770,26326],{"class":566},[91,75772,75773],{"class":93,"line":422},[91,75774,26331],{"class":101},[91,75776,75777,75779,75781,75783,75785,75787,75789,75791,75793,75795,75797],{"class":93,"line":438},[91,75778,26336],{"class":566},[91,75780,26339],{"class":169},[91,75782,26342],{"class":108},[91,75784,2139],{"class":169},[91,75786,1235],{"class":101},[91,75788,26349],{"class":97},[91,75790,26352],{"class":101},[91,75792,2139],{"class":169},[91,75794,26342],{"class":108},[91,75796,2139],{"class":169},[91,75798,3487],{"class":101},[91,75800,75801,75803,75805],{"class":93,"line":458},[91,75802,26365],{"class":566},[91,75804,26368],{"class":169},[91,75806,26371],{"class":101},[91,75808,75809,75811],{"class":93,"line":467},[91,75810,26376],{"class":566},[91,75812,118],{"class":101},[91,75814,75815],{"class":93,"line":481},[91,75816,26383],{"class":101},[91,75818,75819],{"class":93,"line":490},[91,75820,3307],{"class":101},[91,75822,75823],{"class":93,"line":3310},[91,75824,1693],{"class":101},[91,75826,75827,75829,75831,75833,75835,75837],{"class":93,"line":3315},[91,75828,26127],{"class":566},[91,75830,26398],{"class":101},[91,75832,166],{"class":566},[91,75834,26403],{"class":101},[91,75836,8026],{"class":97},[91,75838,2030],{"class":101},[91,75840,75841,75843,75845,75847,75849,75851],{"class":93,"line":3321},[91,75842,26127],{"class":566},[91,75844,26414],{"class":101},[91,75846,166],{"class":566},[91,75848,26183],{"class":101},[91,75850,8026],{"class":97},[91,75852,2030],{"class":101},[91,75854,75855,75857],{"class":93,"line":3327},[91,75856,26427],{"class":97},[91,75858,2030],{"class":101},[91,75860,75861,75863],{"class":93,"line":3333},[91,75862,26434],{"class":97},[91,75864,26437],{"class":101},[91,75866,75867,75869],{"class":93,"line":3338},[91,75868,26442],{"class":97},[91,75870,26445],{"class":101},[91,75872,75873],{"class":93,"line":3343},[91,75874,137],{"class":101},[16,75876,26452],{},[4530,75878,75879,75881,75883],{},[27,75880,26457],{},[27,75882,26460],{},[27,75884,26463],{},[16,75886,26466,75887,25799,75889,26471,75891,26475],{},[31,75888,26217],{},[31,75890,25847],{},[31,75892,26474],{},[16,75894,26478,75895,26482,75897,26486,75899,26490,75901,26494],{},[31,75896,26481],{},[31,75898,26485],{},[792,75900,26489],{},[31,75902,26493],{},[16,75904,26497,75905,26501,75907,26475],{},[31,75906,26500],{},[31,75908,25851],{},[82,75910,75911],{"className":10952,"code":26506,"language":10954,"meta":87,"style":87},[31,75912,75913,75931,75941,75957,75971,75975,75979,75983,75995,75999,76011,76021,76031,76063,76081,76085,76091,76105,76109,76113,76117],{"__ignoreMap":87},[91,75914,75915,75917,75919,75921,75923,75925,75927,75929],{"class":93,"line":94},[91,75916,25891],{"class":108},[91,75918,1235],{"class":101},[91,75920,17514],{"class":108},[91,75922,1235],{"class":101},[91,75924,25847],{"class":97},[91,75926,1366],{"class":566},[91,75928,2001],{"class":566},[91,75930,25921],{"class":101},[91,75932,75933,75935,75937,75939],{"class":93,"line":105},[91,75934,8218],{"class":566},[91,75936,2662],{"class":101},[91,75938,11782],{"class":108},[91,75940,26537],{"class":101},[91,75942,75943,75945,75947,75949,75951,75953,75955],{"class":93,"line":121},[91,75944,26127],{"class":566},[91,75946,25278],{"class":101},[91,75948,166],{"class":566},[91,75950,11795],{"class":108},[91,75952,1235],{"class":101},[91,75954,5938],{"class":97},[91,75956,2030],{"class":101},[91,75958,75959,75961,75963,75965,75967,75969],{"class":93,"line":134},[91,75960,8218],{"class":566},[91,75962,26560],{"class":101},[91,75964,9356],{"class":566},[91,75966,11795],{"class":108},[91,75968,26567],{"class":101},[91,75970,26570],{"class":566},[91,75972,75973],{"class":93,"line":228},[91,75974,26575],{"class":1343},[91,75976,75977],{"class":93,"line":250},[91,75978,26580],{"class":1343},[91,75980,75981],{"class":93,"line":260},[91,75982,26585],{"class":1343},[91,75984,75985,75987,75989,75991,75993],{"class":93,"line":274},[91,75986,26590],{"class":97},[91,75988,8369],{"class":101},[91,75990,7829],{"class":566},[91,75992,11795],{"class":108},[91,75994,26599],{"class":101},[91,75996,75997],{"class":93,"line":284},[91,75998,26604],{"class":1343},[91,76000,76001,76003,76005,76007,76009],{"class":93,"line":299},[91,76002,25275],{"class":566},[91,76004,26611],{"class":101},[91,76006,166],{"class":566},[91,76008,11795],{"class":108},[91,76010,26618],{"class":101},[91,76012,76013,76015,76017,76019],{"class":93,"line":319},[91,76014,12019],{"class":108},[91,76016,26567],{"class":101},[91,76018,166],{"class":566},[91,76020,8384],{"class":101},[91,76022,76023,76025,76027,76029],{"class":93,"line":334},[91,76024,13326],{"class":566},[91,76026,2662],{"class":101},[91,76028,11782],{"class":108},[91,76030,26639],{"class":101},[91,76032,76033,76035,76037,76039,76041,76043,76045,76047,76049,76051,76053,76055,76057,76059,76061],{"class":93,"line":355},[91,76034,26644],{"class":566},[91,76036,26647],{"class":101},[91,76038,166],{"class":566},[91,76040,26652],{"class":169},[91,76042,26342],{"class":108},[91,76044,2139],{"class":169},[91,76046,1235],{"class":101},[91,76048,26349],{"class":97},[91,76050,795],{"class":101},[91,76052,11782],{"class":108},[91,76054,26667],{"class":101},[91,76056,2139],{"class":169},[91,76058,26342],{"class":108},[91,76060,2139],{"class":169},[91,76062,1594],{"class":101},[91,76064,76065,76067,76069,76071,76073,76075,76077,76079],{"class":93,"line":364},[91,76066,26680],{"class":97},[91,76068,795],{"class":101},[91,76070,11782],{"class":108},[91,76072,26687],{"class":101},[91,76074,11782],{"class":108},[91,76076,26692],{"class":101},[91,76078,11782],{"class":108},[91,76080,26697],{"class":101},[91,76082,76083],{"class":93,"line":378},[91,76084,10095],{"class":101},[91,76086,76087,76089],{"class":93,"line":387},[91,76088,25581],{"class":566},[91,76090,102],{"class":101},[91,76092,76093,76095,76097,76099,76101,76103],{"class":93,"line":402},[91,76094,26712],{"class":108},[91,76096,26715],{"class":101},[91,76098,17399],{"class":97},[91,76100,795],{"class":101},[91,76102,11782],{"class":108},[91,76104,26724],{"class":101},[91,76106,76107],{"class":93,"line":422},[91,76108,10095],{"class":101},[91,76110,76111],{"class":93,"line":438},[91,76112,1693],{"class":101},[91,76114,76115],{"class":93,"line":458},[91,76116,1693],{"class":101},[91,76118,76119],{"class":93,"line":467},[91,76120,20036],{"class":101},[16,76122,26743,76123,26746,76125,26749],{},[31,76124,25847],{},[31,76126,25847],{},[16,76128,26752,76129,26756,76131,26759],{},[31,76130,26755],{},[31,76132,5938],{},[82,76134,76135],{"className":10952,"code":26762,"language":10954,"meta":87,"style":87},[31,76136,76137,76155,76165,76171,76183,76189,76203,76207,76213,76223,76253,76257,76263,76269,76273,76277,76283,76287,76291,76301,76307,76311,76317,76327,76331,76337],{"__ignoreMap":87},[91,76138,76139,76141,76143,76145,76147,76149,76151,76153],{"class":93,"line":94},[91,76140,25891],{"class":108},[91,76142,1235],{"class":101},[91,76144,17514],{"class":108},[91,76146,1235],{"class":101},[91,76148,5938],{"class":97},[91,76150,1366],{"class":566},[91,76152,2001],{"class":566},[91,76154,25921],{"class":101},[91,76156,76157,76159,76161,76163],{"class":93,"line":105},[91,76158,26787],{"class":97},[91,76160,795],{"class":101},[91,76162,11782],{"class":108},[91,76164,1594],{"class":101},[91,76166,76167,76169],{"class":93,"line":121},[91,76168,26798],{"class":566},[91,76170,8384],{"class":101},[91,76172,76173,76175,76177,76179,76181],{"class":93,"line":134},[91,76174,26798],{"class":566},[91,76176,26807],{"class":101},[91,76178,166],{"class":566},[91,76180,11795],{"class":108},[91,76182,26814],{"class":101},[91,76184,76185,76187],{"class":93,"line":228},[91,76186,2012],{"class":566},[91,76188,102],{"class":101},[91,76190,76191,76193,76195,76197,76199,76201],{"class":93,"line":250},[91,76192,26825],{"class":101},[91,76194,166],{"class":566},[91,76196,11795],{"class":108},[91,76198,26832],{"class":101},[91,76200,17399],{"class":97},[91,76202,26837],{"class":101},[91,76204,76205],{"class":93,"line":260},[91,76206,1698],{"class":101},[91,76208,76209,76211],{"class":93,"line":274},[91,76210,26846],{"class":566},[91,76212,26849],{"class":101},[91,76214,76215,76217,76219,76221],{"class":93,"line":284},[91,76216,8218],{"class":566},[91,76218,2662],{"class":101},[91,76220,11782],{"class":108},[91,76222,26639],{"class":101},[91,76224,76225,76227,76229,76231,76233,76235,76237,76239,76241,76243,76245,76247,76249,76251],{"class":93,"line":299},[91,76226,26864],{"class":97},[91,76228,26867],{"class":101},[91,76230,26870],{"class":169},[91,76232,26342],{"class":108},[91,76234,2139],{"class":169},[91,76236,1235],{"class":101},[91,76238,26349],{"class":97},[91,76240,795],{"class":101},[91,76242,11782],{"class":108},[91,76244,26667],{"class":101},[91,76246,2139],{"class":169},[91,76248,26342],{"class":108},[91,76250,2139],{"class":169},[91,76252,6568],{"class":101},[91,76254,76255],{"class":93,"line":319},[91,76256,1693],{"class":101},[91,76258,76259,76261],{"class":93,"line":334},[91,76260,11838],{"class":566},[91,76262,102],{"class":101},[91,76264,76265,76267],{"class":93,"line":355},[91,76266,8230],{"class":566},[91,76268,26909],{"class":101},[91,76270,76271],{"class":93,"line":364},[91,76272,1693],{"class":101},[91,76274,76275],{"class":93,"line":378},[91,76276,1698],{"class":101},[91,76278,76279,76281],{"class":93,"line":387},[91,76280,26922],{"class":566},[91,76282,102],{"class":101},[91,76284,76285],{"class":93,"line":402},[91,76286,26929],{"class":1343},[91,76288,76289],{"class":93,"line":422},[91,76290,26934],{"class":1343},[91,76292,76293,76295,76297,76299],{"class":93,"line":438},[91,76294,8218],{"class":566},[91,76296,2662],{"class":101},[91,76298,11782],{"class":108},[91,76300,26599],{"class":101},[91,76302,76303,76305],{"class":93,"line":458},[91,76304,26949],{"class":97},[91,76306,17413],{"class":101},[91,76308,76309],{"class":93,"line":467},[91,76310,1693],{"class":101},[91,76312,76313,76315],{"class":93,"line":481},[91,76314,26960],{"class":97},[91,76316,2030],{"class":101},[91,76318,76319,76321,76323,76325],{"class":93,"line":490},[91,76320,11922],{"class":108},[91,76322,1235],{"class":101},[91,76324,26971],{"class":97},[91,76326,2030],{"class":101},[91,76328,76329],{"class":93,"line":3310},[91,76330,1698],{"class":101},[91,76332,76333,76335],{"class":93,"line":3315},[91,76334,2695],{"class":566},[91,76336,8384],{"class":101},[91,76338,76339],{"class":93,"line":3321},[91,76340,20036],{"class":101},[16,76342,26990,76343,26994,76345,26997],{},[31,76344,26993],{},[31,76346,25203],{},[82,76348,76349],{"className":10952,"code":27000,"language":10954,"meta":87,"style":87},[31,76350,76351,76371,76379,76389,76397,76401,76411,76417,76437,76447,76457,76467,76483,76499,76505,76521,76527,76545,76551,76559,76565,76583,76587,76591,76597,76607,76619,76623,76627,76637,76647,76659,76669,76673,76677,76681,76695,76721,76747,76751,76755,76759,76763,76777,76787,76791,76801,76807,76835,76843,76847,76851,76863,76873,76883,76887,76893],{"__ignoreMap":87},[91,76352,76353,76355,76357,76359,76361,76363,76365,76367,76369],{"class":93,"line":94},[91,76354,7471],{"class":566},[91,76356,27009],{"class":97},[91,76358,795],{"class":101},[91,76360,27014],{"class":1172},[91,76362,64],{"class":101},[91,76364,27019],{"class":1172},[91,76366,64],{"class":101},[91,76368,27024],{"class":1172},[91,76370,3866],{"class":101},[91,76372,76373,76375,76377],{"class":93,"line":105},[91,76374,27031],{"class":101},[91,76376,166],{"class":566},[91,76378,27036],{"class":101},[91,76380,76381,76383,76385,76387],{"class":93,"line":121},[91,76382,2439],{"class":566},[91,76384,2662],{"class":101},[91,76386,2665],{"class":566},[91,76388,27047],{"class":101},[91,76390,76391,76393,76395],{"class":93,"line":134},[91,76392,27052],{"class":101},[91,76394,166],{"class":566},[91,76396,27057],{"class":101},[91,76398,76399],{"class":93,"line":228},[91,76400,1698],{"class":101},[91,76402,76403,76405,76407,76409],{"class":93,"line":250},[91,76404,27066],{"class":97},[91,76406,27069],{"class":101},[91,76408,27072],{"class":169},[91,76410,1594],{"class":101},[91,76412,76413,76415],{"class":93,"line":260},[91,76414,26798],{"class":566},[91,76416,27081],{"class":101},[91,76418,76419,76421,76423,76425,76427,76429,76431,76433,76435],{"class":93,"line":274},[91,76420,2439],{"class":566},[91,76422,13329],{"class":101},[91,76424,13332],{"class":108},[91,76426,25317],{"class":566},[91,76428,13338],{"class":169},[91,76430,25541],{"class":566},[91,76432,27098],{"class":101},[91,76434,5232],{"class":566},[91,76436,27103],{"class":101},[91,76438,76439,76441,76443,76445],{"class":93,"line":284},[91,76440,27108],{"class":97},[91,76442,1366],{"class":566},[91,76444,2001],{"class":566},[91,76446,25921],{"class":101},[91,76448,76449,76451,76453,76455],{"class":93,"line":299},[91,76450,25275],{"class":566},[91,76452,27121],{"class":101},[91,76454,166],{"class":566},[91,76456,27126],{"class":101},[91,76458,76459,76461,76463,76465],{"class":93,"line":319},[91,76460,25275],{"class":566},[91,76462,27133],{"class":101},[91,76464,166],{"class":566},[91,76466,27138],{"class":101},[91,76468,76469,76471,76473,76475,76477,76479,76481],{"class":93,"line":334},[91,76470,25275],{"class":566},[91,76472,27145],{"class":101},[91,76474,166],{"class":566},[91,76476,27150],{"class":169},[91,76478,1235],{"class":101},[91,76480,26349],{"class":97},[91,76482,27157],{"class":101},[91,76484,76485,76487,76489,76491,76493,76495,76497],{"class":93,"line":355},[91,76486,25275],{"class":566},[91,76488,27164],{"class":101},[91,76490,166],{"class":566},[91,76492,27169],{"class":169},[91,76494,1235],{"class":101},[91,76496,26349],{"class":97},[91,76498,27157],{"class":101},[91,76500,76501,76503],{"class":93,"line":364},[91,76502,27180],{"class":97},[91,76504,27183],{"class":101},[91,76506,76507,76509,76511,76513,76515,76517,76519],{"class":93,"line":378},[91,76508,27188],{"class":566},[91,76510,27191],{"class":101},[91,76512,166],{"class":566},[91,76514,27196],{"class":101},[91,76516,27199],{"class":97},[91,76518,27202],{"class":101},[91,76520,12474],{"class":566},[91,76522,76523,76525],{"class":93,"line":387},[91,76524,27180],{"class":97},[91,76526,27211],{"class":101},[91,76528,76529,76531,76533,76535,76537,76539,76541,76543],{"class":93,"line":402},[91,76530,27216],{"class":97},[91,76532,795],{"class":101},[91,76534,27221],{"class":169},[91,76536,1235],{"class":101},[91,76538,26349],{"class":97},[91,76540,27228],{"class":101},[91,76542,27231],{"class":169},[91,76544,27234],{"class":101},[91,76546,76547,76549],{"class":93,"line":422},[91,76548,27180],{"class":97},[91,76550,27183],{"class":101},[91,76552,76553,76555,76557],{"class":93,"line":438},[91,76554,27245],{"class":101},[91,76556,27248],{"class":97},[91,76558,27251],{"class":101},[91,76560,76561,76563],{"class":93,"line":458},[91,76562,27180],{"class":97},[91,76564,27211],{"class":101},[91,76566,76567,76569,76571,76573,76575,76577,76579,76581],{"class":93,"line":467},[91,76568,27216],{"class":97},[91,76570,795],{"class":101},[91,76572,27221],{"class":169},[91,76574,1235],{"class":101},[91,76576,26349],{"class":97},[91,76578,27228],{"class":101},[91,76580,27274],{"class":169},[91,76582,27234],{"class":101},[91,76584,76585],{"class":93,"line":481},[91,76586,19566],{"class":101},[91,76588,76589],{"class":93,"line":490},[91,76590,1698],{"class":101},[91,76592,76593,76595],{"class":93,"line":3310},[91,76594,27289],{"class":566},[91,76596,102],{"class":101},[91,76598,76599,76601,76603,76605],{"class":93,"line":3315},[91,76600,27108],{"class":97},[91,76602,1366],{"class":566},[91,76604,2001],{"class":566},[91,76606,25921],{"class":101},[91,76608,76609,76611,76613,76615,76617],{"class":93,"line":3321},[91,76610,27245],{"class":101},[91,76612,27248],{"class":97},[91,76614,27310],{"class":101},[91,76616,27199],{"class":97},[91,76618,27315],{"class":101},[91,76620,76621],{"class":93,"line":3327},[91,76622,19566],{"class":101},[91,76624,76625],{"class":93,"line":3333},[91,76626,1698],{"class":101},[91,76628,76629,76631,76633,76635],{"class":93,"line":3338},[91,76630,26798],{"class":566},[91,76632,27330],{"class":101},[91,76634,166],{"class":566},[91,76636,102],{"class":101},[91,76638,76639,76641,76643,76645],{"class":93,"line":3343},[91,76640,27339],{"class":97},[91,76642,112],{"class":101},[91,76644,7471],{"class":566},[91,76646,25921],{"class":101},[91,76648,76649,76651,76653,76655,76657],{"class":93,"line":7882},[91,76650,13326],{"class":566},[91,76652,27352],{"class":101},[91,76654,5232],{"class":566},[91,76656,7832],{"class":566},[91,76658,27359],{"class":101},[91,76660,76661,76663,76665,76667],{"class":93,"line":7887},[91,76662,27364],{"class":97},[91,76664,27069],{"class":101},[91,76666,27369],{"class":169},[91,76668,1594],{"class":101},[91,76670,76671],{"class":93,"line":7892},[91,76672,10095],{"class":101},[91,76674,76675],{"class":93,"line":7906},[91,76676,1693],{"class":101},[91,76678,76679],{"class":93,"line":7922},[91,76680,8083],{"class":101},[91,76682,76683,76685,76687,76689,76691,76693],{"class":93,"line":7927},[91,76684,2439],{"class":566},[91,76686,13329],{"class":101},[91,76688,13332],{"class":108},[91,76690,25317],{"class":566},[91,76692,13338],{"class":169},[91,76694,3866],{"class":101},[91,76696,76697,76699,76701,76703,76705,76707,76709,76711,76713,76715,76717,76719],{"class":93,"line":7967},[91,76698,27402],{"class":101},[91,76700,27405],{"class":97},[91,76702,1366],{"class":566},[91,76704,2001],{"class":566},[91,76706,2662],{"class":101},[91,76708,7658],{"class":1172},[91,76710,19432],{"class":101},[91,76712,12966],{"class":566},[91,76714,27420],{"class":97},[91,76716,27069],{"class":101},[91,76718,27425],{"class":169},[91,76720,27428],{"class":101},[91,76722,76723,76725,76727,76729,76731,76733,76735,76737,76739,76741,76743,76745],{"class":93,"line":7983},[91,76724,27402],{"class":101},[91,76726,27435],{"class":97},[91,76728,1366],{"class":566},[91,76730,2001],{"class":566},[91,76732,2662],{"class":101},[91,76734,7658],{"class":1172},[91,76736,19432],{"class":101},[91,76738,12966],{"class":566},[91,76740,27420],{"class":97},[91,76742,27069],{"class":101},[91,76744,27454],{"class":169},[91,76746,27428],{"class":101},[91,76748,76749],{"class":93,"line":7988},[91,76750,1698],{"class":101},[91,76752,76753],{"class":93,"line":7993},[91,76754,27465],{"class":1343},[91,76756,76757],{"class":93,"line":8000},[91,76758,27470],{"class":1343},[91,76760,76761],{"class":93,"line":8040},[91,76762,27475],{"class":1343},[91,76764,76765,76767,76769,76771,76773,76775],{"class":93,"line":8046},[91,76766,13197],{"class":566},[91,76768,27482],{"class":97},[91,76770,27485],{"class":101},[91,76772,7557],{"class":108},[91,76774,27490],{"class":1343},[91,76776,1594],{"class":101},[91,76778,76779,76781,76783,76785],{"class":93,"line":8080},[91,76780,27497],{"class":101},[91,76782,166],{"class":566},[91,76784,20253],{"class":108},[91,76786,118],{"class":101},[91,76788,76789],{"class":93,"line":8086},[91,76790,27508],{"class":1343},[91,76792,76793,76795,76797,76799],{"class":93,"line":12052},[91,76794,26798],{"class":566},[91,76796,27515],{"class":101},[91,76798,166],{"class":566},[91,76800,27520],{"class":101},[91,76802,76803,76805],{"class":93,"line":12070},[91,76804,2439],{"class":566},[91,76806,27527],{"class":101},[91,76808,76809,76811,76813,76815,76817,76819,76821,76823,76825,76827,76829,76831,76833],{"class":93,"line":12087},[91,76810,26168],{"class":566},[91,76812,2662],{"class":101},[91,76814,5626],{"class":566},[91,76816,17223],{"class":101},[91,76818,166],{"class":566},[91,76820,11817],{"class":108},[91,76822,17230],{"class":101},[91,76824,156],{"class":566},[91,76826,27548],{"class":101},[91,76828,11811],{"class":108},[91,76830,17240],{"class":101},[91,76832,17243],{"class":566},[91,76834,3866],{"class":101},[91,76836,76837,76839,76841],{"class":93,"line":12092},[91,76838,27561],{"class":101},[91,76840,25847],{"class":97},[91,76842,2030],{"class":101},[91,76844,76845],{"class":93,"line":12097},[91,76846,1693],{"class":101},[91,76848,76849],{"class":93,"line":12102},[91,76850,1698],{"class":101},[91,76852,76853,76855,76857,76859,76861],{"class":93,"line":25726},[91,76854,2439],{"class":566},[91,76856,27580],{"class":101},[91,76858,11788],{"class":566},[91,76860,1363],{"class":108},[91,76862,3866],{"class":101},[91,76864,76865,76867,76869,76871],{"class":93,"line":25732},[91,76866,27591],{"class":101},[91,76868,166],{"class":566},[91,76870,20228],{"class":108},[91,76872,118],{"class":101},[91,76874,76875,76877,76879,76881],{"class":93,"line":25738},[91,76876,27602],{"class":97},[91,76878,27069],{"class":101},[91,76880,27607],{"class":169},[91,76882,1594],{"class":101},[91,76884,76885],{"class":93,"line":25744},[91,76886,1698],{"class":101},[91,76888,76889,76891],{"class":93,"line":25750},[91,76890,2695],{"class":566},[91,76892,27620],{"class":101},[91,76894,76895],{"class":93,"line":25756},[91,76896,137],{"class":101},[16,76898,76899,27630],{},[31,76900,27629],{},[4530,76902,76903,76905,76907,76913],{},[27,76904,27635],{},[27,76906,27638],{},[27,76908,76909,27644,76911,27648],{},[31,76910,27643],{},[31,76912,27647],{},[27,76914,27651],{},[16,76916,27654,76917,27657,76919,27660,76921,27663],{},[31,76918,25203],{},[31,76920,27643],{},[31,76922,25203],{},[82,76924,76925],{"className":10952,"code":27666,"language":10954,"meta":87,"style":87},[31,76926,76927],{"__ignoreMap":87},[91,76928,76929,76931,76933,76935,76937],{"class":93,"line":94},[91,76930,27673],{"class":101},[91,76932,166],{"class":566},[91,76934,27678],{"class":101},[91,76936,17399],{"class":97},[91,76938,27683],{"class":101},[16,76940,27686],{},[16,76942,27689,76943,27693,76945,27696],{},[31,76944,27692],{},[31,76946,27647],{},[82,76948,76949],{"className":11559,"code":27699,"language":11561,"meta":87,"style":87},[31,76950,76951,76977,76989,76999,77009,77021,77029,77033,77043,77047,77063,77071,77075,77087,77091,77097,77103,77113,77117,77123,77131,77135,77153,77161,77165],{"__ignoreMap":87},[91,76952,76953,76955,76957,76959,76961,76963,76965,76967,76969,76971,76973,76975],{"class":93,"line":94},[91,76954,15042],{"class":108},[91,76956,1235],{"class":101},[91,76958,17514],{"class":108},[91,76960,1235],{"class":101},[91,76962,27248],{"class":97},[91,76964,1366],{"class":566},[91,76966,2001],{"class":566},[91,76968,2662],{"class":101},[91,76970,27692],{"class":1172},[91,76972,64],{"class":101},[91,76974,27024],{"class":1172},[91,76976,3866],{"class":101},[91,76978,76979,76981,76983,76985,76987],{"class":93,"line":105},[91,76980,26127],{"class":566},[91,76982,26807],{"class":101},[91,76984,166],{"class":566},[91,76986,11795],{"class":108},[91,76988,118],{"class":101},[91,76990,76991,76993,76995,76997],{"class":93,"line":121},[91,76992,26127],{"class":566},[91,76994,27746],{"class":101},[91,76996,166],{"class":566},[91,76998,27751],{"class":101},[91,77000,77001,77003,77005,77007],{"class":93,"line":134},[91,77002,26127],{"class":566},[91,77004,27758],{"class":101},[91,77006,166],{"class":566},[91,77008,27763],{"class":101},[91,77010,77011,77013,77015,77017,77019],{"class":93,"line":228},[91,77012,26127],{"class":566},[91,77014,27770],{"class":101},[91,77016,166],{"class":566},[91,77018,27775],{"class":97},[91,77020,27778],{"class":101},[91,77022,77023,77025,77027],{"class":93,"line":250},[91,77024,27783],{"class":101},[91,77026,166],{"class":566},[91,77028,27788],{"class":101},[91,77030,77031],{"class":93,"line":260},[91,77032,1450],{"emptyLinePlaceholder":846},[91,77034,77035,77037,77039,77041],{"class":93,"line":274},[91,77036,8218],{"class":566},[91,77038,2662],{"class":101},[91,77040,2665],{"class":566},[91,77042,27803],{"class":101},[91,77044,77045],{"class":93,"line":284},[91,77046,27808],{"class":1343},[91,77048,77049,77051,77053,77055,77057,77059,77061],{"class":93,"line":299},[91,77050,27813],{"class":101},[91,77052,166],{"class":566},[91,77054,27196],{"class":101},[91,77056,27820],{"class":97},[91,77058,27823],{"class":101},[91,77060,7780],{"class":108},[91,77062,1594],{"class":101},[91,77064,77065,77067,77069],{"class":93,"line":319},[91,77066,12893],{"class":101},[91,77068,5258],{"class":566},[91,77070,102],{"class":101},[91,77072,77073],{"class":93,"line":334},[91,77074,27840],{"class":1343},[91,77076,77077,77079,77081,77083,77085],{"class":93,"line":355},[91,77078,27813],{"class":101},[91,77080,166],{"class":566},[91,77082,27196],{"class":101},[91,77084,27820],{"class":97},[91,77086,27853],{"class":101},[91,77088,77089],{"class":93,"line":364},[91,77090,1693],{"class":101},[91,77092,77093,77095],{"class":93,"line":378},[91,77094,27862],{"class":97},[91,77096,2030],{"class":101},[91,77098,77099,77101],{"class":93,"line":387},[91,77100,8218],{"class":566},[91,77102,27871],{"class":101},[91,77104,77105,77107,77109,77111],{"class":93,"line":402},[91,77106,27876],{"class":101},[91,77108,166],{"class":566},[91,77110,1363],{"class":108},[91,77112,118],{"class":101},[91,77114,77115],{"class":93,"line":422},[91,77116,1693],{"class":101},[91,77118,77119,77121],{"class":93,"line":438},[91,77120,8218],{"class":566},[91,77122,27893],{"class":101},[91,77124,77125,77127,77129],{"class":93,"line":458},[91,77126,27898],{"class":101},[91,77128,166],{"class":566},[91,77130,27620],{"class":101},[91,77132,77133],{"class":93,"line":467},[91,77134,1693],{"class":101},[91,77136,77137,77139,77141,77143,77145,77147,77149,77151],{"class":93,"line":481},[91,77138,8218],{"class":566},[91,77140,27580],{"class":101},[91,77142,5232],{"class":566},[91,77144,27917],{"class":101},[91,77146,5232],{"class":566},[91,77148,27922],{"class":101},[91,77150,9382],{"class":566},[91,77152,27927],{"class":101},[91,77154,77155,77157,77159],{"class":93,"line":490},[91,77156,27932],{"class":101},[91,77158,166],{"class":566},[91,77160,27751],{"class":101},[91,77162,77163],{"class":93,"line":3310},[91,77164,1693],{"class":101},[91,77166,77167],{"class":93,"line":3315},[91,77168,8083],{"class":101},[16,77170,77171,27950,77173,27954],{},[31,77172,27949],{},[31,77174,27953],{},[49,77176,27958],{"id":27957},[16,77178,27961,77179,22871,77181,27966],{},[31,77180,25203],{},[31,77182,25206],{},[757,77184,27970],{"id":27969},[82,77186,77187],{"className":10952,"code":27973,"language":10954,"meta":87,"style":87},[31,77188,77189,77195,77203,77207,77211],{"__ignoreMap":87},[91,77190,77191,77193],{"class":93,"line":94},[91,77192,7901],{"class":97},[91,77194,8789],{"class":101},[91,77196,77197,77199,77201],{"class":93,"line":105},[91,77198,27986],{"class":97},[91,77200,112],{"class":101},[91,77202,27991],{"class":108},[91,77204,77205],{"class":93,"line":121},[91,77206,137],{"class":101},[91,77208,77209],{"class":93,"line":134},[91,77210,1450],{"emptyLinePlaceholder":846},[91,77212,77213,77215,77217,77219,77221],{"class":93,"line":228},[91,77214,11782],{"class":108},[91,77216,28006],{"class":101},[91,77218,166],{"class":566},[91,77220,16523],{"class":108},[91,77222,118],{"class":101},[16,77224,28015,77225,28019,77227,28023],{},[31,77226,28018],{},[31,77228,28022],{},[82,77230,77231],{"className":10952,"code":28026,"language":10954,"meta":87,"style":87},[31,77232,77233],{"__ignoreMap":87},[91,77234,77235,77237,77239,77241,77243,77245,77247,77249,77251,77253],{"class":93,"line":94},[91,77236,11782],{"class":108},[91,77238,1235],{"class":101},[91,77240,28037],{"class":97},[91,77242,795],{"class":101},[91,77244,11782],{"class":108},[91,77246,64],{"class":101},[91,77248,28046],{"class":169},[91,77250,64],{"class":101},[91,77252,591],{"class":108},[91,77254,1594],{"class":101},[16,77256,28055,77257,28058],{},[31,77258,28037],{},[757,77260,28062],{"id":28061},[16,77262,77263,14431,77265,28071,77267,28075,77269,28079,77271,28083],{},[31,77264,28067],{},[31,77266,28070],{},[31,77268,28074],{},[31,77270,28078],{},[31,77272,28082],{},[82,77274,77275],{"className":10952,"code":28086,"language":10954,"meta":87,"style":87},[31,77276,77277,77299],{"__ignoreMap":87},[91,77278,77279,77281,77283,77285,77287,77289,77291,77293,77295,77297],{"class":93,"line":94},[91,77280,17283],{"class":101},[91,77282,28095],{"class":97},[91,77284,795],{"class":101},[91,77286,11782],{"class":108},[91,77288,28102],{"class":101},[91,77290,1583],{"class":108},[91,77292,28107],{"class":101},[91,77294,591],{"class":108},[91,77296,21410],{"class":101},[91,77298,28114],{"class":1343},[91,77300,77301,77303,77305,77307,77309,77311,77313,77315,77317,77319,77321,77323],{"class":93,"line":105},[91,77302,11782],{"class":108},[91,77304,28121],{"class":101},[91,77306,166],{"class":566},[91,77308,28126],{"class":101},[91,77310,28095],{"class":97},[91,77312,28131],{"class":101},[91,77314,11782],{"class":108},[91,77316,28102],{"class":101},[91,77318,1583],{"class":108},[91,77320,28107],{"class":101},[91,77322,591],{"class":108},[91,77324,9590],{"class":101},[16,77326,28146],{},[757,77328,28150],{"id":28149},[16,77330,28153],{},[4530,77332,77333,77335],{},[27,77334,28158],{},[27,77336,28161],{},[82,77338,77339],{"className":10952,"code":28164,"language":10954,"meta":87,"style":87},[31,77340,77341,77355,77359,77375,77379,77383,77395],{"__ignoreMap":87},[91,77342,77343,77345,77347,77349,77351,77353],{"class":93,"line":94},[91,77344,5626],{"class":566},[91,77346,26807],{"class":101},[91,77348,166],{"class":566},[91,77350,2676],{"class":566},[91,77352,28179],{"class":97},[91,77354,7549],{"class":101},[91,77356,77357],{"class":93,"line":105},[91,77358,28186],{"class":101},[91,77360,77361,77363,77365,77367,77369,77371,77373],{"class":93,"line":121},[91,77362,28191],{"class":101},[91,77364,5033],{"class":169},[91,77366,64],{"class":101},[91,77368,28198],{"class":169},[91,77370,64],{"class":101},[91,77372,28203],{"class":169},[91,77374,11460],{"class":101},[91,77376,77377],{"class":93,"line":134},[91,77378,1698],{"class":101},[91,77380,77381],{"class":93,"line":228},[91,77382,9444],{"class":101},[91,77384,77385,77387,77389,77391,77393],{"class":93,"line":250},[91,77386,28218],{"class":101},[91,77388,1583],{"class":108},[91,77390,28223],{"class":101},[91,77392,166],{"class":566},[91,77394,28228],{"class":169},[91,77396,77397,77399,77401,77403],{"class":93,"line":260},[91,77398,28233],{"class":101},[91,77400,11811],{"class":108},[91,77402,1366],{"class":566},[91,77404,28240],{"class":108},[16,77406,28243],{},[24,77408,77409,77411,77413,77415],{},[27,77410,28248],{},[27,77412,28251],{},[27,77414,28254],{},[27,77416,28257],{},[82,77418,77419],{"className":10952,"code":28260,"language":10954,"meta":87,"style":87},[31,77420,77421],{"__ignoreMap":87},[91,77422,77423,77425,77427,77429,77431,77433,77435,77437],{"class":93,"line":94},[91,77424,11782],{"class":108},[91,77426,1235],{"class":101},[91,77428,28037],{"class":97},[91,77430,795],{"class":101},[91,77432,11782],{"class":108},[91,77434,28277],{"class":101},[91,77436,1583],{"class":108},[91,77438,28282],{"class":101},[16,77440,28285,77441,28288],{},[31,77442,28037],{},[771,77444,28292],{"id":28291},[82,77446,77447],{"className":10952,"code":28295,"language":10954,"meta":87,"style":87},[31,77448,77449,77455,77467,77479,77491,77495,77499,77505,77527],{"__ignoreMap":87},[91,77450,77451,77453],{"class":93,"line":94},[91,77452,28302],{"class":97},[91,77454,10596],{"class":101},[91,77456,77457,77459,77461,77463,77465],{"class":93,"line":105},[91,77458,28309],{"class":101},[91,77460,1583],{"class":108},[91,77462,28314],{"class":101},[91,77464,28317],{"class":169},[91,77466,28320],{"class":101},[91,77468,77469,77471,77473,77475,77477],{"class":93,"line":121},[91,77470,28309],{"class":101},[91,77472,591],{"class":108},[91,77474,28314],{"class":101},[91,77476,28331],{"class":169},[91,77478,28320],{"class":101},[91,77480,77481,77483,77485,77487,77489],{"class":93,"line":134},[91,77482,28309],{"class":101},[91,77484,28340],{"class":108},[91,77486,28314],{"class":101},[91,77488,28345],{"class":169},[91,77490,28320],{"class":101},[91,77492,77493],{"class":93,"line":228},[91,77494,11460],{"class":101},[91,77496,77497],{"class":93,"line":250},[91,77498,1450],{"emptyLinePlaceholder":846},[91,77500,77501,77503],{"class":93,"line":260},[91,77502,28360],{"class":97},[91,77504,2007],{"class":101},[91,77506,77507,77509,77511,77513,77515,77517,77519,77521,77523,77525],{"class":93,"line":274},[91,77508,11922],{"class":108},[91,77510,28369],{"class":101},[91,77512,28340],{"class":108},[91,77514,28223],{"class":101},[91,77516,166],{"class":566},[91,77518,28378],{"class":101},[91,77520,28381],{"class":108},[91,77522,28314],{"class":101},[91,77524,28386],{"class":169},[91,77526,20036],{"class":101},[91,77528,77529],{"class":93,"line":284},[91,77530,137],{"class":101},[16,77532,28395],{},[82,77534,77535],{"className":10952,"code":28398,"language":10954,"meta":87,"style":87},[31,77536,77537],{"__ignoreMap":87},[91,77538,77539,77541,77543,77545,77547,77549,77551],{"class":93,"line":94},[91,77540,11782],{"class":108},[91,77542,28369],{"class":101},[91,77544,1583],{"class":108},[91,77546,28411],{"class":101},[91,77548,166],{"class":566},[91,77550,28416],{"class":169},[91,77552,118],{"class":101},[16,77554,28421],{},[16,77556,77557],{},[19,77558],{"alt":21,"src":28426},[16,77560,28429],{},[16,77562,77563],{},[19,77564],{"alt":21,"src":28434},[16,77566,28437],{},[16,77568,77569],{},[19,77570],{"alt":21,"src":28442},[16,77572,28445,77573,28448,77575,28452],{},[31,77574,28360],{},[31,77576,28451],{},[82,77578,77579],{"className":10952,"code":28455,"language":10954,"meta":87,"style":87},[31,77580,77581,77591,77601,77611,77615,77631,77651,77669],{"__ignoreMap":87},[91,77582,77583,77585,77587,77589],{"class":93,"line":94},[91,77584,1968],{"class":566},[91,77586,28464],{"class":108},[91,77588,1366],{"class":566},[91,77590,13130],{"class":101},[91,77592,77593,77595,77597,77599],{"class":93,"line":105},[91,77594,28473],{"class":169},[91,77596,112],{"class":101},[91,77598,1583],{"class":108},[91,77600,10624],{"class":101},[91,77602,77603,77605,77607,77609],{"class":93,"line":121},[91,77604,28484],{"class":169},[91,77606,112],{"class":101},[91,77608,28489],{"class":169},[91,77610,10624],{"class":101},[91,77612,77613],{"class":93,"line":134},[91,77614,20036],{"class":101},[91,77616,77617,77619,77621,77623,77625,77627,77629],{"class":93,"line":228},[91,77618,11782],{"class":108},[91,77620,28369],{"class":101},[91,77622,1583],{"class":108},[91,77624,28223],{"class":101},[91,77626,166],{"class":566},[91,77628,28510],{"class":101},[91,77630,28513],{"class":1343},[91,77632,77633,77635,77637,77639,77641,77643,77645,77647,77649],{"class":93,"line":250},[91,77634,11782],{"class":108},[91,77636,1235],{"class":101},[91,77638,28037],{"class":97},[91,77640,795],{"class":101},[91,77642,11782],{"class":108},[91,77644,28528],{"class":101},[91,77646,1583],{"class":108},[91,77648,28533],{"class":101},[91,77650,28536],{"class":1343},[91,77652,77653,77655,77657,77659,77661,77663,77665,77667],{"class":93,"line":260},[91,77654,11782],{"class":108},[91,77656,28369],{"class":101},[91,77658,1583],{"class":108},[91,77660,28411],{"class":101},[91,77662,166],{"class":566},[91,77664,28551],{"class":169},[91,77666,20231],{"class":101},[91,77668,28536],{"class":1343},[91,77670,77671,77673,77675,77677,77679,77681,77683,77685,77687,77689,77691,77693,77695],{"class":93,"line":274},[91,77672,11782],{"class":108},[91,77674,1235],{"class":101},[91,77676,28037],{"class":97},[91,77678,795],{"class":101},[91,77680,11782],{"class":108},[91,77682,28369],{"class":101},[91,77684,1583],{"class":108},[91,77686,22817],{"class":101},[91,77688,28576],{"class":169},[91,77690,64],{"class":101},[91,77692,28581],{"class":169},[91,77694,28584],{"class":101},[91,77696,28536],{"class":1343},[16,77698,28589],{},[771,77700,28593],{"id":28592},[82,77702,77703],{"className":10952,"code":28596,"language":10954,"meta":87,"style":87},[31,77704,77705,77711,77715,77727,77739,77743,77747,77759,77771,77775,77779,77783,77787,77793,77807,77819,77831,77835,77849,77861,77873,77877],{"__ignoreMap":87},[91,77706,77707,77709],{"class":93,"line":94},[91,77708,28603],{"class":97},[91,77710,10596],{"class":101},[91,77712,77713],{"class":93,"line":105},[91,77714,28610],{"class":101},[91,77716,77717,77719,77721,77723,77725],{"class":93,"line":121},[91,77718,28309],{"class":101},[91,77720,1583],{"class":108},[91,77722,28619],{"class":101},[91,77724,28622],{"class":169},[91,77726,15376],{"class":101},[91,77728,77729,77731,77733,77735,77737],{"class":93,"line":134},[91,77730,28309],{"class":101},[91,77732,591],{"class":108},[91,77734,28619],{"class":101},[91,77736,28622],{"class":169},[91,77738,15376],{"class":101},[91,77740,77741],{"class":93,"line":228},[91,77742,21926],{"class":101},[91,77744,77745],{"class":93,"line":250},[91,77746,28610],{"class":101},[91,77748,77749,77751,77753,77755,77757],{"class":93,"line":260},[91,77750,28309],{"class":101},[91,77752,1583],{"class":108},[91,77754,28619],{"class":101},[91,77756,28655],{"class":169},[91,77758,15376],{"class":101},[91,77760,77761,77763,77765,77767,77769],{"class":93,"line":274},[91,77762,28309],{"class":101},[91,77764,591],{"class":108},[91,77766,28619],{"class":101},[91,77768,28655],{"class":169},[91,77770,15376],{"class":101},[91,77772,77773],{"class":93,"line":284},[91,77774,21926],{"class":101},[91,77776,77777],{"class":93,"line":299},[91,77778,28678],{"class":101},[91,77780,77781],{"class":93,"line":319},[91,77782,11460],{"class":101},[91,77784,77785],{"class":93,"line":334},[91,77786,1450],{"emptyLinePlaceholder":846},[91,77788,77789,77791],{"class":93,"line":355},[91,77790,28360],{"class":97},[91,77792,2007],{"class":101},[91,77794,77795,77797,77799,77801,77803,77805],{"class":93,"line":364},[91,77796,11922],{"class":108},[91,77798,28699],{"class":101},[91,77800,591],{"class":108},[91,77802,28223],{"class":101},[91,77804,166],{"class":566},[91,77806,13192],{"class":101},[91,77808,77809,77811,77813,77815,77817],{"class":93,"line":378},[91,77810,28309],{"class":101},[91,77812,1583],{"class":108},[91,77814,28619],{"class":101},[91,77816,28718],{"class":169},[91,77818,15376],{"class":101},[91,77820,77821,77823,77825,77827,77829],{"class":93,"line":387},[91,77822,28309],{"class":101},[91,77824,591],{"class":108},[91,77826,28619],{"class":101},[91,77828,28718],{"class":169},[91,77830,15376],{"class":101},[91,77832,77833],{"class":93,"line":402},[91,77834,22495],{"class":101},[91,77836,77837,77839,77841,77843,77845,77847],{"class":93,"line":422},[91,77838,28741],{"class":108},[91,77840,28699],{"class":101},[91,77842,28340],{"class":108},[91,77844,28223],{"class":101},[91,77846,166],{"class":566},[91,77848,13192],{"class":101},[91,77850,77851,77853,77855,77857,77859],{"class":93,"line":438},[91,77852,28309],{"class":101},[91,77854,1583],{"class":108},[91,77856,28619],{"class":101},[91,77858,28762],{"class":169},[91,77860,15376],{"class":101},[91,77862,77863,77865,77867,77869,77871],{"class":93,"line":458},[91,77864,28309],{"class":101},[91,77866,591],{"class":108},[91,77868,28619],{"class":101},[91,77870,28762],{"class":169},[91,77872,15376],{"class":101},[91,77874,77875],{"class":93,"line":467},[91,77876,22495],{"class":101},[91,77878,77879],{"class":93,"line":481},[91,77880,137],{"class":101},[16,77882,28787],{},[82,77884,77885],{"className":10952,"code":28790,"language":10954,"meta":87,"style":87},[31,77886,77887,77897,77907,77917,77921,77941,77965,77987,78009],{"__ignoreMap":87},[91,77888,77889,77891,77893,77895],{"class":93,"line":94},[91,77890,1968],{"class":566},[91,77892,28464],{"class":108},[91,77894,1366],{"class":566},[91,77896,13130],{"class":101},[91,77898,77899,77901,77903,77905],{"class":93,"line":105},[91,77900,28473],{"class":169},[91,77902,112],{"class":101},[91,77904,1583],{"class":108},[91,77906,10624],{"class":101},[91,77908,77909,77911,77913,77915],{"class":93,"line":121},[91,77910,28484],{"class":169},[91,77912,112],{"class":101},[91,77914,28489],{"class":169},[91,77916,10624],{"class":101},[91,77918,77919],{"class":93,"line":134},[91,77920,20036],{"class":101},[91,77922,77923,77925,77927,77929,77931,77933,77935,77937,77939],{"class":93,"line":228},[91,77924,11782],{"class":108},[91,77926,28699],{"class":101},[91,77928,1583],{"class":108},[91,77930,28837],{"class":101},[91,77932,1583],{"class":108},[91,77934,28223],{"class":101},[91,77936,166],{"class":566},[91,77938,28846],{"class":101},[91,77940,28513],{"class":1343},[91,77942,77943,77945,77947,77949,77951,77953,77955,77957,77959,77961,77963],{"class":93,"line":250},[91,77944,11782],{"class":108},[91,77946,1235],{"class":101},[91,77948,28037],{"class":97},[91,77950,795],{"class":101},[91,77952,11782],{"class":108},[91,77954,28699],{"class":101},[91,77956,1583],{"class":108},[91,77958,22817],{"class":101},[91,77960,1583],{"class":108},[91,77962,28533],{"class":101},[91,77964,28536],{"class":1343},[91,77966,77967,77969,77971,77973,77975,77977,77979,77981,77983,77985],{"class":93,"line":260},[91,77968,11782],{"class":108},[91,77970,28699],{"class":101},[91,77972,1578],{"class":108},[91,77974,28837],{"class":101},[91,77976,1578],{"class":108},[91,77978,28887],{"class":101},[91,77980,166],{"class":566},[91,77982,28551],{"class":169},[91,77984,20231],{"class":101},[91,77986,28536],{"class":1343},[91,77988,77989,77991,77993,77995,77997,77999,78001,78003,78005,78007],{"class":93,"line":274},[91,77990,11782],{"class":108},[91,77992,28699],{"class":101},[91,77994,591],{"class":108},[91,77996,28837],{"class":101},[91,77998,1578],{"class":108},[91,78000,28887],{"class":101},[91,78002,166],{"class":566},[91,78004,28914],{"class":169},[91,78006,20231],{"class":101},[91,78008,28513],{"class":1343},[91,78010,78011,78013,78015,78017,78019,78021,78023,78025,78027,78029,78031,78033,78035,78037,78039],{"class":93,"line":284},[91,78012,11782],{"class":108},[91,78014,1235],{"class":101},[91,78016,28037],{"class":97},[91,78018,795],{"class":101},[91,78020,11782],{"class":108},[91,78022,28699],{"class":101},[91,78024,28340],{"class":108},[91,78026,28837],{"class":101},[91,78028,1583],{"class":108},[91,78030,22817],{"class":101},[91,78032,28576],{"class":169},[91,78034,64],{"class":101},[91,78036,28581],{"class":169},[91,78038,28584],{"class":101},[91,78040,28513],{"class":1343},[16,78042,28953],{},[16,78044,28956,78045,28959],{},[31,78046,13348],{},[16,78048,28962,78049,28965],{},[31,78050,28037],{},[16,78052,28968,78053,28971],{},[31,78054,13348],{},[82,78056,78057],{"className":10952,"code":28974,"language":10954,"meta":87,"style":87},[31,78058,78059,78077,78089,78101,78105,78123,78135,78147],{"__ignoreMap":87},[91,78060,78061,78063,78065,78067,78069,78071,78073,78075],{"class":93,"line":94},[91,78062,11782],{"class":108},[91,78064,28699],{"class":101},[91,78066,591],{"class":108},[91,78068,28987],{"class":101},[91,78070,13348],{"class":97},[91,78072,795],{"class":101},[91,78074,1442],{"class":566},[91,78076,11369],{"class":101},[91,78078,78079,78081,78083,78085,78087],{"class":93,"line":105},[91,78080,29000],{"class":101},[91,78082,1583],{"class":108},[91,78084,28619],{"class":101},[91,78086,28718],{"class":169},[91,78088,15376],{"class":101},[91,78090,78091,78093,78095,78097,78099],{"class":93,"line":121},[91,78092,29000],{"class":101},[91,78094,591],{"class":108},[91,78096,28619],{"class":101},[91,78098,28718],{"class":169},[91,78100,15376],{"class":101},[91,78102,78103],{"class":93,"line":134},[91,78104,29025],{"class":101},[91,78106,78107,78109,78111,78113,78115,78117,78119,78121],{"class":93,"line":228},[91,78108,11782],{"class":108},[91,78110,29032],{"class":101},[91,78112,29035],{"class":97},[91,78114,795],{"class":101},[91,78116,591],{"class":108},[91,78118,64],{"class":101},[91,78120,1583],{"class":108},[91,78122,29046],{"class":101},[91,78124,78125,78127,78129,78131,78133],{"class":93,"line":250},[91,78126,29000],{"class":101},[91,78128,1583],{"class":108},[91,78130,28619],{"class":101},[91,78132,28718],{"class":169},[91,78134,15376],{"class":101},[91,78136,78137,78139,78141,78143,78145],{"class":93,"line":260},[91,78138,29000],{"class":101},[91,78140,591],{"class":108},[91,78142,28619],{"class":101},[91,78144,28718],{"class":169},[91,78146,15376],{"class":101},[91,78148,78149],{"class":93,"line":274},[91,78150,19380],{"class":101},[24,78152,78153,78155],{},[27,78154,29079],{},[27,78156,78157,29084],{},[31,78158,29035],{},[16,78160,29087],{},[757,78162,29091],{"id":29090},[16,78164,29094,78165,29098],{},[792,78166,29097],{},[82,78168,78169],{"className":11559,"code":29101,"language":11561,"meta":87,"style":87},[31,78170,78171,78181,78187,78197,78201,78207,78217,78229,78243,78257,78271,78275,78279],{"__ignoreMap":87},[91,78172,78173,78175,78177,78179],{"class":93,"line":94},[91,78174,2118],{"class":97},[91,78176,112],{"class":101},[91,78178,29112],{"class":169},[91,78180,7560],{"class":101},[91,78182,78183,78185],{"class":93,"line":105},[91,78184,29119],{"class":97},[91,78186,8789],{"class":101},[91,78188,78189,78191,78193,78195],{"class":93,"line":121},[91,78190,29126],{"class":97},[91,78192,112],{"class":101},[91,78194,29131],{"class":169},[91,78196,7560],{"class":101},[91,78198,78199],{"class":93,"line":134},[91,78200,137],{"class":101},[91,78202,78203,78205],{"class":93,"line":228},[91,78204,29142],{"class":97},[91,78206,8789],{"class":101},[91,78208,78209,78211,78213,78215],{"class":93,"line":250},[91,78210,29149],{"class":97},[91,78212,24747],{"class":101},[91,78214,1179],{"class":566},[91,78216,102],{"class":101},[91,78218,78219,78221,78223,78225,78227],{"class":93,"line":260},[91,78220,26712],{"class":108},[91,78222,29162],{"class":101},[91,78224,166],{"class":566},[91,78226,29167],{"class":169},[91,78228,118],{"class":101},[91,78230,78231,78233,78235,78237,78239,78241],{"class":93,"line":274},[91,78232,2454],{"class":101},[91,78234,1225],{"class":97},[91,78236,795],{"class":101},[91,78238,11782],{"class":108},[91,78240,29182],{"class":101},[91,78242,29185],{"class":1343},[91,78244,78245,78247,78249,78251,78253,78255],{"class":93,"line":284},[91,78246,11922],{"class":108},[91,78248,1235],{"class":101},[91,78250,29194],{"class":97},[91,78252,795],{"class":101},[91,78254,7471],{"class":566},[91,78256,25921],{"class":101},[91,78258,78259,78261,78263,78265,78267,78269],{"class":93,"line":299},[91,78260,13900],{"class":101},[91,78262,1225],{"class":97},[91,78264,795],{"class":101},[91,78266,11782],{"class":108},[91,78268,29182],{"class":101},[91,78270,29215],{"class":1343},[91,78272,78273],{"class":93,"line":319},[91,78274,23766],{"class":101},[91,78276,78277],{"class":93,"line":334},[91,78278,1693],{"class":101},[91,78280,78281],{"class":93,"line":355},[91,78282,137],{"class":101},[16,78284,29230,78285,29234,78287,29238,78289,29241],{},[31,78286,29233],{},[31,78288,29237],{},[792,78290,29097],{},[757,78292,29245],{"id":29244},[16,78294,29248],{},[82,78296,78297],{"className":11559,"code":29251,"language":11561,"meta":87,"style":87},[31,78298,78299,78307,78311,78315,78319,78325,78331,78353,78357,78363,78385,78389,78399,78405,78409,78421,78425,78429],{"__ignoreMap":87},[91,78300,78301,78303,78305],{"class":93,"line":94},[91,78302,2118],{"class":97},[91,78304,112],{"class":101},[91,78306,29262],{"class":169},[91,78308,78309],{"class":93,"line":105},[91,78310,29267],{"class":169},[91,78312,78313],{"class":93,"line":121},[91,78314,29272],{"class":169},[91,78316,78317],{"class":93,"line":134},[91,78318,29277],{"class":169},[91,78320,78321,78323],{"class":93,"line":228},[91,78322,29282],{"class":169},[91,78324,7560],{"class":101},[91,78326,78327,78329],{"class":93,"line":250},[91,78328,28360],{"class":97},[91,78330,2007],{"class":101},[91,78332,78333,78335,78337,78339,78341,78343,78345,78347,78349,78351],{"class":93,"line":260},[91,78334,28741],{"class":108},[91,78336,29297],{"class":101},[91,78338,1583],{"class":108},[91,78340,28223],{"class":101},[91,78342,166],{"class":566},[91,78344,28378],{"class":101},[91,78346,591],{"class":108},[91,78348,28619],{"class":101},[91,78350,29312],{"class":169},[91,78352,20036],{"class":101},[91,78354,78355],{"class":93,"line":274},[91,78356,15376],{"class":101},[91,78358,78359,78361],{"class":93,"line":284},[91,78360,29323],{"class":97},[91,78362,2007],{"class":101},[91,78364,78365,78367,78369,78371,78373,78375,78377,78379,78381,78383],{"class":93,"line":299},[91,78366,28741],{"class":108},[91,78368,29297],{"class":101},[91,78370,591],{"class":108},[91,78372,28223],{"class":101},[91,78374,166],{"class":566},[91,78376,28378],{"class":101},[91,78378,28340],{"class":108},[91,78380,28619],{"class":101},[91,78382,29346],{"class":169},[91,78384,20036],{"class":101},[91,78386,78387],{"class":93,"line":319},[91,78388,15376],{"class":101},[91,78390,78391,78393,78395,78397],{"class":93,"line":334},[91,78392,7901],{"class":97},[91,78394,24747],{"class":101},[91,78396,1179],{"class":566},[91,78398,102],{"class":101},[91,78400,78401,78403],{"class":93,"line":355},[91,78402,2695],{"class":566},[91,78404,102],{"class":101},[91,78406,78407],{"class":93,"line":364},[91,78408,29373],{"class":101},[91,78410,78411,78413,78415,78417,78419],{"class":93,"line":378},[91,78412,29378],{"class":101},[91,78414,1583],{"class":108},[91,78416,28619],{"class":101},[91,78418,29385],{"class":169},[91,78420,15376],{"class":101},[91,78422,78423],{"class":93,"line":387},[91,78424,10681],{"class":101},[91,78426,78427],{"class":93,"line":402},[91,78428,1698],{"class":101},[91,78430,78431],{"class":93,"line":422},[91,78432,137],{"class":101},[16,78434,29402,78435,29406,78437,29410],{},[31,78436,29405],{},[31,78438,29409],{},[82,78440,78441],{"className":11559,"code":29413,"language":11561,"meta":87,"style":87},[31,78442,78443,78449,78455,78459,78463,78481,78509,78527,78545,78549],{"__ignoreMap":87},[91,78444,78445,78447],{"class":93,"line":94},[91,78446,29142],{"class":97},[91,78448,8789],{"class":101},[91,78450,78451,78453],{"class":93,"line":105},[91,78452,29426],{"class":97},[91,78454,2007],{"class":101},[91,78456,78457],{"class":93,"line":121},[91,78458,29433],{"class":1343},[91,78460,78461],{"class":93,"line":134},[91,78462,29438],{"class":1343},[91,78464,78465,78467,78469,78471,78473,78475,78477,78479],{"class":93,"line":228},[91,78466,11922],{"class":108},[91,78468,29297],{"class":101},[91,78470,1578],{"class":108},[91,78472,28887],{"class":101},[91,78474,166],{"class":566},[91,78476,29453],{"class":169},[91,78478,20231],{"class":101},[91,78480,29458],{"class":1343},[91,78482,78483,78485,78487,78489,78491,78493,78495,78497,78499,78501,78503,78505,78507],{"class":93,"line":250},[91,78484,26712],{"class":108},[91,78486,1235],{"class":101},[91,78488,28037],{"class":97},[91,78490,795],{"class":101},[91,78492,11782],{"class":108},[91,78494,29297],{"class":101},[91,78496,1583],{"class":108},[91,78498,22817],{"class":101},[91,78500,28317],{"class":169},[91,78502,64],{"class":101},[91,78504,29483],{"class":169},[91,78506,1176],{"class":101},[91,78508,28513],{"class":1343},[91,78510,78511,78513,78515,78517,78519,78521,78523,78525],{"class":93,"line":260},[91,78512,11922],{"class":108},[91,78514,29297],{"class":101},[91,78516,1583],{"class":108},[91,78518,28887],{"class":101},[91,78520,166],{"class":566},[91,78522,29453],{"class":169},[91,78524,20231],{"class":101},[91,78526,28513],{"class":1343},[91,78528,78529,78531,78533,78535,78537,78539,78541,78543],{"class":93,"line":274},[91,78530,11922],{"class":108},[91,78532,29297],{"class":101},[91,78534,591],{"class":108},[91,78536,28887],{"class":101},[91,78538,166],{"class":566},[91,78540,29453],{"class":169},[91,78542,20231],{"class":101},[91,78544,28513],{"class":1343},[91,78546,78547],{"class":93,"line":284},[91,78548,1698],{"class":101},[91,78550,78551],{"class":93,"line":299},[91,78552,15376],{"class":101},[16,78554,29534],{},[829,78556,29537],{},{"title":87,"searchDepth":105,"depth":105,"links":78558},[78559,78560,78564],{"id":25178,"depth":105,"text":25179},{"id":25191,"depth":105,"text":25192,"children":78561},[78562,78563],{"id":25213,"depth":121,"text":25214},{"id":25890,"depth":121,"text":25891},{"id":27957,"depth":105,"text":27958,"children":78565},[78566,78567,78568,78569,78570],{"id":27969,"depth":121,"text":27970},{"id":28061,"depth":121,"text":28062},{"id":28149,"depth":121,"text":28150},{"id":29090,"depth":121,"text":29091},{"id":29244,"depth":121,"text":29245},{},{"title":25173,"description":29553},{"loc":29556},[15042,25166,29561,25178,29562],{"id":29565,"title":29566,"body":78576,"created":29955,"description":29956,"extension":843,"filename":29957,"meta":78899,"navigation":846,"path":29959,"seo":78900,"sitemap":78901,"stem":29962,"subject":15043,"tags":78902,"updated":29955,"volume":853,"__hash__":29966},{"type":8,"value":78577,"toc":78894},[78578,78580,78584,78586,78590,78594,78604,78660,78664,78670,78672,78674,78774,78778,78784,78876,78882,78884,78886,78888,78890,78892],[16,78579,29571],{},[16,78581,29574,78582,29578],{},[31,78583,29577],{},[49,78585,29582],{"id":29581},[16,78587,29585,78588,29589],{},[31,78589,29588],{},[16,78591,78592],{},[19,78593],{"alt":29594,"src":29595},[16,78595,78596,6301,78598,29604,78600,29608,78602,29611],{},[31,78597,29600],{},[31,78599,29603],{},[31,78601,29607],{},[31,78603,29577],{},[82,78605,78606],{"className":1154,"code":29614,"language":1156,"meta":87,"style":87},[31,78607,78608,78618,78622,78634,78646,78650,78656],{"__ignoreMap":87},[91,78609,78610,78612,78614,78616],{"class":93,"line":94},[91,78611,2499],{"class":566},[91,78613,29623],{"class":101},[91,78615,2505],{"class":566},[91,78617,29628],{"class":169},[91,78619,78620],{"class":93,"line":105},[91,78621,1450],{"emptyLinePlaceholder":846},[91,78623,78624,78626,78628,78630,78632],{"class":93,"line":121},[91,78625,29637],{"class":97},[91,78627,795],{"class":101},[91,78629,23700],{"class":1172},[91,78631,11859],{"class":566},[91,78633,102],{"class":101},[91,78635,78636,78638,78640,78642,78644],{"class":93,"line":134},[91,78637,2641],{"class":566},[91,78639,29652],{"class":108},[91,78641,1366],{"class":566},[91,78643,7916],{"class":97},[91,78645,29659],{"class":101},[91,78647,78648],{"class":93,"line":228},[91,78649,1450],{"emptyLinePlaceholder":846},[91,78651,78652,78654],{"class":93,"line":250},[91,78653,29668],{"class":97},[91,78655,29671],{"class":101},[91,78657,78658],{"class":93,"line":260},[91,78659,9444],{"class":101},[16,78661,29678,78662,29681],{},[31,78663,29637],{},[16,78665,29684,78666,29687,78668,29690],{},[31,78667,1884],{},[31,78669,1884],{},[49,78671,29694],{"id":29693},[16,78673,29697],{},[82,78675,78676],{"className":1154,"code":29700,"language":1156,"meta":87,"style":87},[31,78677,78678,78688,78696,78704,78720,78724,78728,78738,78746,78754,78770],{"__ignoreMap":87},[91,78679,78680,78682,78684,78686],{"class":93,"line":94},[91,78681,1968],{"class":566},[91,78683,29709],{"class":108},[91,78685,1366],{"class":566},[91,78687,102],{"class":101},[91,78689,78690,78692,78694],{"class":93,"line":105},[91,78691,24725],{"class":101},[91,78693,29720],{"class":169},[91,78695,7560],{"class":101},[91,78697,78698,78700,78702],{"class":93,"line":121},[91,78699,24735],{"class":101},[91,78701,29729],{"class":169},[91,78703,7560],{"class":101},[91,78705,78706,78708,78710,78712,78714,78716,78718],{"class":93,"line":134},[91,78707,22214],{"class":97},[91,78709,24747],{"class":101},[91,78711,1179],{"class":566},[91,78713,24752],{"class":566},[91,78715,795],{"class":101},[91,78717,29746],{"class":169},[91,78719,8037],{"class":101},[91,78721,78722],{"class":93,"line":228},[91,78723,137],{"class":101},[91,78725,78726],{"class":93,"line":250},[91,78727,1450],{"emptyLinePlaceholder":846},[91,78729,78730,78732,78734,78736],{"class":93,"line":260},[91,78731,1968],{"class":566},[91,78733,29763],{"class":108},[91,78735,1366],{"class":566},[91,78737,102],{"class":101},[91,78739,78740,78742,78744],{"class":93,"line":274},[91,78741,24725],{"class":101},[91,78743,29774],{"class":169},[91,78745,7560],{"class":101},[91,78747,78748,78750,78752],{"class":93,"line":284},[91,78749,24735],{"class":101},[91,78751,29783],{"class":169},[91,78753,7560],{"class":101},[91,78755,78756,78758,78760,78762,78764,78766,78768],{"class":93,"line":299},[91,78757,22214],{"class":97},[91,78759,24747],{"class":101},[91,78761,1179],{"class":566},[91,78763,24752],{"class":566},[91,78765,795],{"class":101},[91,78767,29746],{"class":169},[91,78769,8037],{"class":101},[91,78771,78772],{"class":93,"line":319},[91,78773,137],{"class":101},[16,78775,29808,78776,29812],{},[31,78777,29811],{},[16,78779,29815,78780,29818,78782,29821],{},[31,78781,23507],{},[31,78783,9452],{},[82,78785,78786],{"className":1934,"code":29824,"language":1936,"meta":87,"style":87},[31,78787,78788,78792,78808,78818,78822,78834,78842,78846,78854,78868],{"__ignoreMap":87},[91,78789,78790],{"class":93,"line":94},[91,78791,29831],{"class":1343},[91,78793,78794,78796,78798,78800,78802,78804,78806],{"class":93,"line":105},[91,78795,156],{"class":101},[91,78797,1945],{"class":159},[91,78799,1948],{"class":97},[91,78801,1951],{"class":97},[91,78803,166],{"class":101},[91,78805,1956],{"class":169},[91,78807,173],{"class":101},[91,78809,78810,78812,78814,78816],{"class":93,"line":121},[91,78811,2499],{"class":566},[91,78813,12217],{"class":101},[91,78815,2505],{"class":566},[91,78817,29628],{"class":169},[91,78819,78820],{"class":93,"line":134},[91,78821,1450],{"emptyLinePlaceholder":846},[91,78823,78824,78826,78828,78830,78832],{"class":93,"line":228},[91,78825,1968],{"class":566},[91,78827,12259],{"class":108},[91,78829,1366],{"class":566},[91,78831,12264],{"class":97},[91,78833,9313],{"class":101},[91,78835,78836,78838,78840],{"class":93,"line":250},[91,78837,493],{"class":101},[91,78839,1945],{"class":159},[91,78841,173],{"class":101},[91,78843,78844],{"class":93,"line":260},[91,78845,1450],{"emptyLinePlaceholder":846},[91,78847,78848,78850,78852],{"class":93,"line":274},[91,78849,156],{"class":101},[91,78851,2118],{"class":159},[91,78853,173],{"class":101},[91,78855,78856,78858,78860,78862,78864,78866],{"class":93,"line":284},[91,78857,2125],{"class":101},[91,78859,23507],{"class":159},[91,78861,29902],{"class":97},[91,78863,166],{"class":101},[91,78865,29907],{"class":169},[91,78867,2147],{"class":101},[91,78869,78870,78872,78874],{"class":93,"line":299},[91,78871,493],{"class":101},[91,78873,2118],{"class":159},[91,78875,173],{"class":101},[16,78877,78878,29923,78880,29926],{},[31,78879,29922],{},[31,78881,29577],{},[16,78883,29929],{},[49,78885,6005],{"id":6004},[1112,78887],{"description":29934,"favicon":29935,"host":29936,"title":29937,"url":29938},[1112,78889],{"description":29934,"favicon":29935,"host":29936,"title":29941,"url":29942},[1112,78891],{"description":29934,"favicon":29935,"host":29936,"title":29945,"url":29946},[829,78893,29949],{},{"title":87,"searchDepth":105,"depth":105,"links":78895},[78896,78897,78898],{"id":29581,"depth":105,"text":29582},{"id":29693,"depth":105,"text":29694},{"id":6004,"depth":105,"text":6005},{},{"title":29566,"description":29956},{"loc":29959},[16324,21680,29964,29965],{"id":29968,"title":29969,"body":78904,"created":30430,"description":30431,"extension":843,"filename":30432,"meta":79244,"navigation":846,"path":30434,"seo":79245,"sitemap":79246,"stem":30437,"subject":7200,"tags":79247,"updated":30430,"volume":853,"__hash__":30442},{"type":8,"value":78905,"toc":79235},[78906,78912,78914,78916,78982,78984,78986,78988,78990,78995,79005,79010,79012,79024,79034,79036,79042,79047,79057,79059,79071,79073,79075,79087,79089,79091,79121,79123,79125,79127,79129,79145,79147,79153,79155,79157,79163,79195,79197,79223,79225,79227,79229,79231,79233],[16,78907,29974,78908,5321,78910,29981],{},[31,78909,29977],{},[31,78911,29980],{},[49,78913,29985],{"id":29984},[16,78915,29988],{},[812,78917,78918,78928],{},[3001,78919,78920],{},[3004,78921,78922,78924,78926],{},[3007,78923,29997],{},[3007,78925,30000],{},[3007,78927,30003],{},[3017,78929,78930,78938,78950,78958,78966,78974],{},[3004,78931,78932,78934,78936],{},[3022,78933,30010],{},[3022,78935,30013],{},[3022,78937,30016],{},[3004,78939,78940,78946,78948],{},[3022,78941,30021,78942,64,78944,30028],{},[31,78943,30024],{},[31,78945,30027],{},[3022,78947,30013],{},[3022,78949,30033],{},[3004,78951,78952,78954,78956],{},[3022,78953,30038],{},[3022,78955,30013],{},[3022,78957,30043],{},[3004,78959,78960,78962,78964],{},[3022,78961,30048],{},[3022,78963,30051],{},[3022,78965,30054],{},[3004,78967,78968,78970,78972],{},[3022,78969,30059],{},[3022,78971,30051],{},[3022,78973,30064],{},[3004,78975,78976,78978,78980],{},[3022,78977,30069],{},[3022,78979,30051],{},[3022,78981,30074],{},[16,78983,30077],{},[16,78985,30080],{},[49,78987,30084],{"id":30083},[16,78989,30087],{},[82,78991,78993],{"className":78992,"code":30091,"language":1099,"meta":87},[1097],[31,78994,30091],{"__ignoreMap":87},[16,78996,78997,64,78999,64,79001,30104,79003,30108],{},[31,78998,30098],{},[31,79000,12660],{},[31,79002,30103],{},[31,79004,30107],{},[82,79006,79008],{"className":79007,"code":30112,"language":1099,"meta":87},[1097],[31,79009,30112],{"__ignoreMap":87},[16,79011,30117],{},[82,79013,79014],{"className":6839,"code":30120,"language":6841,"meta":87,"style":87},[31,79015,79016],{"__ignoreMap":87},[91,79017,79018,79020,79022],{"class":93,"line":94},[91,79019,7202],{"class":97},[91,79021,30129],{"class":169},[91,79023,30132],{"class":169},[16,79025,20150,79026,64,79028,64,79030,30141,79032,30145],{},[31,79027,30098],{},[31,79029,12660],{},[31,79031,30103],{},[31,79033,30144],{},[49,79035,30149],{"id":30148},[16,79037,30152,79038,30155,79040,30159],{},[31,79039,29977],{},[31,79041,30158],{},[82,79043,79045],{"className":79044,"code":30163,"language":1099,"meta":87},[1097],[31,79046,30163],{"__ignoreMap":87},[16,79048,79049,30170,79051,64,79053,64,79055,30177],{},[31,79050,30158],{},[31,79052,30098],{},[31,79054,12660],{},[31,79056,30103],{},[16,79058,30180],{},[24,79060,79061,79063,79067,79069],{},[27,79062,30185],{},[27,79064,30188,79065,30191],{},[31,79066,30144],{},[27,79068,30194],{},[27,79070,30197],{},[16,79072,30200],{},[49,79074,30204],{"id":30203},[16,79076,30207,79077,30210,79079,64,79081,64,79083,30217,79085,3512],{},[31,79078,30107],{},[31,79080,30098],{},[31,79082,12660],{},[31,79084,30103],{},[31,79086,30220],{},[16,79088,30223],{},[16,79090,30226],{},[82,79092,79093],{"className":6839,"code":30229,"language":6841,"meta":87,"style":87},[31,79094,79095,79103,79111],{"__ignoreMap":87},[91,79096,79097,79099,79101],{"class":93,"line":94},[91,79098,7202],{"class":97},[91,79100,30238],{"class":169},[91,79102,30241],{"class":169},[91,79104,79105,79107,79109],{"class":93,"line":105},[91,79106,7202],{"class":97},[91,79108,30248],{"class":169},[91,79110,30251],{"class":108},[91,79112,79113,79115,79117,79119],{"class":93,"line":121},[91,79114,7202],{"class":97},[91,79116,30238],{"class":169},[91,79118,30260],{"class":108},[91,79120,30263],{"class":169},[16,79122,30266],{},[49,79124,30270],{"id":30269},[16,79126,30273],{},[16,79128,30276],{},[82,79130,79131],{"className":6839,"code":30279,"language":6841,"meta":87,"style":87},[31,79132,79133],{"__ignoreMap":87},[91,79134,79135,79137,79139,79141,79143],{"class":93,"line":94},[91,79136,7202],{"class":97},[91,79138,30129],{"class":169},[91,79140,30290],{"class":108},[91,79142,6594],{"class":108},[91,79144,30295],{"class":169},[16,79146,30298],{},[24,79148,79149,79151],{},[27,79150,30303],{},[27,79152,30306],{},[49,79154,30310],{"id":30309},[16,79156,30313],{},[16,79158,30316,79159,30320,79161,30324],{},[31,79160,30319],{},[31,79162,30323],{},[82,79164,79165],{"className":6839,"code":30327,"language":6841,"meta":87,"style":87},[31,79166,79167,79175,79185],{"__ignoreMap":87},[91,79168,79169,79171,79173],{"class":93,"line":94},[91,79170,7202],{"class":97},[91,79172,30238],{"class":169},[91,79174,30241],{"class":169},[91,79176,79177,79179,79181,79183],{"class":93,"line":105},[91,79178,7202],{"class":97},[91,79180,30344],{"class":169},[91,79182,30347],{"class":108},[91,79184,30350],{"class":169},[91,79186,79187,79189,79191,79193],{"class":93,"line":121},[91,79188,7202],{"class":97},[91,79190,30357],{"class":169},[91,79192,30290],{"class":108},[91,79194,30362],{"class":169},[16,79196,30365],{},[82,79198,79199],{"className":6839,"code":30368,"language":6841,"meta":87,"style":87},[31,79200,79201,79213],{"__ignoreMap":87},[91,79202,79203,79205,79207,79209,79211],{"class":93,"line":94},[91,79204,7202],{"class":97},[91,79206,30377],{"class":169},[91,79208,30380],{"class":108},[91,79210,30383],{"class":169},[91,79212,30241],{"class":169},[91,79214,79215,79217,79219,79221],{"class":93,"line":105},[91,79216,7202],{"class":97},[91,79218,30392],{"class":169},[91,79220,30395],{"class":108},[91,79222,30241],{"class":169},[16,79224,30400],{},[49,79226,6005],{"id":6004},[1112,79228],{"description":30405,"host":7154,"title":30406,"url":30407},[1112,79230],{"description":30410,"host":7154,"title":30411,"url":30412},[1112,79232],{"description":30415,"host":7170,"title":30416,"url":30417},[829,79234,30420],{},{"title":87,"searchDepth":105,"depth":105,"links":79236},[79237,79238,79239,79240,79241,79242,79243],{"id":29984,"depth":105,"text":29985},{"id":30083,"depth":105,"text":30084},{"id":30148,"depth":105,"text":30149},{"id":30203,"depth":105,"text":30204},{"id":30269,"depth":105,"text":30270},{"id":30309,"depth":105,"text":30310},{"id":6004,"depth":105,"text":6005},{},{"title":29969,"description":30431},{"loc":30434},[7202,7203,30439,30440,30441],{"id":30444,"title":30445,"body":79249,"created":4430,"description":30493,"extension":843,"filename":30494,"meta":79281,"navigation":846,"path":30498,"seo":79283,"sitemap":79284,"stem":30501,"subject":851,"tags":79285,"updated":4430,"volume":1863,"__hash__":30503},{"type":8,"value":79250,"toc":79279},[79251,79255,79259,79261,79273],[16,79252,79253],{},[19,79254],{"alt":21,"src":30452},[16,79256,30455,79257,30459],{},[31,79258,30458],{},[1112,79260],{"description":30462,"favicon":9248,"host":5541,"title":30463,"url":30464},[1722,79262,79263],{},[16,79264,79265,30471,79267,30475,79269,30478,79271,30481],{},[91,79266,1728],{},[31,79268,30474],{},[31,79270,30458],{},[31,79272,30474],{},[16,79274,30484,79275,30487,79277,30490],{},[31,79276,30458],{},[31,79278,30474],{},{"title":87,"searchDepth":105,"depth":105,"links":79280},[],{"references":79282},[30497],{"title":30445,"description":30493},{"loc":30498},[86],[79287,79943,80419,80708,81530,82748,82842,83115,83357,83448,83653,83874,84468,84730,84881,85834,86218,87037,87583,91061,91239,91330,92071,92737,93068,93168,93457,93740,93829,94048,94610,94719,94841,95613,96211,98613,98770,99205,102966,103294,103639],{"id":5,"title":6,"body":79288,"created":841,"description":842,"extension":843,"filename":844,"meta":79939,"navigation":846,"path":847,"seo":79940,"sitemap":79941,"stem":850,"subject":851,"tags":79942,"updated":841,"volume":853,"__hash__":854},{"type":8,"value":79289,"toc":79930},[79290,79292,79296,79310,79312,79330,79332,79366,79370,79672,79676,79682,79684,79688,79694,79696,79698,79776,79778,79866,79870,79878,79880,79882,79884,79886,79892,79894,79916,79918,79920,79924,79928],[11,79291,14],{"id":13},[16,79293,79294],{},[19,79295],{"alt":21,"src":22},[24,79297,79298,79304,79306,79308],{},[27,79299,29,79300,34,79302,38],{},[31,79301,33],{},[31,79303,37],{},[27,79305,41],{},[27,79307,44],{},[27,79309,47],{},[49,79311,51],{"id":51},[24,79313,79314,79324],{},[27,79315,56,79316],{},[24,79317,79318],{},[27,79319,79320,64,79322,68],{},[31,79321,63],{},[31,79323,67],{},[27,79325,71,79326],{},[24,79327,79328],{},[27,79329,76],{},[11,79331,80],{"id":79},[82,79333,79334],{"className":84,"code":85,"language":86,"meta":87,"style":87},[31,79335,79336,79342,79352,79362],{"__ignoreMap":87},[91,79337,79338,79340],{"class":93,"line":94},[91,79339,98],{"class":97},[91,79341,102],{"class":101},[91,79343,79344,79346,79348,79350],{"class":93,"line":105},[91,79345,109],{"class":108},[91,79347,112],{"class":101},[91,79349,115],{"class":108},[91,79351,118],{"class":101},[91,79353,79354,79356,79358,79360],{"class":93,"line":121},[91,79355,124],{"class":108},[91,79357,112],{"class":101},[91,79359,129],{"class":108},[91,79361,118],{"class":101},[91,79363,79364],{"class":93,"line":134},[91,79365,137],{"class":101},[16,79367,140,79368,144],{},[31,79369,143],{},[82,79371,79372],{"className":147,"code":148,"language":149,"meta":87,"style":87},[31,79373,79374,79388,79402,79420,79434,79452,79460,79472,79480,79494,79512,79526,79544,79552,79564,79572,79586,79604,79618,79636,79644,79656,79664],{"__ignoreMap":87},[91,79375,79376,79378,79380,79382,79384,79386],{"class":93,"line":94},[91,79377,156],{"class":101},[91,79379,160],{"class":159},[91,79381,163],{"class":97},[91,79383,166],{"class":101},[91,79385,170],{"class":169},[91,79387,173],{"class":101},[91,79389,79390,79392,79394,79396,79398,79400],{"class":93,"line":105},[91,79391,178],{"class":101},[91,79393,160],{"class":159},[91,79395,163],{"class":97},[91,79397,166],{"class":101},[91,79399,187],{"class":169},[91,79401,173],{"class":101},[91,79403,79404,79406,79408,79410,79412,79414,79416,79418],{"class":93,"line":121},[91,79405,194],{"class":101},[91,79407,160],{"class":159},[91,79409,163],{"class":97},[91,79411,166],{"class":101},[91,79413,203],{"class":169},[91,79415,206],{"class":101},[91,79417,160],{"class":159},[91,79419,173],{"class":101},[91,79421,79422,79424,79426,79428,79430,79432],{"class":93,"line":134},[91,79423,194],{"class":101},[91,79425,160],{"class":159},[91,79427,163],{"class":97},[91,79429,166],{"class":101},[91,79431,223],{"class":169},[91,79433,173],{"class":101},[91,79435,79436,79438,79440,79442,79444,79446,79448,79450],{"class":93,"line":228},[91,79437,231],{"class":101},[91,79439,160],{"class":159},[91,79441,163],{"class":97},[91,79443,166],{"class":101},[91,79445,240],{"class":169},[91,79447,243],{"class":101},[91,79449,160],{"class":159},[91,79451,173],{"class":101},[91,79453,79454,79456,79458],{"class":93,"line":250},[91,79455,253],{"class":101},[91,79457,160],{"class":159},[91,79459,173],{"class":101},[91,79461,79462,79464,79466,79468,79470],{"class":93,"line":260},[91,79463,194],{"class":101},[91,79465,160],{"class":159},[91,79467,267],{"class":101},[91,79469,160],{"class":159},[91,79471,173],{"class":101},[91,79473,79474,79476,79478],{"class":93,"line":274},[91,79475,277],{"class":101},[91,79477,160],{"class":159},[91,79479,173],{"class":101},[91,79481,79482,79484,79486,79488,79490,79492],{"class":93,"line":284},[91,79483,178],{"class":101},[91,79485,160],{"class":159},[91,79487,163],{"class":97},[91,79489,166],{"class":101},[91,79491,187],{"class":169},[91,79493,173],{"class":101},[91,79495,79496,79498,79500,79502,79504,79506,79508,79510],{"class":93,"line":299},[91,79497,194],{"class":101},[91,79499,160],{"class":159},[91,79501,163],{"class":97},[91,79503,166],{"class":101},[91,79505,203],{"class":169},[91,79507,312],{"class":101},[91,79509,160],{"class":159},[91,79511,173],{"class":101},[91,79513,79514,79516,79518,79520,79522,79524],{"class":93,"line":319},[91,79515,194],{"class":101},[91,79517,160],{"class":159},[91,79519,163],{"class":97},[91,79521,166],{"class":101},[91,79523,223],{"class":169},[91,79525,173],{"class":101},[91,79527,79528,79530,79532,79534,79536,79538,79540,79542],{"class":93,"line":334},[91,79529,231],{"class":101},[91,79531,160],{"class":159},[91,79533,163],{"class":97},[91,79535,166],{"class":101},[91,79537,345],{"class":169},[91,79539,348],{"class":101},[91,79541,160],{"class":159},[91,79543,173],{"class":101},[91,79545,79546,79548,79550],{"class":93,"line":355},[91,79547,253],{"class":101},[91,79549,160],{"class":159},[91,79551,173],{"class":101},[91,79553,79554,79556,79558,79560,79562],{"class":93,"line":364},[91,79555,194],{"class":101},[91,79557,160],{"class":159},[91,79559,371],{"class":101},[91,79561,160],{"class":159},[91,79563,173],{"class":101},[91,79565,79566,79568,79570],{"class":93,"line":378},[91,79567,277],{"class":101},[91,79569,160],{"class":159},[91,79571,173],{"class":101},[91,79573,79574,79576,79578,79580,79582,79584],{"class":93,"line":387},[91,79575,178],{"class":101},[91,79577,160],{"class":159},[91,79579,163],{"class":97},[91,79581,166],{"class":101},[91,79583,187],{"class":169},[91,79585,173],{"class":101},[91,79587,79588,79590,79592,79594,79596,79598,79600,79602],{"class":93,"line":402},[91,79589,194],{"class":101},[91,79591,160],{"class":159},[91,79593,163],{"class":97},[91,79595,166],{"class":101},[91,79597,203],{"class":169},[91,79599,415],{"class":101},[91,79601,160],{"class":159},[91,79603,173],{"class":101},[91,79605,79606,79608,79610,79612,79614,79616],{"class":93,"line":422},[91,79607,194],{"class":101},[91,79609,160],{"class":159},[91,79611,163],{"class":97},[91,79613,166],{"class":101},[91,79615,433],{"class":169},[91,79617,173],{"class":101},[91,79619,79620,79622,79624,79626,79628,79630,79632,79634],{"class":93,"line":438},[91,79621,231],{"class":101},[91,79623,160],{"class":159},[91,79625,163],{"class":97},[91,79627,166],{"class":101},[91,79629,345],{"class":169},[91,79631,451],{"class":101},[91,79633,160],{"class":159},[91,79635,173],{"class":101},[91,79637,79638,79640,79642],{"class":93,"line":458},[91,79639,253],{"class":101},[91,79641,160],{"class":159},[91,79643,173],{"class":101},[91,79645,79646,79648,79650,79652,79654],{"class":93,"line":467},[91,79647,194],{"class":101},[91,79649,160],{"class":159},[91,79651,474],{"class":101},[91,79653,160],{"class":159},[91,79655,173],{"class":101},[91,79657,79658,79660,79662],{"class":93,"line":481},[91,79659,277],{"class":101},[91,79661,160],{"class":159},[91,79663,173],{"class":101},[91,79665,79666,79668,79670],{"class":93,"line":490},[91,79667,493],{"class":101},[91,79669,160],{"class":159},[91,79671,173],{"class":101},[16,79673,79674],{},[19,79675],{"alt":21,"src":502},[16,79677,505,79678,508,79680,512],{},[31,79679,143],{},[31,79681,511],{},[49,79683,515],{"id":515},[16,79685,79686],{},[19,79687],{"alt":21,"src":520},[16,79689,523,79690,527,79692,531],{},[31,79691,526],{},[31,79693,530],{},[16,79695,534],{},[49,79697,538],{"id":537},[82,79699,79700],{"className":84,"code":541,"language":86,"meta":87,"style":87},[31,79701,79702,79710,79722,79732,79742,79752,79762,79772],{"__ignoreMap":87},[91,79703,79704,79706,79708],{"class":93,"line":94},[91,79705,548],{"class":101},[91,79707,551],{"class":159},[91,79709,102],{"class":101},[91,79711,79712,79714,79716,79718,79720],{"class":93,"line":105},[91,79713,558],{"class":108},[91,79715,112],{"class":101},[91,79717,563],{"class":108},[91,79719,567],{"class":566},[91,79721,118],{"class":101},[91,79723,79724,79726,79728,79730],{"class":93,"line":121},[91,79725,574],{"class":108},[91,79727,112],{"class":101},[91,79729,579],{"class":108},[91,79731,118],{"class":101},[91,79733,79734,79736,79738,79740],{"class":93,"line":134},[91,79735,586],{"class":108},[91,79737,112],{"class":101},[91,79739,591],{"class":108},[91,79741,118],{"class":101},[91,79743,79744,79746,79748,79750],{"class":93,"line":228},[91,79745,598],{"class":108},[91,79747,112],{"class":101},[91,79749,603],{"class":108},[91,79751,118],{"class":101},[91,79753,79754,79756,79758,79760],{"class":93,"line":250},[91,79755,610],{"class":108},[91,79757,112],{"class":101},[91,79759,115],{"class":108},[91,79761,118],{"class":101},[91,79763,79764,79766,79768,79770],{"class":93,"line":260},[91,79765,621],{"class":108},[91,79767,112],{"class":101},[91,79769,129],{"class":108},[91,79771,118],{"class":101},[91,79773,79774],{"class":93,"line":274},[91,79775,137],{"class":101},[16,79777,634],{},[82,79779,79780],{"className":84,"code":637,"language":86,"meta":87,"style":87},[31,79781,79782,79788,79800,79810,79820,79830,79840,79850,79862],{"__ignoreMap":87},[91,79783,79784,79786],{"class":93,"line":94},[91,79785,644],{"class":97},[91,79787,102],{"class":101},[91,79789,79790,79792,79794,79796,79798],{"class":93,"line":105},[91,79791,558],{"class":108},[91,79793,112],{"class":101},[91,79795,563],{"class":108},[91,79797,567],{"class":566},[91,79799,118],{"class":101},[91,79801,79802,79804,79806,79808],{"class":93,"line":121},[91,79803,574],{"class":108},[91,79805,112],{"class":101},[91,79807,579],{"class":108},[91,79809,118],{"class":101},[91,79811,79812,79814,79816,79818],{"class":93,"line":134},[91,79813,586],{"class":108},[91,79815,112],{"class":101},[91,79817,591],{"class":108},[91,79819,118],{"class":101},[91,79821,79822,79824,79826,79828],{"class":93,"line":228},[91,79823,598],{"class":108},[91,79825,112],{"class":101},[91,79827,603],{"class":108},[91,79829,118],{"class":101},[91,79831,79832,79834,79836,79838],{"class":93,"line":250},[91,79833,610],{"class":108},[91,79835,112],{"class":101},[91,79837,115],{"class":108},[91,79839,118],{"class":101},[91,79841,79842,79844,79846,79848],{"class":93,"line":260},[91,79843,621],{"class":108},[91,79845,112],{"class":101},[91,79847,129],{"class":108},[91,79849,118],{"class":101},[91,79851,79852,79854,79856,79858,79860],{"class":93,"line":274},[91,79853,713],{"class":108},[91,79855,112],{"class":101},[91,79857,718],{"class":108},[91,79859,721],{"class":101},[91,79861,724],{"class":101},[91,79863,79864],{"class":93,"line":284},[91,79865,137],{"class":101},[16,79867,731,79868,735],{},[31,79869,734],{},[16,79871,79872,741,79874,744,79876,748],{},[31,79873,740],{},[31,79875,734],{},[31,79877,747],{},[49,79879,752],{"id":751},[16,79881,755],{},[757,79883,33],{"id":33},[16,79885,761],{},[24,79887,79888,79890],{},[27,79889,766],{},[27,79891,769],{},[771,79893,774],{"id":773},[24,79895,79896,79904],{},[27,79897,779,79898],{},[24,79899,79900],{},[27,79901,79902,787],{},[31,79903,786],{},[27,79905,790,79906,795,79908,799,79910,799,79912,799,79914,809],{},[792,79907,794],{},[31,79909,798],{},[31,79911,802],{},[31,79913,805],{},[31,79915,808],{},[757,79917,812],{"id":812},[771,79919,815],{"id":815},[16,79921,79922,821],{},[31,79923,820],{},[16,79925,79926,827],{},[31,79927,826],{},[829,79929,831],{},{"title":87,"searchDepth":105,"depth":105,"links":79931},[79932,79933,79934,79935],{"id":51,"depth":105,"text":51},{"id":515,"depth":105,"text":515},{"id":537,"depth":105,"text":538},{"id":751,"depth":105,"text":752,"children":79936},[79937,79938],{"id":33,"depth":121,"text":33},{"id":812,"depth":121,"text":812},{},{"title":6,"description":842},{"loc":847},[86],{"id":856,"title":857,"body":79944,"created":1501,"description":1502,"extension":843,"filename":1503,"meta":80415,"navigation":846,"path":1505,"seo":80416,"sitemap":80417,"stem":1508,"subject":1509,"tags":80418,"updated":1501,"volume":853,"__hash__":1513},{"type":8,"value":79945,"toc":80409},[79946,79948,80004,80006,80008,80012,80018,80030,80038,80114,80119,80123,80125,80127,80129,80133,80135,80137,80139,80141,80143,80145,80265,80269,80271,80273,80275,80281,80405,80407],[16,79947,862],{},[24,79949,79950,79964,79990],{},[27,79951,79952,870,79954],{},[792,79953,869],{},[24,79955,79956,79960],{},[27,79957,79958,878],{},[792,79959,877],{},[27,79961,79962,884],{},[792,79963,883],{},[27,79965,79966,890,79968],{},[792,79967,889],{},[24,79969,79970,79974,79978,79982],{},[27,79971,79972,898],{},[792,79973,897],{},[27,79975,79976,904],{},[792,79977,903],{},[27,79979,79980,910],{},[792,79981,909],{},[27,79983,79984,64,79986,64,79988,922],{},[792,79985,915],{},[792,79987,918],{},[792,79989,921],{},[27,79991,79992,928,79994],{},[792,79993,927],{},[24,79995,79996,80000],{},[27,79997,79998,936],{},[792,79999,935],{},[27,80001,80002,942],{},[792,80003,941],{},[16,80005,945],{},[11,80007,949],{"id":948},[16,80009,952,80010,956],{},[31,80011,955],{},[16,80013,959,80014,963,80016,967],{},[31,80015,962],{},[31,80017,966],{},[82,80019,80020],{"className":970,"code":971,"language":972,"meta":87,"style":87},[31,80021,80022,80026],{"__ignoreMap":87},[91,80023,80024],{"class":93,"line":94},[91,80025,979],{},[91,80027,80028],{"class":93,"line":105},[91,80029,984],{},[16,80031,80032,989,80034,993,80036,997],{},[31,80033,962],{},[31,80035,992],{},[31,80037,996],{},[82,80039,80040],{"className":1000,"code":1001,"language":1002,"meta":87,"style":87},[31,80041,80042,80046,80050,80054,80058,80062,80066,80070,80074,80078,80082,80086,80090,80094,80098,80102,80106,80110],{"__ignoreMap":87},[91,80043,80044],{"class":93,"line":94},[91,80045,1009],{},[91,80047,80048],{"class":93,"line":105},[91,80049,1014],{},[91,80051,80052],{"class":93,"line":121},[91,80053,1019],{},[91,80055,80056],{"class":93,"line":134},[91,80057,1024],{},[91,80059,80060],{"class":93,"line":228},[91,80061,1029],{},[91,80063,80064],{"class":93,"line":250},[91,80065,1034],{},[91,80067,80068],{"class":93,"line":260},[91,80069,1039],{},[91,80071,80072],{"class":93,"line":274},[91,80073,1044],{},[91,80075,80076],{"class":93,"line":284},[91,80077,1049],{},[91,80079,80080],{"class":93,"line":299},[91,80081,1054],{},[91,80083,80084],{"class":93,"line":319},[91,80085,1059],{},[91,80087,80088],{"class":93,"line":334},[91,80089,1064],{},[91,80091,80092],{"class":93,"line":355},[91,80093,1069],{},[91,80095,80096],{"class":93,"line":364},[91,80097,1074],{},[91,80099,80100],{"class":93,"line":378},[91,80101,1079],{},[91,80103,80104],{"class":93,"line":387},[91,80105,1084],{},[91,80107,80108],{"class":93,"line":402},[91,80109,1089],{},[91,80111,80112],{"class":93,"line":422},[91,80113,137],{},[82,80115,80117],{"className":80116,"code":1098,"language":1099},[1097],[31,80118,1098],{"__ignoreMap":87},[16,80120,80121,1106],{},[31,80122,966],{},[11,80124,1110],{"id":1109},[1112,80126],{"description":1114,"host":1115,"title":1116,"url":1117,"favicon":1118},[16,80128,1121],{},[16,80130,1124,80131,1128],{},[31,80132,1127],{},[49,80134,1132],{"id":1131},[16,80136,1135],{},[16,80138,1138],{},[1112,80140],{"description":1141,"host":1142,"title":1143,"url":1144},[16,80142,1147],{},[757,80144,1151],{"id":1150},[82,80146,80147],{"className":1154,"code":1155,"language":1156,"meta":87,"style":87},[31,80148,80149,80165,80173,80193,80213,80217,80237,80257,80261],{"__ignoreMap":87},[91,80150,80151,80153,80155,80157,80159,80161,80163],{"class":93,"line":94},[91,80152,1163],{"class":101},[91,80154,1166],{"class":97},[91,80156,1169],{"class":101},[91,80158,1173],{"class":1172},[91,80160,1176],{"class":101},[91,80162,1179],{"class":566},[91,80164,102],{"class":101},[91,80166,80167,80169,80171],{"class":93,"line":105},[91,80168,1186],{"class":101},[91,80170,1189],{"class":97},[91,80172,1192],{"class":101},[91,80174,80175,80177,80179,80181,80183,80185,80187,80189,80191],{"class":93,"line":121},[91,80176,1197],{"class":101},[91,80178,1200],{"class":97},[91,80180,1169],{"class":101},[91,80182,1205],{"class":1172},[91,80184,1208],{"class":566},[91,80186,1211],{"class":108},[91,80188,1176],{"class":101},[91,80190,1179],{"class":566},[91,80192,102],{"class":101},[91,80194,80195,80197,80199,80201,80203,80205,80207,80209,80211],{"class":93,"line":134},[91,80196,1222],{"class":101},[91,80198,1225],{"class":97},[91,80200,795],{"class":101},[91,80202,1230],{"class":169},[91,80204,1173],{"class":101},[91,80206,1235],{"class":169},[91,80208,1238],{"class":101},[91,80210,1241],{"class":169},[91,80212,1244],{"class":101},[91,80214,80215],{"class":93,"line":228},[91,80216,1249],{"class":101},[91,80218,80219,80221,80223,80225,80227,80229,80231,80233,80235],{"class":93,"line":250},[91,80220,1197],{"class":101},[91,80222,1256],{"class":97},[91,80224,1169],{"class":101},[91,80226,1261],{"class":1172},[91,80228,1208],{"class":566},[91,80230,1211],{"class":108},[91,80232,1176],{"class":101},[91,80234,1179],{"class":566},[91,80236,102],{"class":101},[91,80238,80239,80241,80243,80245,80247,80249,80251,80253,80255],{"class":93,"line":260},[91,80240,1222],{"class":101},[91,80242,1261],{"class":97},[91,80244,795],{"class":101},[91,80246,1282],{"class":169},[91,80248,1173],{"class":101},[91,80250,1235],{"class":169},[91,80252,1238],{"class":101},[91,80254,1241],{"class":169},[91,80256,1293],{"class":101},[91,80258,80259],{"class":93,"line":274},[91,80260,1298],{"class":101},[91,80262,80263],{"class":93,"line":284},[91,80264,1303],{"class":101},[16,80266,80267,1309],{},[31,80268,1308],{},[49,80270,1313],{"id":1312},[1112,80272],{"description":1316,"host":1317,"title":1318,"url":1319,"favicon":1320,"image":1321},[16,80274,1324],{},[16,80276,80277,1329,80279,1333],{},[31,80278,1308],{},[31,80280,1332],{},[82,80282,80283],{"className":1154,"code":1336,"language":1156,"meta":87,"style":87},[31,80284,80285,80289,80309,80315,80329,80343,80355,80367,80371,80375,80381,80393],{"__ignoreMap":87},[91,80286,80287],{"class":93,"line":94},[91,80288,1344],{"class":1343},[91,80290,80291,80293,80295,80297,80299,80301,80303,80305,80307],{"class":93,"line":105},[91,80292,1349],{"class":566},[91,80294,1352],{"class":101},[91,80296,1208],{"class":566},[91,80298,1357],{"class":108},[91,80300,1360],{"class":566},[91,80302,1363],{"class":108},[91,80304,1366],{"class":566},[91,80306,1363],{"class":108},[91,80308,118],{"class":101},[91,80310,80311,80313],{"class":93,"line":121},[91,80312,1375],{"class":566},[91,80314,102],{"class":101},[91,80316,80317,80319,80321,80323,80325,80327],{"class":93,"line":134},[91,80318,1382],{"class":566},[91,80320,1385],{"class":108},[91,80322,1366],{"class":566},[91,80324,1390],{"class":566},[91,80326,1393],{"class":97},[91,80328,1396],{"class":101},[91,80330,80331,80333,80335,80337,80339,80341],{"class":93,"line":228},[91,80332,1382],{"class":566},[91,80334,1403],{"class":108},[91,80336,1366],{"class":566},[91,80338,1408],{"class":101},[91,80340,1411],{"class":97},[91,80342,1414],{"class":101},[91,80344,80345,80347,80349,80351,80353],{"class":93,"line":250},[91,80346,1419],{"class":101},[91,80348,166],{"class":566},[91,80350,1408],{"class":101},[91,80352,1426],{"class":97},[91,80354,1429],{"class":101},[91,80356,80357,80359,80361,80363,80365],{"class":93,"line":260},[91,80358,1434],{"class":101},[91,80360,1256],{"class":566},[91,80362,1439],{"class":101},[91,80364,1442],{"class":566},[91,80366,1445],{"class":101},[91,80368,80369],{"class":93,"line":274},[91,80370,1450],{"emptyLinePlaceholder":846},[91,80372,80373],{"class":93,"line":284},[91,80374,1455],{"class":1343},[91,80376,80377,80379],{"class":93,"line":299},[91,80378,1375],{"class":566},[91,80380,102],{"class":101},[91,80382,80383,80385,80387,80389,80391],{"class":93,"line":319},[91,80384,1466],{"class":101},[91,80386,166],{"class":566},[91,80388,1408],{"class":101},[91,80390,1473],{"class":97},[91,80392,1476],{"class":101},[91,80394,80395,80397,80399,80401,80403],{"class":93,"line":334},[91,80396,1434],{"class":101},[91,80398,1256],{"class":566},[91,80400,1439],{"class":101},[91,80402,1442],{"class":566},[91,80404,1445],{"class":101},[16,80406,1491],{},[829,80408,1494],{},{"title":87,"searchDepth":105,"depth":105,"links":80410},[80411,80414],{"id":1131,"depth":105,"text":1132,"children":80412},[80413],{"id":1150,"depth":121,"text":1151},{"id":1312,"depth":105,"text":1313},{},{"title":857,"description":1502},{"loc":1505},[1511,1512],{"id":1515,"title":1516,"body":80420,"created":1854,"description":1855,"extension":843,"filename":1856,"meta":80704,"navigation":846,"path":1858,"seo":80705,"sitemap":80706,"stem":1861,"subject":851,"tags":80707,"updated":1854,"volume":1863,"__hash__":1864},{"type":8,"value":80421,"toc":80702},[80422,80576,80580,80582,80584,80586,80600,80698,80700],[82,80423,80424],{"className":84,"code":1521,"language":86,"meta":87,"style":87},[31,80425,80426,80432,80442,80454,80484,80494,80504,80510,80514,80522,80534,80548,80552,80556,80564,80568,80572],{"__ignoreMap":87},[91,80427,80428,80430],{"class":93,"line":94},[91,80429,1528],{"class":97},[91,80431,102],{"class":101},[91,80433,80434,80436,80438,80440],{"class":93,"line":105},[91,80435,1535],{"class":108},[91,80437,112],{"class":101},[91,80439,1540],{"class":108},[91,80441,118],{"class":101},[91,80443,80444,80446,80448,80450,80452],{"class":93,"line":121},[91,80445,1547],{"class":108},[91,80447,112],{"class":101},[91,80449,1552],{"class":108},[91,80451,567],{"class":566},[91,80453,118],{"class":101},[91,80455,80456,80458,80460,80462,80464,80466,80468,80470,80472,80474,80476,80478,80480,80482],{"class":93,"line":134},[91,80457,1561],{"class":108},[91,80459,1564],{"class":101},[91,80461,1567],{"class":108},[91,80463,1570],{"class":566},[91,80465,1573],{"class":108},[91,80467,795],{"class":101},[91,80469,1578],{"class":108},[91,80471,64],{"class":101},[91,80473,1583],{"class":108},[91,80475,64],{"class":101},[91,80477,1578],{"class":108},[91,80479,64],{"class":101},[91,80481,1583],{"class":108},[91,80483,1594],{"class":101},[91,80485,80486,80488,80490,80492],{"class":93,"line":228},[91,80487,109],{"class":108},[91,80489,112],{"class":101},[91,80491,115],{"class":108},[91,80493,118],{"class":101},[91,80495,80496,80498,80500,80502],{"class":93,"line":250},[91,80497,1609],{"class":108},[91,80499,112],{"class":101},[91,80501,1614],{"class":108},[91,80503,118],{"class":101},[91,80505,80506,80508],{"class":93,"line":260},[91,80507,1621],{"class":108},[91,80509,1624],{"class":101},[91,80511,80512],{"class":93,"line":274},[91,80513,1629],{"class":101},[91,80515,80516,80518,80520],{"class":93,"line":284},[91,80517,1634],{"class":101},[91,80519,1637],{"class":108},[91,80521,102],{"class":101},[91,80523,80524,80526,80528,80530,80532],{"class":93,"line":299},[91,80525,1644],{"class":108},[91,80527,112],{"class":101},[91,80529,1649],{"class":108},[91,80531,567],{"class":566},[91,80533,118],{"class":101},[91,80535,80536,80538,80540,80542,80544,80546],{"class":93,"line":319},[91,80537,1658],{"class":108},[91,80539,1564],{"class":101},[91,80541,1583],{"class":108},[91,80543,1570],{"class":566},[91,80545,1667],{"class":108},[91,80547,118],{"class":101},[91,80549,80550],{"class":93,"line":334},[91,80551,1674],{"class":101},[91,80553,80554],{"class":93,"line":355},[91,80555,1679],{"class":101},[91,80557,80558,80560,80562],{"class":93,"line":364},[91,80559,1684],{"class":101},[91,80561,1578],{"class":108},[91,80563,118],{"class":101},[91,80565,80566],{"class":93,"line":378},[91,80567,1693],{"class":101},[91,80569,80570],{"class":93,"line":387},[91,80571,1698],{"class":101},[91,80573,80574],{"class":93,"line":402},[91,80575,137],{"class":101},[16,80577,80578],{},[19,80579],{"alt":1516,"src":1707},[16,80581,1710],{},[1112,80583],{"description":1713,"host":1714,"image":1715,"title":1716,"url":1717},[16,80585,1720],{},[1722,80587,80588],{},[16,80589,80590,1729,80592,1732,80594,1736,80596,1740,80598,1744],{},[91,80591,1728],{},[31,80593,1578],{},[31,80595,1735],{},[31,80597,1739],{},[31,80599,1743],{},[82,80601,80602],{"className":84,"code":1747,"language":86,"meta":87,"style":87},[31,80603,80604,80610,80620,80630,80660,80668,80680,80694],{"__ignoreMap":87},[91,80605,80606,80608],{"class":93,"line":94},[91,80607,1754],{"class":97},[91,80609,102],{"class":101},[91,80611,80612,80614,80616,80618],{"class":93,"line":105},[91,80613,109],{"class":108},[91,80615,112],{"class":101},[91,80617,115],{"class":108},[91,80619,118],{"class":101},[91,80621,80622,80624,80626,80628],{"class":93,"line":121},[91,80623,1547],{"class":108},[91,80625,112],{"class":101},[91,80627,1578],{"class":108},[91,80629,118],{"class":101},[91,80631,80632,80634,80636,80638,80640,80642,80644,80646,80648,80650,80652,80654,80656,80658],{"class":93,"line":134},[91,80633,1561],{"class":108},[91,80635,1564],{"class":101},[91,80637,1567],{"class":108},[91,80639,1570],{"class":566},[91,80641,1573],{"class":108},[91,80643,795],{"class":101},[91,80645,1578],{"class":108},[91,80647,64],{"class":101},[91,80649,1583],{"class":108},[91,80651,64],{"class":101},[91,80653,1578],{"class":108},[91,80655,64],{"class":101},[91,80657,1583],{"class":108},[91,80659,1594],{"class":101},[91,80661,80662,80664,80666],{"class":93,"line":228},[91,80663,1634],{"class":101},[91,80665,1813],{"class":108},[91,80667,102],{"class":101},[91,80669,80670,80672,80674,80676,80678],{"class":93,"line":250},[91,80671,1644],{"class":108},[91,80673,112],{"class":101},[91,80675,1649],{"class":108},[91,80677,567],{"class":566},[91,80679,118],{"class":101},[91,80681,80682,80684,80686,80688,80690,80692],{"class":93,"line":260},[91,80683,1658],{"class":108},[91,80685,1564],{"class":101},[91,80687,1583],{"class":108},[91,80689,1570],{"class":566},[91,80691,1667],{"class":108},[91,80693,118],{"class":101},[91,80695,80696],{"class":93,"line":274},[91,80697,137],{"class":101},[16,80699,1848],{},[829,80701,1851],{},{"title":87,"searchDepth":105,"depth":105,"links":80703},[],{},{"title":1516,"description":1855},{"loc":1858},[86],{"id":1866,"title":1867,"body":80709,"created":2854,"description":2855,"extension":843,"filename":2856,"meta":81526,"navigation":846,"path":2858,"seo":81527,"sitemap":81528,"stem":2861,"subject":2862,"tags":81529,"updated":2854,"volume":1863,"__hash__":2866},{"type":8,"value":80710,"toc":81523},[80711,80715,80729,80731,80735,80739,80741,80749,80933,80941,81051,81055,81057,81067,81069,81075,81113,81117,81199,81205,81207,81211,81389,81397,81519,81521],[16,80712,1872,80713,1876],{},[792,80714,1875],{},[24,80716,80717,80721,80725],{},[27,80718,1881,80719,1885],{},[31,80720,1884],{},[27,80722,1888,80723,1892],{},[31,80724,1891],{},[27,80726,1895,80727,1898],{},[31,80728,1200],{},[16,80730,1901],{},[16,80732,1904,80733,1907],{},[31,80734,1884],{},[16,80736,1910,80737,1913],{},[31,80738,1891],{},[11,80740,1917],{"id":1916},[16,80742,1920,80743,1924,80745,1927,80747,1931],{},[31,80744,1923],{},[31,80746,1923],{},[31,80748,1930],{},[82,80750,80751],{"className":1934,"code":1935,"language":1936,"meta":87,"style":87},[31,80752,80753,80769,80773,80793,80797,80807,80813,80817,80825,80829,80833,80841,80849,80857,80861,80865,80869,80879,80885,80889,80897,80905,80925],{"__ignoreMap":87},[91,80754,80755,80757,80759,80761,80763,80765,80767],{"class":93,"line":94},[91,80756,156],{"class":101},[91,80758,1945],{"class":159},[91,80760,1948],{"class":97},[91,80762,1951],{"class":97},[91,80764,166],{"class":101},[91,80766,1956],{"class":169},[91,80768,173],{"class":101},[91,80770,80771],{"class":93,"line":105},[91,80772,1963],{"class":1343},[91,80774,80775,80777,80779,80781,80783,80785,80787,80789,80791],{"class":93,"line":121},[91,80776,1968],{"class":566},[91,80778,1971],{"class":108},[91,80780,1366],{"class":566},[91,80782,1976],{"class":108},[91,80784,1235],{"class":101},[91,80786,1981],{"class":97},[91,80788,156],{"class":101},[91,80790,1986],{"class":108},[91,80792,1989],{"class":101},[91,80794,80795],{"class":93,"line":134},[91,80796,1450],{"emptyLinePlaceholder":846},[91,80798,80799,80801,80803,80805],{"class":93,"line":228},[91,80800,1998],{"class":566},[91,80802,2001],{"class":566},[91,80804,2004],{"class":97},[91,80806,2007],{"class":101},[91,80808,80809,80811],{"class":93,"line":250},[91,80810,2012],{"class":566},[91,80812,102],{"class":101},[91,80814,80815],{"class":93,"line":260},[91,80816,2019],{"class":1343},[91,80818,80819,80821,80823],{"class":93,"line":274},[91,80820,2024],{"class":566},[91,80822,2027],{"class":97},[91,80824,2030],{"class":101},[91,80826,80827],{"class":93,"line":284},[91,80828,1674],{"class":101},[91,80830,80831],{"class":93,"line":299},[91,80832,2039],{"class":1343},[91,80834,80835,80837,80839],{"class":93,"line":319},[91,80836,2044],{"class":101},[91,80838,1930],{"class":97},[91,80840,2030],{"class":101},[91,80842,80843,80845,80847],{"class":93,"line":334},[91,80844,2053],{"class":101},[91,80846,1256],{"class":566},[91,80848,2058],{"class":101},[91,80850,80851,80853,80855],{"class":93,"line":355},[91,80852,2044],{"class":101},[91,80854,2065],{"class":97},[91,80856,2068],{"class":101},[91,80858,80859],{"class":93,"line":364},[91,80860,1698],{"class":101},[91,80862,80863],{"class":93,"line":378},[91,80864,137],{"class":101},[91,80866,80867],{"class":93,"line":387},[91,80868,1450],{"emptyLinePlaceholder":846},[91,80870,80871,80873,80875,80877],{"class":93,"line":402},[91,80872,2085],{"class":97},[91,80874,2088],{"class":101},[91,80876,1179],{"class":566},[91,80878,102],{"class":101},[91,80880,80881,80883],{"class":93,"line":422},[91,80882,2097],{"class":97},[91,80884,2030],{"class":101},[91,80886,80887],{"class":93,"line":438},[91,80888,1303],{"class":101},[91,80890,80891,80893,80895],{"class":93,"line":458},[91,80892,493],{"class":101},[91,80894,1945],{"class":159},[91,80896,173],{"class":101},[91,80898,80899,80901,80903],{"class":93,"line":467},[91,80900,156],{"class":101},[91,80902,2118],{"class":159},[91,80904,173],{"class":101},[91,80906,80907,80909,80911,80913,80915,80917,80919,80921,80923],{"class":93,"line":481},[91,80908,2125],{"class":101},[91,80910,2128],{"class":159},[91,80912,2131],{"class":101},[91,80914,2134],{"class":97},[91,80916,166],{"class":101},[91,80918,2139],{"class":169},[91,80920,2142],{"class":101},[91,80922,2139],{"class":169},[91,80924,2147],{"class":101},[91,80926,80927,80929,80931],{"class":93,"line":490},[91,80928,493],{"class":101},[91,80930,2118],{"class":159},[91,80932,173],{"class":101},[16,80934,2158,80935,2162,80937,2166,80939,2169],{},[31,80936,2161],{},[31,80938,2165],{},[31,80940,2142],{},[82,80942,80943],{"className":1934,"code":2172,"language":1936,"meta":87,"style":87},[31,80944,80945,80961,80973,80987,80991,80995,81009,81013,81019,81023,81027,81039,81043],{"__ignoreMap":87},[91,80946,80947,80949,80951,80953,80955,80957,80959],{"class":93,"line":94},[91,80948,156],{"class":101},[91,80950,1945],{"class":159},[91,80952,1948],{"class":97},[91,80954,1951],{"class":97},[91,80956,166],{"class":101},[91,80958,1956],{"class":169},[91,80960,173],{"class":101},[91,80962,80963,80965,80967,80969,80971],{"class":93,"line":105},[91,80964,1968],{"class":566},[91,80966,2197],{"class":108},[91,80968,1366],{"class":566},[91,80970,2202],{"class":97},[91,80972,2205],{"class":101},[91,80974,80975,80977,80979,80981,80983,80985],{"class":93,"line":121},[91,80976,2210],{"class":1172},[91,80978,1208],{"class":566},[91,80980,1976],{"class":97},[91,80982,156],{"class":101},[91,80984,1986],{"class":108},[91,80986,173],{"class":101},[91,80988,80989],{"class":93,"line":134},[91,80990,2225],{"class":101},[91,80992,80993],{"class":93,"line":228},[91,80994,1450],{"emptyLinePlaceholder":846},[91,80996,80997,80999,81001,81003,81005,81007],{"class":93,"line":250},[91,80998,2085],{"class":97},[91,81000,795],{"class":101},[91,81002,1998],{"class":566},[91,81004,2240],{"class":101},[91,81006,1179],{"class":566},[91,81008,102],{"class":101},[91,81010,81011],{"class":93,"line":260},[91,81012,2249],{"class":1343},[91,81014,81015,81017],{"class":93,"line":274},[91,81016,2254],{"class":566},[91,81018,2257],{"class":101},[91,81020,81021],{"class":93,"line":284},[91,81022,1629],{"class":101},[91,81024,81025],{"class":93,"line":299},[91,81026,2266],{"class":1343},[91,81028,81029,81031,81033,81035,81037],{"class":93,"line":319},[91,81030,2271],{"class":101},[91,81032,1225],{"class":97},[91,81034,795],{"class":101},[91,81036,2278],{"class":169},[91,81038,1594],{"class":101},[91,81040,81041],{"class":93,"line":334},[91,81042,1303],{"class":101},[91,81044,81045,81047,81049],{"class":93,"line":355},[91,81046,493],{"class":101},[91,81048,1945],{"class":159},[91,81050,173],{"class":101},[16,81052,81053,2298],{},[31,81054,2297],{},[11,81056,2302],{"id":2301},[16,81058,2305,81059,2309,81061,2312,81063,2315,81065,2318],{},[31,81060,2308],{},[31,81062,2161],{},[31,81064,1930],{},[31,81066,2297],{},[11,81068,2322],{"id":2321},[16,81070,2325,81071,34,81073,2332],{},[31,81072,2328],{},[31,81074,2331],{},[82,81076,81077],{"className":1154,"code":2335,"language":1156,"meta":87,"style":87},[31,81078,81079,81099,81103],{"__ignoreMap":87},[91,81080,81081,81083,81085,81087,81089,81091,81093,81095,81097],{"class":93,"line":94},[91,81082,1968],{"class":566},[91,81084,1971],{"class":108},[91,81086,1366],{"class":566},[91,81088,1976],{"class":108},[91,81090,1235],{"class":101},[91,81092,1981],{"class":97},[91,81094,156],{"class":101},[91,81096,1986],{"class":108},[91,81098,1989],{"class":101},[91,81100,81101],{"class":93,"line":105},[91,81102,2362],{"class":1343},[91,81104,81105,81107,81109,81111],{"class":93,"line":121},[91,81106,2328],{"class":97},[91,81108,795],{"class":101},[91,81110,2371],{"class":169},[91,81112,2374],{"class":101},[16,81114,2158,81115,2379],{},[31,81116,2328],{},[82,81118,81119],{"className":1154,"code":2382,"language":1156,"meta":87,"style":87},[31,81120,81121,81125,81149,81153,81167,81173,81179,81191,81195],{"__ignoreMap":87},[91,81122,81123],{"class":93,"line":94},[91,81124,2389],{"class":1343},[91,81126,81127,81129,81131,81133,81135,81137,81139,81141,81143,81145,81147],{"class":93,"line":105},[91,81128,1968],{"class":566},[91,81130,1971],{"class":108},[91,81132,1366],{"class":566},[91,81134,2400],{"class":97},[91,81136,156],{"class":101},[91,81138,2405],{"class":97},[91,81140,156],{"class":101},[91,81142,1986],{"class":108},[91,81144,2412],{"class":101},[91,81146,2371],{"class":169},[91,81148,1594],{"class":101},[91,81150,81151],{"class":93,"line":121},[91,81152,1450],{"emptyLinePlaceholder":846},[91,81154,81155,81157,81159,81161,81163,81165],{"class":93,"line":134},[91,81156,2085],{"class":97},[91,81158,795],{"class":101},[91,81160,1998],{"class":566},[91,81162,2240],{"class":101},[91,81164,1179],{"class":566},[91,81166,102],{"class":101},[91,81168,81169,81171],{"class":93,"line":228},[91,81170,2439],{"class":566},[91,81172,2442],{"class":101},[91,81174,81175,81177],{"class":93,"line":250},[91,81176,2024],{"class":566},[91,81178,2449],{"class":101},[91,81180,81181,81183,81185,81187,81189],{"class":93,"line":260},[91,81182,2454],{"class":101},[91,81184,1225],{"class":97},[91,81186,795],{"class":101},[91,81188,2461],{"class":169},[91,81190,1594],{"class":101},[91,81192,81193],{"class":93,"line":274},[91,81194,1698],{"class":101},[91,81196,81197],{"class":93,"line":284},[91,81198,1303],{"class":101},[16,81200,81201,2476,81203,2479],{},[31,81202,2331],{},[31,81204,2371],{},[49,81206,2483],{"id":2482},[16,81208,81209,2489],{},[31,81210,2488],{},[82,81212,81213],{"className":1154,"code":2492,"language":1156,"meta":87,"style":87},[31,81214,81215,81227,81231,81261,81265,81269,81273,81277,81299,81305,81309,81313,81317,81321,81325,81335,81347,81351,81361,81375,81379,81385],{"__ignoreMap":87},[91,81216,81217,81219,81221,81223,81225],{"class":93,"line":94},[91,81218,2499],{"class":566},[91,81220,2502],{"class":101},[91,81222,2505],{"class":566},[91,81224,2508],{"class":169},[91,81226,118],{"class":101},[91,81228,81229],{"class":93,"line":105},[91,81230,2515],{"class":1343},[91,81232,81233,81235,81237,81239,81241,81243,81245,81247,81249,81251,81253,81255,81257,81259],{"class":93,"line":121},[91,81234,1968],{"class":566},[91,81236,2522],{"class":108},[91,81238,1208],{"class":566},[91,81240,2527],{"class":97},[91,81242,156],{"class":101},[91,81244,2405],{"class":97},[91,81246,156],{"class":101},[91,81248,1986],{"class":108},[91,81250,2538],{"class":101},[91,81252,166],{"class":566},[91,81254,2543],{"class":97},[91,81256,795],{"class":101},[91,81258,2548],{"class":169},[91,81260,1594],{"class":101},[91,81262,81263],{"class":93,"line":134},[91,81264,1450],{"emptyLinePlaceholder":846},[91,81266,81267],{"class":93,"line":228},[91,81268,2559],{"class":1343},[91,81270,81271],{"class":93,"line":250},[91,81272,2564],{"class":1343},[91,81274,81275],{"class":93,"line":260},[91,81276,2569],{"class":1343},[91,81278,81279,81281,81283,81285,81287,81289,81291,81293,81295,81297],{"class":93,"line":274},[91,81280,2574],{"class":566},[91,81282,2001],{"class":566},[91,81284,2579],{"class":97},[91,81286,795],{"class":101},[91,81288,2584],{"class":1172},[91,81290,1208],{"class":566},[91,81292,1976],{"class":97},[91,81294,156],{"class":101},[91,81296,1986],{"class":108},[91,81298,2595],{"class":101},[91,81300,81301,81303],{"class":93,"line":284},[91,81302,2600],{"class":97},[91,81304,2603],{"class":101},[91,81306,81307],{"class":93,"line":299},[91,81308,137],{"class":101},[91,81310,81311],{"class":93,"line":319},[91,81312,1450],{"emptyLinePlaceholder":846},[91,81314,81315],{"class":93,"line":334},[91,81316,2616],{"class":1343},[91,81318,81319],{"class":93,"line":355},[91,81320,2621],{"class":1343},[91,81322,81323],{"class":93,"line":364},[91,81324,2569],{"class":1343},[91,81326,81327,81329,81331,81333],{"class":93,"line":378},[91,81328,2574],{"class":566},[91,81330,2001],{"class":566},[91,81332,2634],{"class":97},[91,81334,2007],{"class":101},[91,81336,81337,81339,81341,81343,81345],{"class":93,"line":387},[91,81338,2641],{"class":566},[91,81340,1971],{"class":108},[91,81342,1366],{"class":566},[91,81344,2400],{"class":97},[91,81346,2650],{"class":101},[91,81348,81349],{"class":93,"line":402},[91,81350,2655],{"class":1343},[91,81352,81353,81355,81357,81359],{"class":93,"line":422},[91,81354,2439],{"class":566},[91,81356,2662],{"class":101},[91,81358,2665],{"class":566},[91,81360,2668],{"class":101},[91,81362,81363,81365,81367,81369,81371,81373],{"class":93,"line":438},[91,81364,2673],{"class":566},[91,81366,2676],{"class":566},[91,81368,2679],{"class":97},[91,81370,795],{"class":101},[91,81372,2684],{"class":169},[91,81374,1594],{"class":101},[91,81376,81377],{"class":93,"line":458},[91,81378,1698],{"class":101},[91,81380,81381,81383],{"class":93,"line":467},[91,81382,2695],{"class":566},[91,81384,2449],{"class":101},[91,81386,81387],{"class":93,"line":481},[91,81388,137],{"class":101},[16,81390,2704,81391,34,81393,2709,81395,2713],{},[31,81392,2328],{},[31,81394,2331],{},[31,81396,2712],{},[82,81398,81399],{"className":1934,"code":2716,"language":1936,"meta":87,"style":87},[31,81400,81401,81417,81429,81449,81457,81465,81469,81485,81497,81511],{"__ignoreMap":87},[91,81402,81403,81405,81407,81409,81411,81413,81415],{"class":93,"line":94},[91,81404,156],{"class":101},[91,81406,1945],{"class":159},[91,81408,1948],{"class":97},[91,81410,1951],{"class":97},[91,81412,166],{"class":101},[91,81414,1956],{"class":169},[91,81416,173],{"class":101},[91,81418,81419,81421,81423,81425,81427],{"class":93,"line":105},[91,81420,2499],{"class":566},[91,81422,2741],{"class":101},[91,81424,2505],{"class":566},[91,81426,2746],{"class":169},[91,81428,118],{"class":101},[91,81430,81431,81433,81435,81437,81439,81441,81443,81445,81447],{"class":93,"line":121},[91,81432,1968],{"class":566},[91,81434,1971],{"class":108},[91,81436,1366],{"class":566},[91,81438,1976],{"class":108},[91,81440,1235],{"class":101},[91,81442,1981],{"class":97},[91,81444,156],{"class":101},[91,81446,1986],{"class":108},[91,81448,1989],{"class":101},[91,81450,81451,81453,81455],{"class":93,"line":134},[91,81452,2773],{"class":97},[91,81454,2776],{"class":101},[91,81456,2779],{"class":1343},[91,81458,81459,81461,81463],{"class":93,"line":228},[91,81460,493],{"class":101},[91,81462,1945],{"class":159},[91,81464,173],{"class":101},[91,81466,81467],{"class":93,"line":250},[91,81468,1450],{"emptyLinePlaceholder":846},[91,81470,81471,81473,81475,81477,81479,81481,81483],{"class":93,"line":260},[91,81472,156],{"class":101},[91,81474,1945],{"class":159},[91,81476,1948],{"class":97},[91,81478,1951],{"class":97},[91,81480,166],{"class":101},[91,81482,1956],{"class":169},[91,81484,173],{"class":101},[91,81486,81487,81489,81491,81493,81495],{"class":93,"line":274},[91,81488,2499],{"class":566},[91,81490,2814],{"class":101},[91,81492,2505],{"class":566},[91,81494,2746],{"class":169},[91,81496,118],{"class":101},[91,81498,81499,81501,81503,81505,81507,81509],{"class":93,"line":284},[91,81500,1968],{"class":566},[91,81502,1971],{"class":108},[91,81504,1366],{"class":566},[91,81506,2634],{"class":97},[91,81508,2833],{"class":101},[91,81510,2836],{"class":1343},[91,81512,81513,81515,81517],{"class":93,"line":299},[91,81514,493],{"class":101},[91,81516,1945],{"class":159},[91,81518,173],{"class":101},[16,81520,2847],{},[829,81522,2850],{},{"title":87,"searchDepth":105,"depth":105,"links":81524},[81525],{"id":2482,"depth":105,"text":2483},{},{"title":1867,"description":2855},{"loc":2858},[1936,2864,2865],{"id":2868,"title":2869,"body":81531,"created":4430,"description":4431,"extension":843,"filename":4432,"meta":82744,"navigation":846,"path":4434,"seo":82745,"sitemap":82746,"stem":4437,"subject":4438,"tags":82747,"updated":4430,"volume":4441,"__hash__":4442},{"type":8,"value":81532,"toc":82731},[81533,81535,81543,81545,81547,81549,81563,81567,81569,81571,81573,81578,81590,81594,81604,81606,81612,81648,81654,81662,81667,81677,81705,81707,81709,81713,81757,81763,81887,81889,81891,81897,81929,81933,82001,82007,82009,82015,82091,82095,82127,82131,82159,82161,82163,82165,82205,82213,82215,82275,82277,82345,82347,82349,82351,82379,82381,82383,82385,82427,82431,82495,82501,82521,82523,82525,82527,82532,82534,82539,82541,82633,82637,82642,82646,82659,82663,82669,82671,82673,82675,82707,82711,82727,82729],[16,81534,2874],{},[16,81536,2877,81537,34,81539,2884,81541,2888],{},[31,81538,2880],{},[31,81540,2883],{},[31,81542,2887],{},[49,81544,2892],{"id":2891},[16,81546,2895],{},[16,81548,2898],{},[24,81550,81551,81553,81555,81557,81559,81561],{},[27,81552,2903],{},[27,81554,2906],{},[27,81556,2909],{},[27,81558,2912],{},[27,81560,2915],{},[27,81562,2918],{},[16,81564,2921,81565,2925],{},[31,81566,2924],{},[49,81568,2929],{"id":2928},[16,81570,2932],{},[16,81572,2935],{},[82,81574,81576],{"className":81575,"code":2939,"language":1099,"meta":87},[1097],[31,81577,2939],{"__ignoreMap":87},[16,81579,81580,2947,81582,2951,81584,2955,81586,2959,81588,2963],{},[31,81581,2946],{},[31,81583,2950],{},[31,81585,2954],{},[31,81587,2958],{},[31,81589,2962],{},[16,81591,81592],{},[19,81593],{"alt":2968,"src":2969},[16,81595,2972,81596,2975,81598,2978,81600,2982,81602,2985],{},[31,81597,2883],{},[31,81599,2880],{},[31,81601,2981],{},[31,81603,2887],{},[49,81605,2989],{"id":2988},[16,81607,2992,81608,2978,81610,2997],{},[31,81609,2981],{},[31,81611,2880],{},[812,81613,81614,81624],{},[3001,81615,81616],{},[3004,81617,81618,81620,81622],{},[3007,81619,3009],{},[3007,81621,3012],{},[3007,81623,3015],{},[3017,81625,81626,81636],{},[3004,81627,81628,81632,81634],{},[3022,81629,81630],{},[31,81631,2981],{},[3022,81633,3028],{},[3022,81635,3031],{},[3004,81637,81638,81642,81644],{},[3022,81639,81640],{},[31,81641,2880],{},[3022,81643,3040],{},[3022,81645,81646,3045],{},[31,81647,2981],{},[16,81649,3048,81650,3051,81652,3054],{},[31,81651,2981],{},[31,81653,2880],{},[16,81655,81656,3059,81658,3063,81660,3066],{},[31,81657,2880],{},[31,81659,3062],{},[31,81661,2883],{},[82,81663,81665],{"className":81664,"code":3070,"language":1099,"meta":87},[1097],[31,81666,3070],{"__ignoreMap":87},[16,81668,3075,81669,3078,81671,3081,81673,3084,81675,3088],{},[31,81670,2880],{},[31,81672,2883],{},[31,81674,3062],{},[31,81676,3087],{},[82,81678,81679],{"className":1000,"code":3091,"language":1002,"meta":87,"style":87},[31,81680,81681,81685,81689,81693,81697,81701],{"__ignoreMap":87},[91,81682,81683],{"class":93,"line":94},[91,81684,3098],{},[91,81686,81687],{"class":93,"line":105},[91,81688,3103],{},[91,81690,81691],{"class":93,"line":121},[91,81692,3108],{},[91,81694,81695],{"class":93,"line":134},[91,81696,137],{},[91,81698,81699],{"class":93,"line":228},[91,81700,1450],{"emptyLinePlaceholder":846},[91,81702,81703],{"class":93,"line":250},[91,81704,3121],{},[16,81706,3124],{},[49,81708,3128],{"id":3127},[16,81710,3131,81711,3135],{},[31,81712,3134],{},[82,81714,81715],{"className":1000,"code":3138,"language":1002,"meta":87,"style":87},[31,81716,81717,81721,81725,81729,81733,81737,81741,81745,81749,81753],{"__ignoreMap":87},[91,81718,81719],{"class":93,"line":94},[91,81720,3145],{},[91,81722,81723],{"class":93,"line":105},[91,81724,3150],{},[91,81726,81727],{"class":93,"line":121},[91,81728,1450],{"emptyLinePlaceholder":846},[91,81730,81731],{"class":93,"line":134},[91,81732,3159],{},[91,81734,81735],{"class":93,"line":228},[91,81736,1450],{"emptyLinePlaceholder":846},[91,81738,81739],{"class":93,"line":250},[91,81740,3168],{},[91,81742,81743],{"class":93,"line":260},[91,81744,3173],{},[91,81746,81747],{"class":93,"line":274},[91,81748,137],{},[91,81750,81751],{"class":93,"line":284},[91,81752,1450],{"emptyLinePlaceholder":846},[91,81754,81755],{"class":93,"line":299},[91,81756,3186],{},[16,81758,81759,3191,81761,3194],{},[31,81760,2950],{},[31,81762,2954],{},[82,81764,81765],{"className":1000,"code":3197,"language":1002,"meta":87,"style":87},[31,81766,81767,81771,81775,81779,81783,81787,81791,81795,81799,81803,81807,81811,81815,81819,81823,81827,81831,81835,81839,81843,81847,81851,81855,81859,81863,81867,81871,81875,81879,81883],{"__ignoreMap":87},[91,81768,81769],{"class":93,"line":94},[91,81770,3204],{},[91,81772,81773],{"class":93,"line":105},[91,81774,3209],{},[91,81776,81777],{"class":93,"line":121},[91,81778,3214],{},[91,81780,81781],{"class":93,"line":134},[91,81782,3219],{},[91,81784,81785],{"class":93,"line":228},[91,81786,1693],{},[91,81788,81789],{"class":93,"line":250},[91,81790,1450],{"emptyLinePlaceholder":846},[91,81792,81793],{"class":93,"line":260},[91,81794,3232],{},[91,81796,81797],{"class":93,"line":274},[91,81798,3237],{},[91,81800,81801],{"class":93,"line":284},[91,81802,3242],{},[91,81804,81805],{"class":93,"line":299},[91,81806,1693],{},[91,81808,81809],{"class":93,"line":319},[91,81810,1450],{"emptyLinePlaceholder":846},[91,81812,81813],{"class":93,"line":334},[91,81814,3255],{},[91,81816,81817],{"class":93,"line":355},[91,81818,3237],{},[91,81820,81821],{"class":93,"line":364},[91,81822,3242],{},[91,81824,81825],{"class":93,"line":378},[91,81826,1450],{"emptyLinePlaceholder":846},[91,81828,81829],{"class":93,"line":387},[91,81830,3272],{},[91,81832,81833],{"class":93,"line":402},[91,81834,3277],{},[91,81836,81837],{"class":93,"line":422},[91,81838,3282],{},[91,81840,81841],{"class":93,"line":438},[91,81842,3287],{},[91,81844,81845],{"class":93,"line":458},[91,81846,3292],{},[91,81848,81849],{"class":93,"line":467},[91,81850,3297],{},[91,81852,81853],{"class":93,"line":481},[91,81854,3302],{},[91,81856,81857],{"class":93,"line":490},[91,81858,3307],{},[91,81860,81861],{"class":93,"line":3310},[91,81862,1450],{"emptyLinePlaceholder":846},[91,81864,81865],{"class":93,"line":3315},[91,81866,3318],{},[91,81868,81869],{"class":93,"line":3321},[91,81870,3324],{},[91,81872,81873],{"class":93,"line":3327},[91,81874,3330],{},[91,81876,81877],{"class":93,"line":3333},[91,81878,3307],{},[91,81880,81881],{"class":93,"line":3338},[91,81882,1693],{},[91,81884,81885],{"class":93,"line":3343},[91,81886,137],{},[16,81888,3348],{},[49,81890,3352],{"id":3351},[16,81892,3355,81893,3358,81895,3362],{},[31,81894,2880],{},[31,81896,3361],{},[82,81898,81899],{"className":1000,"code":3365,"language":1002,"meta":87,"style":87},[31,81900,81901,81905,81909,81913,81917,81921,81925],{"__ignoreMap":87},[91,81902,81903],{"class":93,"line":94},[91,81904,3372],{},[91,81906,81907],{"class":93,"line":105},[91,81908,3121],{},[91,81910,81911],{"class":93,"line":121},[91,81912,1450],{"emptyLinePlaceholder":846},[91,81914,81915],{"class":93,"line":134},[91,81916,3385],{},[91,81918,81919],{"class":93,"line":228},[91,81920,3390],{},[91,81922,81923],{"class":93,"line":250},[91,81924,1450],{"emptyLinePlaceholder":846},[91,81926,81927],{"class":93,"line":260},[91,81928,3399],{},[16,81930,3402,81931,3406],{},[31,81932,3405],{},[82,81934,81935],{"className":1000,"code":3409,"language":1002,"meta":87,"style":87},[31,81936,81937,81941,81945,81949,81953,81957,81961,81965,81969,81973,81977,81981,81985,81989,81993,81997],{"__ignoreMap":87},[91,81938,81939],{"class":93,"line":94},[91,81940,3416],{},[91,81942,81943],{"class":93,"line":105},[91,81944,3421],{},[91,81946,81947],{"class":93,"line":121},[91,81948,3426],{},[91,81950,81951],{"class":93,"line":134},[91,81952,3431],{},[91,81954,81955],{"class":93,"line":228},[91,81956,3436],{},[91,81958,81959],{"class":93,"line":250},[91,81960,1450],{"emptyLinePlaceholder":846},[91,81962,81963],{"class":93,"line":260},[91,81964,3445],{},[91,81966,81967],{"class":93,"line":274},[91,81968,3450],{},[91,81970,81971],{"class":93,"line":284},[91,81972,3307],{},[91,81974,81975],{"class":93,"line":299},[91,81976,1450],{"emptyLinePlaceholder":846},[91,81978,81979],{"class":93,"line":319},[91,81980,3463],{},[91,81982,81983],{"class":93,"line":334},[91,81984,3468],{},[91,81986,81987],{"class":93,"line":355},[91,81988,3307],{},[91,81990,81991],{"class":93,"line":364},[91,81992,3477],{},[91,81994,81995],{"class":93,"line":378},[91,81996,3482],{},[91,81998,81999],{"class":93,"line":387},[91,82000,3487],{},[16,82002,82003,3493,82005,3497],{},[31,82004,3492],{},[31,82006,3496],{},[49,82008,3501],{"id":3500},[16,82010,3504,82011,3508,82013,3512],{},[31,82012,3507],{},[31,82014,3511],{},[82,82016,82017],{"className":1000,"code":3515,"language":1002,"meta":87,"style":87},[31,82018,82019,82023,82027,82031,82035,82039,82043,82047,82051,82055,82059,82063,82067,82071,82075,82079,82083,82087],{"__ignoreMap":87},[91,82020,82021],{"class":93,"line":94},[91,82022,3522],{},[91,82024,82025],{"class":93,"line":105},[91,82026,3527],{},[91,82028,82029],{"class":93,"line":121},[91,82030,3532],{},[91,82032,82033],{"class":93,"line":134},[91,82034,1450],{"emptyLinePlaceholder":846},[91,82036,82037],{"class":93,"line":228},[91,82038,3541],{},[91,82040,82041],{"class":93,"line":250},[91,82042,3546],{},[91,82044,82045],{"class":93,"line":260},[91,82046,3551],{},[91,82048,82049],{"class":93,"line":274},[91,82050,3556],{},[91,82052,82053],{"class":93,"line":284},[91,82054,3561],{},[91,82056,82057],{"class":93,"line":299},[91,82058,3566],{},[91,82060,82061],{"class":93,"line":319},[91,82062,3571],{},[91,82064,82065],{"class":93,"line":334},[91,82066,1450],{"emptyLinePlaceholder":846},[91,82068,82069],{"class":93,"line":355},[91,82070,3580],{},[91,82072,82073],{"class":93,"line":364},[91,82074,3585],{},[91,82076,82077],{"class":93,"line":378},[91,82078,3590],{},[91,82080,82081],{"class":93,"line":387},[91,82082,3595],{},[91,82084,82085],{"class":93,"line":402},[91,82086,3561],{},[91,82088,82089],{"class":93,"line":422},[91,82090,137],{},[16,82092,3606,82093,3610],{},[31,82094,3609],{},[82,82096,82097],{"className":1000,"code":3613,"language":1002,"meta":87,"style":87},[31,82098,82099,82103,82107,82111,82115,82119,82123],{"__ignoreMap":87},[91,82100,82101],{"class":93,"line":94},[91,82102,3620],{},[91,82104,82105],{"class":93,"line":105},[91,82106,3625],{},[91,82108,82109],{"class":93,"line":121},[91,82110,1450],{"emptyLinePlaceholder":846},[91,82112,82113],{"class":93,"line":134},[91,82114,3634],{},[91,82116,82117],{"class":93,"line":228},[91,82118,3639],{},[91,82120,82121],{"class":93,"line":250},[91,82122,1693],{},[91,82124,82125],{"class":93,"line":260},[91,82126,137],{},[16,82128,3650,82129,3654],{},[31,82130,3653],{},[82,82132,82133],{"className":1000,"code":3657,"language":1002,"meta":87,"style":87},[31,82134,82135,82139,82143,82147,82151,82155],{"__ignoreMap":87},[91,82136,82137],{"class":93,"line":94},[91,82138,3664],{},[91,82140,82141],{"class":93,"line":105},[91,82142,3669],{},[91,82144,82145],{"class":93,"line":121},[91,82146,3674],{},[91,82148,82149],{"class":93,"line":134},[91,82150,3679],{},[91,82152,82153],{"class":93,"line":228},[91,82154,3684],{},[91,82156,82157],{"class":93,"line":250},[91,82158,137],{},[16,82160,3691],{},[49,82162,3695],{"id":3694},[16,82164,3698],{},[82,82166,82167],{"className":970,"code":3701,"language":972,"meta":87,"style":87},[31,82168,82169,82173,82177,82181,82185,82189,82193,82197,82201],{"__ignoreMap":87},[91,82170,82171],{"class":93,"line":94},[91,82172,3708],{},[91,82174,82175],{"class":93,"line":105},[91,82176,1450],{"emptyLinePlaceholder":846},[91,82178,82179],{"class":93,"line":121},[91,82180,3717],{},[91,82182,82183],{"class":93,"line":134},[91,82184,3722],{},[91,82186,82187],{"class":93,"line":228},[91,82188,3727],{},[91,82190,82191],{"class":93,"line":250},[91,82192,1450],{"emptyLinePlaceholder":846},[91,82194,82195],{"class":93,"line":260},[91,82196,3717],{},[91,82198,82199],{"class":93,"line":274},[91,82200,3740],{},[91,82202,82203],{"class":93,"line":284},[91,82204,3745],{},[16,82206,3748,82207,3752,82209,3756,82211,3760],{},[31,82208,3751],{},[31,82210,3755],{},[31,82212,3759],{},[16,82214,3763],{},[82,82216,82217],{"className":1000,"code":3766,"language":1002,"meta":87,"style":87},[31,82218,82219,82223,82227,82231,82235,82239,82243,82247,82251,82255,82259,82263,82267,82271],{"__ignoreMap":87},[91,82220,82221],{"class":93,"line":94},[91,82222,3773],{},[91,82224,82225],{"class":93,"line":105},[91,82226,3778],{},[91,82228,82229],{"class":93,"line":121},[91,82230,3783],{},[91,82232,82233],{"class":93,"line":134},[91,82234,3788],{},[91,82236,82237],{"class":93,"line":228},[91,82238,3793],{},[91,82240,82241],{"class":93,"line":250},[91,82242,137],{},[91,82244,82245],{"class":93,"line":260},[91,82246,1450],{"emptyLinePlaceholder":846},[91,82248,82249],{"class":93,"line":274},[91,82250,3806],{},[91,82252,82253],{"class":93,"line":284},[91,82254,3811],{},[91,82256,82257],{"class":93,"line":299},[91,82258,3783],{},[91,82260,82261],{"class":93,"line":319},[91,82262,3820],{},[91,82264,82265],{"class":93,"line":334},[91,82266,3825],{},[91,82268,82269],{"class":93,"line":355},[91,82270,3561],{},[91,82272,82273],{"class":93,"line":364},[91,82274,137],{},[16,82276,3836],{},[82,82278,82279],{"className":1000,"code":3839,"language":1002,"meta":87,"style":87},[31,82280,82281,82285,82289,82293,82297,82301,82305,82309,82313,82317,82321,82325,82329,82333,82337,82341],{"__ignoreMap":87},[91,82282,82283],{"class":93,"line":94},[91,82284,3846],{},[91,82286,82287],{"class":93,"line":105},[91,82288,3851],{},[91,82290,82291],{"class":93,"line":121},[91,82292,3856],{},[91,82294,82295],{"class":93,"line":134},[91,82296,3861],{},[91,82298,82299],{"class":93,"line":228},[91,82300,3866],{},[91,82302,82303],{"class":93,"line":250},[91,82304,3871],{},[91,82306,82307],{"class":93,"line":260},[91,82308,1450],{"emptyLinePlaceholder":846},[91,82310,82311],{"class":93,"line":274},[91,82312,3880],{},[91,82314,82315],{"class":93,"line":284},[91,82316,3885],{},[91,82318,82319],{"class":93,"line":299},[91,82320,3890],{},[91,82322,82323],{"class":93,"line":319},[91,82324,3895],{},[91,82326,82327],{"class":93,"line":334},[91,82328,3900],{},[91,82330,82331],{"class":93,"line":355},[91,82332,3330],{},[91,82334,82335],{"class":93,"line":364},[91,82336,3307],{},[91,82338,82339],{"class":93,"line":378},[91,82340,1693],{},[91,82342,82343],{"class":93,"line":387},[91,82344,137],{},[49,82346,3920],{"id":3919},[16,82348,3923],{},[16,82350,3926],{},[812,82352,82353,82361],{},[3001,82354,82355],{},[3004,82356,82357,82359],{},[3007,82358,3935],{},[3007,82360,3938],{},[3017,82362,82363,82373],{},[3004,82364,82365,82369],{},[3022,82366,82367],{},[19,82368],{"alt":3947,"src":3948},[3022,82370,82371],{},[19,82372],{"alt":3953,"src":3954},[3004,82374,82375,82377],{},[3022,82376,3959],{},[3022,82378,3962],{},[16,82380,3965],{},[49,82382,3969],{"id":3968},[16,82384,3972],{},[812,82386,82387,82397],{},[3001,82388,82389],{},[3004,82390,82391,82393,82395],{},[3007,82392,3009],{},[3007,82394,3983],{},[3007,82396,3986],{},[3017,82398,82399,82407,82419],{},[3004,82400,82401,82403,82405],{},[3022,82402,3993],{},[3022,82404,3996],{},[3022,82406,3999],{},[3004,82408,82409,82411,82415],{},[3022,82410,4004],{},[3022,82412,82413,4009],{},[31,82414,2880],{},[3022,82416,82417],{},[31,82418,4014],{},[3004,82420,82421,82423,82425],{},[3022,82422,4019],{},[3022,82424,4022],{},[3022,82426,4025],{},[16,82428,4028,82429,4032],{},[31,82430,4031],{},[82,82432,82433],{"className":1000,"code":4035,"language":1002,"meta":87,"style":87},[31,82434,82435,82439,82443,82447,82451,82455,82459,82463,82467,82471,82475,82479,82483,82487,82491],{"__ignoreMap":87},[91,82436,82437],{"class":93,"line":94},[91,82438,4042],{},[91,82440,82441],{"class":93,"line":105},[91,82442,4047],{},[91,82444,82445],{"class":93,"line":121},[91,82446,4052],{},[91,82448,82449],{"class":93,"line":134},[91,82450,4057],{},[91,82452,82453],{"class":93,"line":228},[91,82454,4062],{},[91,82456,82457],{"class":93,"line":250},[91,82458,4067],{},[91,82460,82461],{"class":93,"line":260},[91,82462,1450],{"emptyLinePlaceholder":846},[91,82464,82465],{"class":93,"line":274},[91,82466,4076],{},[91,82468,82469],{"class":93,"line":284},[91,82470,4081],{},[91,82472,82473],{"class":93,"line":299},[91,82474,4086],{},[91,82476,82477],{"class":93,"line":319},[91,82478,4091],{},[91,82480,82481],{"class":93,"line":334},[91,82482,1693],{},[91,82484,82485],{"class":93,"line":355},[91,82486,1450],{"emptyLinePlaceholder":846},[91,82488,82489],{"class":93,"line":364},[91,82490,4104],{},[91,82492,82493],{"class":93,"line":378},[91,82494,137],{},[16,82496,4111,82497,4115,82499,4119],{},[31,82498,4114],{},[31,82500,4118],{},[82,82502,82503],{"className":1000,"code":4122,"language":1002,"meta":87,"style":87},[31,82504,82505,82509,82513,82517],{"__ignoreMap":87},[91,82506,82507],{"class":93,"line":94},[91,82508,4129],{},[91,82510,82511],{"class":93,"line":105},[91,82512,4134],{},[91,82514,82515],{"class":93,"line":121},[91,82516,4139],{},[91,82518,82519],{"class":93,"line":134},[91,82520,3487],{},[16,82522,4146],{},[49,82524,4150],{"id":4149},[16,82526,4153],{},[82,82528,82530],{"className":82529,"code":4157,"language":1099,"meta":87},[1097],[31,82531,4157],{"__ignoreMap":87},[16,82533,4162],{},[82,82535,82537],{"className":82536,"code":4166,"language":1099,"meta":87},[1097],[31,82538,4166],{"__ignoreMap":87},[16,82540,4171],{},[82,82542,82543],{"className":1000,"code":4174,"language":1002,"meta":87,"style":87},[31,82544,82545,82549,82553,82557,82561,82565,82569,82573,82577,82581,82585,82589,82593,82597,82601,82605,82609,82613,82617,82621,82625,82629],{"__ignoreMap":87},[91,82546,82547],{"class":93,"line":94},[91,82548,4181],{},[91,82550,82551],{"class":93,"line":105},[91,82552,4186],{},[91,82554,82555],{"class":93,"line":121},[91,82556,4191],{},[91,82558,82559],{"class":93,"line":134},[91,82560,4196],{},[91,82562,82563],{"class":93,"line":228},[91,82564,4201],{},[91,82566,82567],{"class":93,"line":250},[91,82568,4206],{},[91,82570,82571],{"class":93,"line":260},[91,82572,1450],{"emptyLinePlaceholder":846},[91,82574,82575],{"class":93,"line":274},[91,82576,4215],{},[91,82578,82579],{"class":93,"line":284},[91,82580,4220],{},[91,82582,82583],{"class":93,"line":299},[91,82584,4225],{},[91,82586,82587],{"class":93,"line":319},[91,82588,4230],{},[91,82590,82591],{"class":93,"line":334},[91,82592,4235],{},[91,82594,82595],{"class":93,"line":355},[91,82596,1693],{},[91,82598,82599],{"class":93,"line":364},[91,82600,1450],{"emptyLinePlaceholder":846},[91,82602,82603],{"class":93,"line":378},[91,82604,4248],{},[91,82606,82607],{"class":93,"line":387},[91,82608,1450],{"emptyLinePlaceholder":846},[91,82610,82611],{"class":93,"line":402},[91,82612,4257],{},[91,82614,82615],{"class":93,"line":422},[91,82616,4262],{},[91,82618,82619],{"class":93,"line":438},[91,82620,4267],{},[91,82622,82623],{"class":93,"line":458},[91,82624,4272],{},[91,82626,82627],{"class":93,"line":467},[91,82628,1693],{},[91,82630,82631],{"class":93,"line":481},[91,82632,137],{},[16,82634,4283,82635,4287],{},[31,82636,4286],{},[82,82638,82640],{"className":82639,"code":4291,"language":1099,"meta":87},[1097],[31,82641,4291],{"__ignoreMap":87},[16,82643,4296,82644,4299],{},[31,82645,4118],{},[1112,82647,82648],{},[16,82649,4304,82650,4311,82653,4316,82656],{},[4306,82651,4308],{"href":4308,"rel":82652},[4310],[4306,82654,4314],{"href":4314,"rel":82655},[4310],[4306,82657,4319],{"href":4319,"rel":82658},[4310],[16,82660,82661],{},[19,82662],{"alt":4325,"src":4326},[16,82664,4329,82665,4332,82667,4336],{},[31,82666,4286],{},[31,82668,4335],{},[49,82670,4340],{"id":4339},[16,82672,4343],{},[16,82674,4346],{},[82,82676,82677],{"className":1000,"code":4349,"language":1002,"meta":87,"style":87},[31,82678,82679,82683,82687,82691,82695,82699,82703],{"__ignoreMap":87},[91,82680,82681],{"class":93,"line":94},[91,82682,4356],{},[91,82684,82685],{"class":93,"line":105},[91,82686,4361],{},[91,82688,82689],{"class":93,"line":121},[91,82690,4366],{},[91,82692,82693],{"class":93,"line":134},[91,82694,1693],{},[91,82696,82697],{"class":93,"line":228},[91,82698,4375],{},[91,82700,82701],{"class":93,"line":250},[91,82702,4380],{},[91,82704,82705],{"class":93,"line":260},[91,82706,1693],{},[16,82708,4387,82709,4391],{},[31,82710,4390],{},[82,82712,82713],{"className":1000,"code":4394,"language":1002,"meta":87,"style":87},[31,82714,82715,82719,82723],{"__ignoreMap":87},[91,82716,82717],{"class":93,"line":94},[91,82718,4401],{},[91,82720,82721],{"class":93,"line":105},[91,82722,4406],{},[91,82724,82725],{"class":93,"line":121},[91,82726,137],{},[16,82728,4413],{},[829,82730,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":82732},[82733,82734,82735,82736,82737,82738,82739,82740,82741,82742,82743],{"id":2891,"depth":105,"text":2892},{"id":2928,"depth":105,"text":2929},{"id":2988,"depth":105,"text":2989},{"id":3127,"depth":105,"text":3128},{"id":3351,"depth":105,"text":3352},{"id":3500,"depth":105,"text":3501},{"id":3694,"depth":105,"text":3695},{"id":3919,"depth":105,"text":3920},{"id":3968,"depth":105,"text":3969},{"id":4149,"depth":105,"text":4150},{"id":4339,"depth":105,"text":4340},{},{"title":2869,"description":4431},{"loc":4434},[1511,4440,1002,1503],{"id":4444,"title":4445,"body":82749,"created":4560,"description":4561,"extension":843,"filename":4562,"meta":82838,"navigation":846,"path":4564,"seo":82839,"sitemap":82840,"stem":4567,"subject":4438,"tags":82841,"updated":4560,"volume":1863,"__hash__":4570},{"type":8,"value":82750,"toc":82836},[82751,82799,82805,82807,82812,82814,82824,82832,82834],[82,82752,82753],{"className":1000,"code":4450,"language":1002,"meta":87,"style":87},[31,82754,82755,82759,82763,82767,82771,82775,82779,82783,82787,82791,82795],{"__ignoreMap":87},[91,82756,82757],{"class":93,"line":94},[91,82758,4457],{},[91,82760,82761],{"class":93,"line":105},[91,82762,4462],{},[91,82764,82765],{"class":93,"line":121},[91,82766,4467],{},[91,82768,82769],{"class":93,"line":134},[91,82770,4472],{},[91,82772,82773],{"class":93,"line":228},[91,82774,4477],{},[91,82776,82777],{"class":93,"line":250},[91,82778,3307],{},[91,82780,82781],{"class":93,"line":260},[91,82782,1693],{},[91,82784,82785],{"class":93,"line":274},[91,82786,4490],{},[91,82788,82789],{"class":93,"line":284},[91,82790,4495],{},[91,82792,82793],{"class":93,"line":299},[91,82794,4500],{},[91,82796,82797],{"class":93,"line":319},[91,82798,137],{},[16,82800,4507,82801,4511,82803,4515],{},[31,82802,4510],{},[31,82804,4514],{},[16,82806,4518],{},[16,82808,82809],{},[4306,82810,4525],{"href":4523,"rel":82811},[4310],[16,82813,4528],{},[4530,82815,82816,82820],{},[27,82817,82818,4537],{},[31,82819,4536],{},[27,82821,82822,4543],{},[31,82823,4542],{},[82,82825,82826],{"className":1000,"code":4546,"language":1002,"meta":87,"style":87},[31,82827,82828],{"__ignoreMap":87},[91,82829,82830],{"class":93,"line":94},[91,82831,4546],{},[16,82833,4555],{},[829,82835,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":82837},[],{},{"title":4445,"description":4561},{"loc":4564},[4438,4569],{"id":4572,"title":4573,"body":82843,"created":4945,"description":4946,"extension":843,"filename":4947,"meta":83111,"navigation":846,"path":4949,"seo":83112,"sitemap":83113,"stem":4952,"subject":4438,"tags":83114,"updated":4945,"volume":853,"__hash__":4955},{"type":8,"value":82844,"toc":83103},[82845,82847,82851,82855,82857,82859,82889,82893,82895,82897,82901,82905,82993,82995,82997,82999,83005,83011,83013,83017,83029,83033,83093,83101],[1112,82846],{"description":4578,"host":4579,"image":4580,"title":4581,"url":4582},[16,82848,82849],{},[19,82850],{"alt":87,"src":4587},[16,82852,4590,82853,4594],{},[31,82854,4593],{},[49,82856,4598],{"id":4597},[16,82858,4601],{},[24,82860,82861,82865,82871,82881,82885],{},[27,82862,82863,4609],{},[792,82864,4608],{},[27,82866,82867,4619],{},[792,82868,4614,82869,4618],{},[31,82870,4617],{},[27,82872,82873,112,82875,4628,82877,64,82879,4635],{},[792,82874,4624],{},[31,82876,4627],{},[31,82878,4631],{},[31,82880,4634],{},[27,82882,82883,4641],{},[792,82884,4640],{},[27,82886,82887,4647],{},[792,82888,4646],{},[16,82890,4650,82891,4654],{},[31,82892,4653],{},[49,82894,4658],{"id":4657},[1112,82896],{"description":4661,"host":4662,"image":4663,"title":4664,"url":4665,"favicon":4666},[16,82898,82899],{},[19,82900],{"alt":87,"src":4671},[16,82902,4674,82903,4678],{},[792,82904,4677],{},[82,82906,82907],{"className":1000,"code":4681,"language":1002,"meta":87,"style":87},[31,82908,82909,82913,82917,82921,82925,82929,82933,82937,82941,82945,82949,82953,82957,82961,82965,82969,82973,82977,82981,82985,82989],{"__ignoreMap":87},[91,82910,82911],{"class":93,"line":94},[91,82912,4688],{},[91,82914,82915],{"class":93,"line":105},[91,82916,4693],{},[91,82918,82919],{"class":93,"line":121},[91,82920,4698],{},[91,82922,82923],{"class":93,"line":134},[91,82924,4703],{},[91,82926,82927],{"class":93,"line":228},[91,82928,1674],{},[91,82930,82931],{"class":93,"line":250},[91,82932,4712],{},[91,82934,82935],{"class":93,"line":260},[91,82936,4717],{},[91,82938,82939],{"class":93,"line":274},[91,82940,4722],{},[91,82942,82943],{"class":93,"line":284},[91,82944,1674],{},[91,82946,82947],{"class":93,"line":299},[91,82948,4731],{},[91,82950,82951],{"class":93,"line":319},[91,82952,4736],{},[91,82954,82955],{"class":93,"line":334},[91,82956,4741],{},[91,82958,82959],{"class":93,"line":355},[91,82960,4746],{},[91,82962,82963],{"class":93,"line":364},[91,82964,4751],{},[91,82966,82967],{"class":93,"line":378},[91,82968,4756],{},[91,82970,82971],{"class":93,"line":387},[91,82972,4761],{},[91,82974,82975],{"class":93,"line":402},[91,82976,1674],{},[91,82978,82979],{"class":93,"line":422},[91,82980,4770],{},[91,82982,82983],{"class":93,"line":438},[91,82984,4775],{},[91,82986,82987],{"class":93,"line":458},[91,82988,1693],{},[91,82990,82991],{"class":93,"line":467},[91,82992,137],{},[49,82994,4787],{"id":4786},[16,82996,4790],{},[757,82998,4794],{"id":4793},[16,83000,4797,83001,4801,83003,4805],{},[31,83002,4800],{},[31,83004,4804],{},[16,83006,4808,83007,4812,83009,4816],{},[31,83008,4811],{},[31,83010,4815],{},[757,83012,4820],{"id":4819},[16,83014,4823,83015,4827],{},[31,83016,4826],{},[82,83018,83019],{"className":970,"code":4830,"language":972,"meta":87,"style":87},[31,83020,83021,83025],{"__ignoreMap":87},[91,83022,83023],{"class":93,"line":94},[91,83024,4837],{},[91,83026,83027],{"class":93,"line":105},[91,83028,4842],{},[16,83030,4845,83031,4848],{},[31,83032,4804],{},[82,83034,83035],{"className":1000,"code":4851,"language":1002,"meta":87,"style":87},[31,83036,83037,83041,83045,83049,83053,83057,83061,83065,83069,83073,83077,83081,83085,83089],{"__ignoreMap":87},[91,83038,83039],{"class":93,"line":94},[91,83040,4858],{},[91,83042,83043],{"class":93,"line":105},[91,83044,4863],{},[91,83046,83047],{"class":93,"line":121},[91,83048,4868],{},[91,83050,83051],{"class":93,"line":134},[91,83052,4873],{},[91,83054,83055],{"class":93,"line":228},[91,83056,1450],{"emptyLinePlaceholder":846},[91,83058,83059],{"class":93,"line":250},[91,83060,4882],{},[91,83062,83063],{"class":93,"line":260},[91,83064,4887],{},[91,83066,83067],{"class":93,"line":274},[91,83068,4892],{},[91,83070,83071],{"class":93,"line":284},[91,83072,4897],{},[91,83074,83075],{"class":93,"line":299},[91,83076,4902],{},[91,83078,83079],{"class":93,"line":319},[91,83080,4907],{},[91,83082,83083],{"class":93,"line":334},[91,83084,3561],{},[91,83086,83087],{"class":93,"line":355},[91,83088,4916],{},[91,83090,83091],{"class":93,"line":364},[91,83092,137],{},[16,83094,83095,4926,83097,4930,83099,4934],{},[31,83096,4925],{},[31,83098,4929],{},[31,83100,4933],{},[829,83102,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":83104},[83105,83106,83107],{"id":4597,"depth":105,"text":4598},{"id":4657,"depth":105,"text":4658},{"id":4786,"depth":105,"text":4787,"children":83108},[83109,83110],{"id":4793,"depth":121,"text":4794},{"id":4819,"depth":121,"text":4820},{},{"title":4573,"description":4946},{"loc":4949},[1511,1002,4954],{"id":4957,"title":4958,"body":83116,"created":5289,"description":5290,"extension":843,"filename":5291,"meta":83353,"navigation":846,"path":5293,"seo":83354,"sitemap":83355,"stem":5296,"subject":5297,"tags":83356,"updated":5289,"volume":1863,"__hash__":5299},{"type":8,"value":83117,"toc":83348},[83118,83128,83242,83246,83250,83256,83278,83282,83284,83290,83292,83294,83340,83346],[16,83119,4963,83120,4967,83122,4971,83124,4975,83126,4979],{},[31,83121,4966],{},[31,83123,4970],{},[31,83125,4974],{},[31,83127,4978],{},[82,83129,83130],{"className":4982,"code":4983,"language":2864,"meta":87,"style":87},[31,83131,83132,83136,83154,83172,83176,83192,83202,83214,83218,83226,83234],{"__ignoreMap":87},[91,83133,83134],{"class":93,"line":94},[91,83135,4990],{"class":1343},[91,83137,83138,83140,83142,83144,83146,83148,83150,83152],{"class":93,"line":105},[91,83139,1968],{"class":566},[91,83141,4997],{"class":108},[91,83143,1366],{"class":566},[91,83145,2676],{"class":566},[91,83147,5004],{"class":97},[91,83149,5007],{"class":101},[91,83151,5010],{"class":169},[91,83153,5013],{"class":101},[91,83155,83156,83158,83160,83162,83164,83166,83168,83170],{"class":93,"line":121},[91,83157,1968],{"class":566},[91,83159,5020],{"class":108},[91,83161,1366],{"class":566},[91,83163,5025],{"class":101},[91,83165,5028],{"class":97},[91,83167,795],{"class":101},[91,83169,5033],{"class":169},[91,83171,1594],{"class":101},[91,83173,83174],{"class":93,"line":134},[91,83175,1450],{"emptyLinePlaceholder":846},[91,83177,83178,83180,83182,83184,83186,83188,83190],{"class":93,"line":228},[91,83179,5044],{"class":101},[91,83181,166],{"class":566},[91,83183,5049],{"class":101},[91,83185,5052],{"class":108},[91,83187,1235],{"class":101},[91,83189,5057],{"class":97},[91,83191,5060],{"class":101},[91,83193,83194,83196,83198,83200],{"class":93,"line":250},[91,83195,5065],{"class":101},[91,83197,166],{"class":566},[91,83199,5070],{"class":169},[91,83201,118],{"class":101},[91,83203,83204,83206,83208,83210,83212],{"class":93,"line":260},[91,83205,5077],{"class":101},[91,83207,166],{"class":566},[91,83209,5082],{"class":97},[91,83211,5085],{"class":101},[91,83213,5088],{"class":1343},[91,83215,83216],{"class":93,"line":274},[91,83217,1450],{"emptyLinePlaceholder":846},[91,83219,83220,83222,83224],{"class":93,"line":284},[91,83221,5097],{"class":101},[91,83223,5100],{"class":97},[91,83225,5103],{"class":101},[91,83227,83228,83230,83232],{"class":93,"line":299},[91,83229,5108],{"class":101},[91,83231,5111],{"class":97},[91,83233,2030],{"class":101},[91,83235,83236,83238,83240],{"class":93,"line":319},[91,83237,5097],{"class":101},[91,83239,5120],{"class":97},[91,83241,5103],{"class":101},[16,83243,5125,83244,5129],{},[31,83245,5128],{},[16,83247,83248],{},[19,83249],{"alt":5134,"src":5135},[16,83251,5138,83252,5142,83254,5146],{},[31,83253,5141],{},[31,83255,5145],{},[4530,83257,83258,83264,83270],{},[27,83259,83260,5154,83262,5158],{},[792,83261,5153],{},[31,83263,5157],{},[27,83265,83266,5164,83268,5168],{},[792,83267,5163],{},[31,83269,5167],{},[27,83271,83272,5174,83274,5178,83276,5182],{},[792,83273,5173],{},[31,83275,5177],{},[31,83277,5181],{},[16,83279,5185,83280,5189],{},[31,83281,5188],{},[49,83283,5193],{"id":5192},[16,83285,5196,83286,5199,83288,5203],{},[31,83287,4974],{},[792,83289,5202],{},[757,83291,5207],{"id":5206},[16,83293,5210],{},[82,83295,83296],{"className":5213,"code":5214,"language":2865,"meta":87,"style":87},[31,83297,83298,83302,83312,83316,83324,83332,83336],{"__ignoreMap":87},[91,83299,83300],{"class":93,"line":94},[91,83301,5221],{"class":1343},[91,83303,83304,83306,83308,83310],{"class":93,"line":105},[91,83305,5226],{"class":566},[91,83307,5229],{"class":101},[91,83309,5232],{"class":566},[91,83311,5235],{"class":101},[91,83313,83314],{"class":93,"line":121},[91,83315,5240],{"class":1343},[91,83317,83318,83320,83322],{"class":93,"line":134},[91,83319,5245],{"class":101},[91,83321,5248],{"class":97},[91,83323,5251],{"class":101},[91,83325,83326,83328,83330],{"class":93,"line":228},[91,83327,1434],{"class":101},[91,83329,5258],{"class":566},[91,83331,102],{"class":101},[91,83333,83334],{"class":93,"line":250},[91,83335,5265],{"class":1343},[91,83337,83338],{"class":93,"line":260},[91,83339,137],{"class":101},[16,83341,5272,83342,5276,83344,5280],{},[31,83343,5275],{},[31,83345,5279],{},[829,83347,5283],{},{"title":87,"searchDepth":105,"depth":105,"links":83349},[83350],{"id":5192,"depth":105,"text":5193,"children":83351},[83352],{"id":5206,"depth":121,"text":5207},{},{"title":4958,"description":5290},{"loc":5293},[2865,1511,4954],{"id":5301,"title":5302,"body":83358,"created":5436,"description":5437,"extension":843,"filename":5438,"meta":83444,"navigation":846,"path":5440,"seo":83445,"sitemap":83446,"stem":5443,"subject":5444,"tags":83447,"updated":5436,"volume":1863,"__hash__":5448},{"type":8,"value":83359,"toc":83440},[83360,83364,83372,83378,83384,83386,83400,83402,83404,83434],[16,83361,5307,83362,5311],{},[31,83363,5310],{},[16,83365,5314,83366,5317,83368,5321,83370,5325],{},[31,83367,5310],{},[31,83369,5320],{},[31,83371,5324],{},[16,83373,5328,83374,5332,83376,5336],{},[31,83375,5331],{},[31,83377,5335],{},[16,83379,5339,83380,5343,83382,5347],{},[31,83381,5342],{},[31,83383,5346],{},[49,83385,5351],{"id":5350},[24,83387,83388,83392,83396],{},[27,83389,83390,5358],{},[31,83391,5320],{},[27,83393,83394,5363],{},[31,83395,5324],{},[27,83397,83398,5368],{},[31,83399,5331],{},[49,83401,5372],{"id":5371},[16,83403,5375],{},[4530,83405,83406,83418,83424,83428],{},[27,83407,83408,5383,83410,5387,83412,5391,83414,2978,83416,5398],{},[792,83409,5382],{},[31,83411,5386],{},[31,83413,5390],{},[31,83415,5394],{},[31,83417,5397],{},[27,83419,83420,112,83422,5407],{},[792,83421,5403],{},[31,83423,5406],{},[27,83425,83426,5413],{},[792,83427,5412],{},[27,83429,83430,5419,83432,5203],{},[792,83431,5418],{},[792,83433,5422],{},[16,83435,83436,5427,83438,5431],{},[31,83437,5390],{},[31,83439,5430],{},{"title":87,"searchDepth":105,"depth":105,"links":83441},[83442,83443],{"id":5350,"depth":105,"text":5351},{"id":5371,"depth":105,"text":5372},{},{"title":5302,"description":5437},{"loc":5440},[5446,2865,5447],{"id":5450,"title":5451,"body":83449,"created":5712,"description":5713,"extension":843,"filename":5714,"meta":83649,"navigation":846,"path":5716,"seo":83650,"sitemap":83651,"stem":5719,"subject":851,"tags":83652,"updated":5712,"volume":1863,"__hash__":5722},{"type":8,"value":83450,"toc":83645},[83451,83461,83463,83495,83497,83515,83517,83519,83521,83535,83537,83543,83545,83547,83551,83553,83555,83557,83639,83643],[82,83452,83453],{"className":84,"code":5456,"language":86,"meta":87,"style":87},[31,83454,83455],{"__ignoreMap":87},[91,83456,83457,83459],{"class":93,"line":94},[91,83458,5463],{"class":101},[91,83460,5467],{"class":5466},[16,83462,5470],{},[82,83464,83465],{"className":84,"code":5473,"language":86,"meta":87,"style":87},[31,83466,83467,83477,83487],{"__ignoreMap":87},[91,83468,83469,83471,83473,83475],{"class":93,"line":94},[91,83470,5480],{"class":159},[91,83472,5483],{"class":101},[91,83474,5486],{"class":97},[91,83476,1594],{"class":101},[91,83478,83479,83481,83483,83485],{"class":93,"line":105},[91,83480,5480],{"class":159},[91,83482,5495],{"class":101},[91,83484,5486],{"class":97},[91,83486,1594],{"class":101},[91,83488,83489,83491,83493],{"class":93,"line":121},[91,83490,5504],{"class":101},[91,83492,5486],{"class":97},[91,83494,1594],{"class":101},[16,83496,5511],{},[82,83498,83499],{"className":84,"code":5514,"language":86,"meta":87,"style":87},[31,83500,83501,83505],{"__ignoreMap":87},[91,83502,83503],{"class":93,"line":94},[91,83504,5521],{"class":101},[91,83506,83507,83509,83511,83513],{"class":93,"line":105},[91,83508,5480],{"class":159},[91,83510,5495],{"class":101},[91,83512,5486],{"class":97},[91,83514,1594],{"class":101},[16,83516,5534],{},[49,83518,5537],{"id":5537},[1112,83520],{"favicon":5540,"host":5541,"title":5542,"url":5543,"description":5544,"image":5545},[82,83522,83523],{"className":84,"code":5548,"language":86,"meta":87,"style":87},[31,83524,83525],{"__ignoreMap":87},[91,83526,83527,83529,83531,83533],{"class":93,"line":94},[91,83528,5480],{"class":159},[91,83530,5557],{"class":101},[91,83532,5560],{"class":5466},[91,83534,5563],{"class":101},[16,83536,5566],{},[4530,83538,83539,83541],{},[27,83540,5571],{},[27,83542,5574],{},[16,83544,5577],{},[1112,83546],{"favicon":5580,"host":5581,"title":5582,"url":5583},[16,83548,83549],{},[19,83550],{"alt":21,"src":5588},[16,83552,5591],{},[49,83554,5595],{"id":5594},[1112,83556],{"favicon":5598,"host":5599,"title":5600,"url":5601,"description":5602,"image":5603},[82,83558,83559],{"className":84,"code":5606,"language":86,"meta":87,"style":87},[31,83560,83561,83567,83587,83591,83595,83601,83635],{"__ignoreMap":87},[91,83562,83563,83565],{"class":93,"line":94},[91,83564,5613],{"class":97},[91,83566,102],{"class":101},[91,83568,83569,83571,83573,83575,83577,83579,83581,83583,83585],{"class":93,"line":105},[91,83570,5620],{"class":108},[91,83572,5623],{"class":101},[91,83574,5626],{"class":108},[91,83576,795],{"class":101},[91,83578,5631],{"class":1172},[91,83580,5634],{"class":101},[91,83582,5637],{"class":108},[91,83584,5640],{"class":566},[91,83586,1594],{"class":101},[91,83588,83589],{"class":93,"line":121},[91,83590,137],{"class":101},[91,83592,83593],{"class":93,"line":134},[91,83594,5651],{"class":1343},[91,83596,83597,83599],{"class":93,"line":228},[91,83598,5613],{"class":97},[91,83600,102],{"class":101},[91,83602,83603,83605,83607,83609,83611,83613,83615,83617,83619,83621,83623,83625,83627,83629,83631,83633],{"class":93,"line":250},[91,83604,5620],{"class":108},[91,83606,112],{"class":101},[91,83608,5537],{"class":108},[91,83610,795],{"class":101},[91,83612,5670],{"class":1172},[91,83614,5673],{"class":1172},[91,83616,64],{"class":101},[91,83618,5626],{"class":108},[91,83620,795],{"class":101},[91,83622,5631],{"class":1172},[91,83624,1176],{"class":101},[91,83626,5637],{"class":108},[91,83628,5640],{"class":566},[91,83630,64],{"class":101},[91,83632,5692],{"class":108},[91,83634,1594],{"class":101},[91,83636,83637],{"class":93,"line":260},[91,83638,137],{"class":101},[16,83640,5701,83641,5704],{},[31,83642,5537],{},[829,83644,5707],{},{"title":87,"searchDepth":105,"depth":105,"links":83646},[83647,83648],{"id":5537,"depth":105,"text":5537},{"id":5594,"depth":105,"text":5595},{},{"title":5451,"description":5713},{"loc":5716},[86,5721],{"id":5724,"title":5725,"body":83654,"created":6033,"description":6034,"extension":843,"filename":6035,"meta":83870,"navigation":846,"path":6037,"seo":83871,"sitemap":83872,"stem":6040,"subject":6041,"tags":83873,"updated":6033,"volume":853,"__hash__":6044},{"type":8,"value":83655,"toc":83862},[83656,83666,83668,83684,83690,83696,83702,83704,83716,83722,83730,83738,83740,83756,83762,83772,83774,83810,83816,83824,83830,83832,83840,83848,83850,83858,83860],[16,83657,83658,5733,83660,5737,83662,5321,83664,5743],{},[31,83659,5732],{},[31,83661,5736],{},[31,83663,5167],{},[31,83665,5742],{},[49,83667,5747],{"id":5746},[82,83669,83670],{"className":5750,"code":5751,"language":5752,"meta":87,"style":87},[31,83671,83672,83676,83680],{"__ignoreMap":87},[91,83673,83674],{"class":93,"line":94},[91,83675,5759],{},[91,83677,83678],{"class":93,"line":105},[91,83679,5764],{},[91,83681,83682],{"class":93,"line":121},[91,83683,5769],{},[16,83685,83686,5775,83688,5778],{},[31,83687,5774],{},[31,83689,5774],{},[16,83691,83692,5784,83694,5788],{},[31,83693,5783],{},[31,83695,5787],{},[16,83697,5791,83698,5794,83700,5797],{},[31,83699,5167],{},[31,83701,5742],{},[49,83703,5801],{"id":5800},[82,83705,83706],{"className":5750,"code":5804,"language":5752,"meta":87,"style":87},[31,83707,83708,83712],{"__ignoreMap":87},[91,83709,83710],{"class":93,"line":94},[91,83711,5811],{},[91,83713,83714],{"class":93,"line":105},[91,83715,5759],{},[16,83717,5818,83718,5733,83720,5823],{},[31,83719,5732],{},[31,83721,5736],{},[16,83723,5826,83724,5830,83726,5834,83728,5838],{},[31,83725,5829],{},[31,83727,5833],{},[31,83729,5837],{},[16,83731,5841,83732,5844,83734,5321,83736,5849],{},[31,83733,5732],{},[31,83735,5742],{},[31,83737,5167],{},[49,83739,5853],{"id":5852},[82,83741,83742],{"className":5750,"code":5856,"language":5752,"meta":87,"style":87},[31,83743,83744,83748,83752],{"__ignoreMap":87},[91,83745,83746],{"class":93,"line":94},[91,83747,5863],{},[91,83749,83750],{"class":93,"line":105},[91,83751,5868],{},[91,83753,83754],{"class":93,"line":121},[91,83755,5873],{},[16,83757,83758,5878,83760,5882],{},[31,83759,5787],{},[31,83761,5881],{},[16,83763,5885,83764,5888,83766,5891,83768,5894,83770,5897],{},[31,83765,5881],{},[31,83767,5787],{},[31,83769,5787],{},[31,83771,5881],{},[49,83773,5901],{"id":5900},[82,83775,83776],{"className":1154,"code":5904,"language":1156,"meta":87,"style":87},[31,83777,83778,83792],{"__ignoreMap":87},[91,83779,83780,83782,83784,83786,83788,83790],{"class":93,"line":94},[91,83781,1968],{"class":566},[91,83783,5913],{"class":108},[91,83785,1366],{"class":566},[91,83787,1390],{"class":566},[91,83789,5920],{"class":97},[91,83791,5923],{"class":101},[91,83793,83794,83796,83798,83800,83802,83804,83806,83808],{"class":93,"line":105},[91,83795,1968],{"class":566},[91,83797,5930],{"class":108},[91,83799,1366],{"class":566},[91,83801,5935],{"class":101},[91,83803,5938],{"class":97},[91,83805,795],{"class":101},[91,83807,5943],{"class":169},[91,83809,3487],{"class":101},[16,83811,5948,83812,5952,83814,5955],{},[31,83813,5951],{},[31,83815,5167],{},[82,83817,83818],{"className":5750,"code":5958,"language":5752,"meta":87,"style":87},[31,83819,83820],{"__ignoreMap":87},[91,83821,83822],{"class":93,"line":94},[91,83823,5958],{},[16,83825,5967,83826,5971,83828,5975],{},[31,83827,5970],{},[31,83829,5974],{},[49,83831,5979],{"id":5978},[82,83833,83834],{"className":5750,"code":5982,"language":5752,"meta":87,"style":87},[31,83835,83836],{"__ignoreMap":87},[91,83837,83838],{"class":93,"line":94},[91,83839,5982],{},[16,83841,5991,83842,5994,83844,5998,83846,6001],{},[31,83843,5167],{},[31,83845,5997],{},[31,83847,5167],{},[49,83849,6005],{"id":6004},[16,83851,83852,83855],{},[4306,83853,6010],{"href":6010,"rel":83854},[4310],[4306,83856,6014],{"href":6014,"rel":83857},[4310],[1112,83859],{"favicon":6018,"host":6019,"title":6020,"url":6021},[829,83861,6024],{},{"title":87,"searchDepth":105,"depth":105,"links":83863},[83864,83865,83866,83867,83868,83869],{"id":5746,"depth":105,"text":5747},{"id":5800,"depth":105,"text":5801},{"id":5852,"depth":105,"text":5853},{"id":5900,"depth":105,"text":5901},{"id":5978,"depth":105,"text":5979},{"id":6004,"depth":105,"text":6005},{},{"title":5725,"description":6034},{"loc":6037},[5752,6043,4978],{"id":6046,"title":6047,"body":83875,"created":6807,"description":6808,"extension":843,"filename":6809,"meta":84464,"navigation":846,"path":6811,"seo":84465,"sitemap":84466,"stem":6814,"subject":851,"tags":84467,"updated":6807,"volume":853,"__hash__":6817},{"type":8,"value":83876,"toc":84455},[83877,83879,83881,83889,83891,83895,83899,83903,83905,83927,83931,83935,83939,83943,83945,83950,84032,84036,84038,84050,84054,84060,84068,84072,84084,84086,84090,84096,84098,84102,84118,84122,84134,84140,84142,84408,84416,84430,84434,84436,84442,84444,84446,84453],[1112,83878],{"description":6052,"favicon":6053,"host":6054,"image":6055,"title":6056,"url":6057},[16,83880,6060],{},[16,83882,83883,34,83885,6069,83887,6073],{},[31,83884,6065],{},[31,83886,6068],{},[31,83888,6072],{},[49,83890,6077],{"id":6076},[16,83892,83893],{},[19,83894],{"alt":6082,"src":6083},[16,83896,6086,83897,6089],{},[31,83898,6072],{},[16,83900,83901],{},[19,83902],{"alt":6094,"src":6095},[16,83904,6098],{},[24,83906,83907,83911,83915,83919,83923],{},[27,83908,83909,6106],{},[792,83910,6105],{},[27,83912,83913,6112],{},[792,83914,6111],{},[27,83916,83917,6118],{},[792,83918,6117],{},[27,83920,83921,6124],{},[792,83922,6123],{},[27,83924,83925,6130],{},[792,83926,6129],{},[16,83928,6133,83929,6136],{},[31,83930,6072],{},[16,83932,83933],{},[19,83934],{"alt":6141,"src":6142},[16,83936,6145,83937,6149],{},[31,83938,6148],{},[16,83940,83941],{},[19,83942],{"alt":6154,"src":6155},[49,83944,6159],{"id":6158},[16,83946,83947],{},[4306,83948,6166],{"href":6164,"rel":83949},[4310],[82,83951,83952],{"className":147,"code":6169,"language":149,"meta":87,"style":87},[31,83953,83954,83962,83966,83984,84002,84020,84024],{"__ignoreMap":87},[91,83955,83956,83958,83960],{"class":93,"line":94},[91,83957,156],{"class":101},[91,83959,16],{"class":159},[91,83961,173],{"class":101},[91,83963,83964],{"class":93,"line":105},[91,83965,6184],{"class":101},[91,83967,83968,83970,83972,83974,83976,83978,83980,83982],{"class":93,"line":121},[91,83969,178],{"class":101},[91,83971,91],{"class":159},[91,83973,163],{"class":97},[91,83975,166],{"class":101},[91,83977,6197],{"class":169},[91,83979,6200],{"class":101},[91,83981,91],{"class":159},[91,83983,173],{"class":101},[91,83985,83986,83988,83990,83992,83994,83996,83998,84000],{"class":93,"line":134},[91,83987,178],{"class":101},[91,83989,91],{"class":159},[91,83991,163],{"class":97},[91,83993,166],{"class":101},[91,83995,6217],{"class":169},[91,83997,6200],{"class":101},[91,83999,91],{"class":159},[91,84001,173],{"class":101},[91,84003,84004,84006,84008,84010,84012,84014,84016,84018],{"class":93,"line":228},[91,84005,178],{"class":101},[91,84007,91],{"class":159},[91,84009,163],{"class":97},[91,84011,166],{"class":101},[91,84013,6236],{"class":169},[91,84015,6200],{"class":101},[91,84017,91],{"class":159},[91,84019,173],{"class":101},[91,84021,84022],{"class":93,"line":250},[91,84023,6247],{"class":101},[91,84025,84026,84028,84030],{"class":93,"line":260},[91,84027,493],{"class":101},[91,84029,16],{"class":159},[91,84031,173],{"class":101},[16,84033,84034],{},[19,84035],{"alt":6260,"src":6261},[16,84037,6264],{},[24,84039,84040,84044],{},[27,84041,84042,6272],{},[792,84043,6271],{},[27,84045,84046,112,84048,6280],{},[792,84047,6277],{},[31,84049,6065],{},[16,84051,84052],{},[19,84053],{"alt":6285,"src":6286},[16,84055,6289,84056,6292,84058,6296],{},[31,84057,6065],{},[31,84059,6295],{},[16,84061,84062,6301,84064,6305,84066,6308],{},[31,84063,6065],{},[31,84065,6304],{},[31,84067,6304],{},[16,84069,84070],{},[19,84071],{"alt":6313,"src":6314},[16,84073,6317,84074,64,84076,64,84078,6324,84080,6328,84082,6332],{},[31,84075,805],{},[31,84077,798],{},[31,84079,802],{},[31,84081,6327],{},[31,84083,6331],{},[757,84085,6336],{"id":6335},[16,84087,84088],{},[19,84089],{"alt":6341,"src":6342},[16,84091,84092,6347,84094,6350],{},[31,84093,6336],{},[31,84095,6304],{},[49,84097,6068],{"id":6068},[16,84099,84100],{},[19,84101],{"alt":6357,"src":6358},[16,84103,84104,6363,84106,6367,84108,64,84110,6373,84112,6377,84114,6380,84116,6383],{},[31,84105,6068],{},[31,84107,6366],{},[31,84109,6370],{},[31,84111,6072],{},[31,84113,6376],{},[31,84115,6065],{},[31,84117,6065],{},[16,84119,84120],{},[19,84121],{"alt":6388,"src":6389},[16,84123,6392,84124,6396,84126,6400,84128,6403,84130,6406,84132,6409],{},[31,84125,6395],{},[31,84127,6399],{},[31,84129,6366],{},[31,84131,6123],{},[31,84133,6123],{},[16,84135,6412,84136,6416,84138,6420],{},[31,84137,6415],{},[31,84139,6419],{},[49,84141,6424],{"id":6423},[82,84143,84144],{"className":84,"code":6427,"language":86,"meta":87,"style":87},[31,84145,84146,84152,84156,84162,84172,84182,84192,84202,84206,84210,84220,84234,84238,84242,84264,84290,84294,84298,84312,84334,84364,84368,84372,84378,84404],{"__ignoreMap":87},[91,84147,84148,84150],{"class":93,"line":94},[91,84149,16],{"class":159},[91,84151,102],{"class":101},[91,84153,84154],{"class":93,"line":105},[91,84155,6440],{"class":1343},[91,84157,84158,84160],{"class":93,"line":121},[91,84159,6445],{"class":1172},[91,84161,6448],{"class":101},[91,84163,84164,84166,84168,84170],{"class":93,"line":134},[91,84165,6453],{"class":1172},[91,84167,112],{"class":101},[91,84169,6458],{"class":108},[91,84171,118],{"class":101},[91,84173,84174,84176,84178,84180],{"class":93,"line":228},[91,84175,6465],{"class":1172},[91,84177,112],{"class":101},[91,84179,6470],{"class":108},[91,84181,118],{"class":101},[91,84183,84184,84186,84188,84190],{"class":93,"line":250},[91,84185,6477],{"class":1172},[91,84187,112],{"class":101},[91,84189,6482],{"class":108},[91,84191,118],{"class":101},[91,84193,84194,84196,84198,84200],{"class":93,"line":260},[91,84195,6489],{"class":1172},[91,84197,112],{"class":101},[91,84199,1578],{"class":108},[91,84201,118],{"class":101},[91,84203,84204],{"class":93,"line":274},[91,84205,1450],{"emptyLinePlaceholder":846},[91,84207,84208],{"class":93,"line":284},[91,84209,6504],{"class":1343},[91,84211,84212,84214,84216,84218],{"class":93,"line":299},[91,84213,6509],{"class":1172},[91,84215,112],{"class":101},[91,84217,6514],{"class":108},[91,84219,118],{"class":101},[91,84221,84222,84224,84226,84228,84230,84232],{"class":93,"line":319},[91,84223,6521],{"class":108},[91,84225,112],{"class":101},[91,84227,5626],{"class":108},[91,84229,795],{"class":101},[91,84231,6530],{"class":1172},[91,84233,1594],{"class":101},[91,84235,84236],{"class":93,"line":334},[91,84237,1450],{"emptyLinePlaceholder":846},[91,84239,84240],{"class":93,"line":355},[91,84241,6541],{"class":1343},[91,84243,84244,84246,84248,84250,84252,84254,84256,84258,84260,84262],{"class":93,"line":364},[91,84245,6546],{"class":1172},[91,84247,6549],{"class":101},[91,84249,5626],{"class":108},[91,84251,795],{"class":101},[91,84253,6556],{"class":1172},[91,84255,5634],{"class":101},[91,84257,5626],{"class":108},[91,84259,795],{"class":101},[91,84261,6565],{"class":1172},[91,84263,6568],{"class":101},[91,84265,84266,84268,84270,84272,84274,84276,84278,84280,84282,84284,84286,84288],{"class":93,"line":378},[91,84267,6573],{"class":108},[91,84269,112],{"class":101},[91,84271,6415],{"class":108},[91,84273,795],{"class":101},[91,84275,5626],{"class":108},[91,84277,795],{"class":101},[91,84279,6586],{"class":1172},[91,84281,1176],{"class":101},[91,84283,6591],{"class":566},[91,84285,6594],{"class":108},[91,84287,567],{"class":566},[91,84289,1594],{"class":101},[91,84291,84292],{"class":93,"line":387},[91,84293,1450],{"emptyLinePlaceholder":846},[91,84295,84296],{"class":93,"line":402},[91,84297,6607],{"class":1343},[91,84299,84300,84302,84304,84306,84308,84310],{"class":93,"line":422},[91,84301,6612],{"class":1172},[91,84303,112],{"class":101},[91,84305,5626],{"class":108},[91,84307,795],{"class":101},[91,84309,6621],{"class":1172},[91,84311,1594],{"class":101},[91,84313,84314,84316,84318,84320,84322,84324,84326,84328,84330,84332],{"class":93,"line":438},[91,84315,6628],{"class":1172},[91,84317,6549],{"class":101},[91,84319,5626],{"class":108},[91,84321,795],{"class":101},[91,84323,6637],{"class":1172},[91,84325,6640],{"class":101},[91,84327,5626],{"class":108},[91,84329,795],{"class":101},[91,84331,6565],{"class":1172},[91,84333,6568],{"class":101},[91,84335,84336,84338,84340,84342,84344,84346,84348,84350,84352,84354,84356,84358,84360,84362],{"class":93,"line":458},[91,84337,6653],{"class":1172},[91,84339,6656],{"class":101},[91,84341,5626],{"class":108},[91,84343,795],{"class":101},[91,84345,6663],{"class":1172},[91,84347,6640],{"class":101},[91,84349,5626],{"class":108},[91,84351,795],{"class":101},[91,84353,6672],{"class":1172},[91,84355,6675],{"class":101},[91,84357,5626],{"class":108},[91,84359,795],{"class":101},[91,84361,6586],{"class":1172},[91,84363,6568],{"class":101},[91,84365,84366],{"class":93,"line":467},[91,84367,137],{"class":101},[91,84369,84370],{"class":93,"line":481},[91,84371,1450],{"emptyLinePlaceholder":846},[91,84373,84374,84376],{"class":93,"line":490},[91,84375,91],{"class":159},[91,84377,102],{"class":101},[91,84379,84380,84382,84384,84386,84388,84390,84392,84394,84396,84398,84400,84402],{"class":93,"line":3310},[91,84381,6702],{"class":108},[91,84383,112],{"class":101},[91,84385,6415],{"class":108},[91,84387,795],{"class":101},[91,84389,5626],{"class":108},[91,84391,795],{"class":101},[91,84393,6715],{"class":1172},[91,84395,1176],{"class":101},[91,84397,6591],{"class":566},[91,84399,6722],{"class":108},[91,84401,567],{"class":566},[91,84403,1594],{"class":101},[91,84405,84406],{"class":93,"line":3315},[91,84407,137],{"class":101},[16,84409,6733,84410,6737,84412,6740,84414,6743],{},[31,84411,6736],{},[31,84413,6117],{},[31,84415,6072],{},[16,84417,84418,6748,84420,6751,84422,6754,84424,5321,84426,6759,84428,6762],{},[31,84419,6556],{},[31,84421,6565],{},[31,84423,6072],{},[31,84425,6663],{},[31,84427,6672],{},[31,84429,6068],{},[16,84431,84432],{},[19,84433],{"alt":6767,"src":6768},[16,84435,6771],{},[24,84437,84438,84440],{},[27,84439,6776],{},[27,84441,6779],{},[16,84443,6782],{},[49,84445,6786],{"id":6785},[24,84447,84448],{},[27,84449,84450],{},[4306,84451,6794],{"href":6057,"rel":84452},[4310],[829,84454,6797],{},{"title":87,"searchDepth":105,"depth":105,"links":84456},[84457,84458,84461,84462,84463],{"id":6076,"depth":105,"text":6077},{"id":6158,"depth":105,"text":6159,"children":84459},[84460],{"id":6335,"depth":121,"text":6336},{"id":6068,"depth":105,"text":6068},{"id":6423,"depth":105,"text":6424},{"id":6785,"depth":105,"text":6786},{},{"title":6047,"description":6808},{"loc":6811},[86,6816,149],{"id":6819,"title":6820,"body":84469,"created":7192,"description":7193,"extension":843,"filename":7194,"meta":84726,"navigation":846,"path":7196,"seo":84727,"sitemap":84728,"stem":7199,"subject":7200,"tags":84729,"updated":7192,"volume":853,"__hash__":7206},{"type":8,"value":84470,"toc":84719},[84471,84473,84475,84479,84491,84495,84501,84506,84510,84530,84532,84544,84546,84548,84550,84586,84592,84596,84608,84616,84618,84622,84624,84648,84652,84657,84665,84667,84671,84679,84685,84701,84703,84705,84707,84709,84711,84713,84715,84717],[16,84472,6825],{},[49,84474,6829],{"id":6828},[16,84476,6832,84477,6836],{},[31,84478,6835],{},[82,84480,84481],{"className":6839,"code":6840,"language":6841,"meta":87,"style":87},[31,84482,84483,84487],{"__ignoreMap":87},[91,84484,84485],{"class":93,"line":94},[91,84486,6848],{},[91,84488,84489],{"class":93,"line":105},[91,84490,6853],{},[16,84492,84493],{},[19,84494],{"alt":6858,"src":6859},[16,84496,6862,84497,6866,84499,6870],{},[31,84498,6865],{},[31,84500,6869],{},[82,84502,84504],{"className":84503,"code":6874,"language":1099,"meta":87},[1097],[31,84505,6874],{"__ignoreMap":87},[16,84507,84508,6882],{},[31,84509,6881],{},[82,84511,84512],{"className":6839,"code":6885,"language":6841,"meta":87,"style":87},[31,84513,84514,84518,84522,84526],{"__ignoreMap":87},[91,84515,84516],{"class":93,"line":94},[91,84517,6892],{},[91,84519,84520],{"class":93,"line":105},[91,84521,1450],{"emptyLinePlaceholder":846},[91,84523,84524],{"class":93,"line":121},[91,84525,6901],{},[91,84527,84528],{"class":93,"line":134},[91,84529,6906],{},[16,84531,6909],{},[82,84533,84534],{"className":6839,"code":6912,"language":6841,"meta":87,"style":87},[31,84535,84536,84540],{"__ignoreMap":87},[91,84537,84538],{"class":93,"line":94},[91,84539,6919],{},[91,84541,84542],{"class":93,"line":105},[91,84543,6924],{},[16,84545,6927],{},[49,84547,6931],{"id":6930},[16,84549,6934],{},[82,84551,84552],{"className":6839,"code":6937,"language":6841,"meta":87,"style":87},[31,84553,84554,84558,84562,84566,84570,84574,84578,84582],{"__ignoreMap":87},[91,84555,84556],{"class":93,"line":94},[91,84557,6944],{},[91,84559,84560],{"class":93,"line":105},[91,84561,6949],{},[91,84563,84564],{"class":93,"line":121},[91,84565,6954],{},[91,84567,84568],{"class":93,"line":134},[91,84569,1450],{"emptyLinePlaceholder":846},[91,84571,84572],{"class":93,"line":228},[91,84573,6963],{},[91,84575,84576],{"class":93,"line":250},[91,84577,6968],{},[91,84579,84580],{"class":93,"line":260},[91,84581,6973],{},[91,84583,84584],{"class":93,"line":274},[91,84585,6978],{},[16,84587,6981,84588,6985,84590,6988],{},[31,84589,6984],{},[31,84591,6984],{},[16,84593,6991,84594,6995],{},[31,84595,6994],{},[82,84597,84598],{"className":6998,"code":6999,"language":7000,"meta":87,"style":87},[31,84599,84600,84604],{"__ignoreMap":87},[91,84601,84602],{"class":93,"line":94},[91,84603,7007],{},[91,84605,84606],{"class":93,"line":105},[91,84607,7012],{},[16,84609,7015,84610,7019,84612,64,84614,7026],{},[31,84611,7018],{},[31,84613,7022],{},[31,84615,7025],{},[49,84617,7030],{"id":7029},[16,84619,7033,84620,7037],{},[31,84621,7036],{},[16,84623,7040],{},[82,84625,84626],{"className":6839,"code":7043,"language":6841,"meta":87,"style":87},[31,84627,84628,84632,84636,84640,84644],{"__ignoreMap":87},[91,84629,84630],{"class":93,"line":94},[91,84631,7050],{},[91,84633,84634],{"class":93,"line":105},[91,84635,7055],{},[91,84637,84638],{"class":93,"line":121},[91,84639,1450],{"emptyLinePlaceholder":846},[91,84641,84642],{"class":93,"line":134},[91,84643,7064],{},[91,84645,84646],{"class":93,"line":228},[91,84647,7069],{},[16,84649,7072,84650,7075],{},[31,84651,6869],{},[82,84653,84655],{"className":84654,"code":7079,"language":1099,"meta":87},[1097],[31,84656,7079],{"__ignoreMap":87},[16,84658,7084,84659,7088,84661,7092,84663,7096],{},[31,84660,7087],{},[31,84662,7091],{},[31,84664,7095],{},[49,84666,7100],{"id":7099},[16,84668,84669,7106],{},[31,84670,7105],{},[82,84672,84673],{"className":6839,"code":7109,"language":6841,"meta":87,"style":87},[31,84674,84675],{"__ignoreMap":87},[91,84676,84677],{"class":93,"line":94},[91,84678,7109],{},[16,84680,84681,7121,84683,7125],{},[31,84682,7120],{},[31,84684,7124],{},[82,84686,84687],{"className":6839,"code":7128,"language":6841,"meta":87,"style":87},[31,84688,84689,84693,84697],{"__ignoreMap":87},[91,84690,84691],{"class":93,"line":94},[91,84692,7135],{},[91,84694,84695],{"class":93,"line":105},[91,84696,7140],{},[91,84698,84699],{"class":93,"line":121},[91,84700,7145],{},[16,84702,7148],{},[49,84704,6005],{"id":6004},[1112,84706],{"description":7153,"host":7154,"title":7155,"url":7156},[1112,84708],{"description":7159,"host":7154,"title":7160,"url":7161},[1112,84710],{"description":7164,"host":7154,"title":7165,"url":7166},[1112,84712],{"description":7169,"host":7170,"title":7171,"url":7172},[1112,84714],{"description":7175,"host":1317,"title":7176,"url":7177},[1112,84716],{"description":7180,"host":1317,"title":7181,"url":7182},[829,84718,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":84720},[84721,84722,84723,84724,84725],{"id":6828,"depth":105,"text":6829},{"id":6930,"depth":105,"text":6931},{"id":7029,"depth":105,"text":7030},{"id":7099,"depth":105,"text":7100},{"id":6004,"depth":105,"text":6005},{},{"title":6820,"description":7193},{"loc":7196},[7202,7203,7204,7205,1511],{"id":7208,"title":7209,"body":84731,"created":7400,"description":7401,"extension":843,"filename":7402,"meta":84877,"navigation":846,"path":7404,"seo":84878,"sitemap":84879,"stem":7407,"subject":7200,"tags":84880,"updated":7400,"volume":1863,"__hash__":7410},{"type":8,"value":84732,"toc":84875},[84733,84735,84741,84745,84747,84753,84825,84829,84863,84867,84871,84873],[16,84734,7214],{},[24,84736,84737,84739],{},[27,84738,7219],{},[27,84740,7222],{},[16,84742,84743],{},[19,84744],{"alt":87,"src":7227},[16,84746,7230],{},[24,84748,84749,84751],{},[27,84750,7235],{},[27,84752,7238],{},[82,84754,84755],{"className":7241,"code":7242,"language":7243,"meta":87,"style":87},[31,84756,84757,84767,84773,84781,84789,84797,84805,84813,84821],{"__ignoreMap":87},[91,84758,84759,84761,84763,84765],{"class":93,"line":94},[91,84760,7250],{"class":101},[91,84762,1238],{"class":159},[91,84764,112],{"class":101},[91,84766,7257],{"class":169},[91,84768,84769,84771],{"class":93,"line":105},[91,84770,7262],{"class":159},[91,84772,7265],{"class":101},[91,84774,84775,84777,84779],{"class":93,"line":121},[91,84776,7270],{"class":159},[91,84778,112],{"class":101},[91,84780,7275],{"class":169},[91,84782,84783,84785,84787],{"class":93,"line":134},[91,84784,7280],{"class":159},[91,84786,112],{"class":101},[91,84788,7285],{"class":169},[91,84790,84791,84793,84795],{"class":93,"line":228},[91,84792,7290],{"class":159},[91,84794,112],{"class":101},[91,84796,7295],{"class":169},[91,84798,84799,84801,84803],{"class":93,"line":250},[91,84800,7300],{"class":159},[91,84802,112],{"class":101},[91,84804,7305],{"class":169},[91,84806,84807,84809,84811],{"class":93,"line":260},[91,84808,7310],{"class":159},[91,84810,112],{"class":101},[91,84812,7315],{"class":169},[91,84814,84815,84817,84819],{"class":93,"line":274},[91,84816,7320],{"class":159},[91,84818,112],{"class":101},[91,84820,7325],{"class":566},[91,84822,84823],{"class":93,"line":284},[91,84824,7330],{"class":169},[16,84826,7333,84827,7337],{},[31,84828,7336],{},[82,84830,84831],{"className":7241,"code":7340,"language":7243,"meta":87,"style":87},[31,84832,84833,84839,84845,84855],{"__ignoreMap":87},[91,84834,84835,84837],{"class":93,"line":94},[91,84836,7347],{"class":159},[91,84838,7265],{"class":101},[91,84840,84841,84843],{"class":93,"line":105},[91,84842,7354],{"class":159},[91,84844,7265],{"class":101},[91,84846,84847,84849,84851,84853],{"class":93,"line":121},[91,84848,7361],{"class":159},[91,84850,112],{"class":101},[91,84852,7366],{"class":169},[91,84854,7369],{"class":1343},[91,84856,84857,84859,84861],{"class":93,"line":134},[91,84858,7374],{"class":159},[91,84860,112],{"class":101},[91,84862,7379],{"class":169},[16,84864,7382,84865,7386],{},[31,84866,7385],{},[16,84868,84869],{},[19,84870],{"alt":87,"src":7391},[16,84872,7394],{},[829,84874,7397],{},{"title":87,"searchDepth":105,"depth":105,"links":84876},[],{},{"title":7209,"description":7401},{"loc":7404},[7409,7203],{"id":7412,"title":7413,"body":84882,"created":8606,"description":8607,"extension":843,"filename":8608,"meta":85830,"navigation":846,"path":8610,"seo":85831,"sitemap":85832,"stem":8613,"subject":8614,"tags":85833,"updated":8606,"volume":853,"__hash__":8619},{"type":8,"value":84883,"toc":85822},[84884,84890,84892,84902,84910,85008,85012,85014,85018,85022,85024,85026,85434,85436,85440,85444,85682,85688,85698,85700,85704,85736,85740,85770,85776,85778,85782,85786,85788,85790,85798,85804,85810,85812,85814,85816,85818,85820],[16,84885,7418,84886,5321,84888,7425],{},[31,84887,7421],{},[31,84889,7424],{},[49,84891,7429],{"id":7428},[16,84893,7432,84894,2978,84896,7439,84898,7442,84900,7445],{},[31,84895,7435],{},[31,84897,7438],{},[31,84899,7421],{},[31,84901,7424],{},[16,84903,7448,84904,2978,84906,7455,84908,7459],{},[31,84905,7451],{},[31,84907,7454],{},[31,84909,7458],{},[82,84911,84912],{"className":7462,"code":7463,"language":7464,"meta":87,"style":87},[31,84913,84914,84926,84932,84948,84960,84964,84968,84976,84984,84992,85000,85004],{"__ignoreMap":87},[91,84915,84916,84918,84920,84922,84924],{"class":93,"line":94},[91,84917,7471],{"class":566},[91,84919,7474],{"class":97},[91,84921,795],{"class":101},[91,84923,7479],{"class":1172},[91,84925,3866],{"class":101},[91,84927,84928,84930],{"class":93,"line":105},[91,84929,2695],{"class":566},[91,84931,7488],{"class":101},[91,84933,84934,84936,84938,84940,84942,84944,84946],{"class":93,"line":121},[91,84935,7493],{"class":101},[91,84937,7496],{"class":97},[91,84939,795],{"class":101},[91,84941,7501],{"class":108},[91,84943,1235],{"class":101},[91,84945,7506],{"class":97},[91,84947,7509],{"class":101},[91,84949,84950,84952,84954,84956,84958],{"class":93,"line":134},[91,84951,7493],{"class":101},[91,84953,7516],{"class":97},[91,84955,7519],{"class":101},[91,84957,7501],{"class":108},[91,84959,1594],{"class":101},[91,84961,84962],{"class":93,"line":228},[91,84963,137],{"class":101},[91,84965,84966],{"class":93,"line":250},[91,84967,1450],{"emptyLinePlaceholder":846},[91,84969,84970,84972,84974],{"class":93,"line":260},[91,84971,7471],{"class":566},[91,84973,7538],{"class":97},[91,84975,2007],{"class":101},[91,84977,84978,84980,84982],{"class":93,"line":274},[91,84979,2695],{"class":566},[91,84981,7474],{"class":97},[91,84983,7549],{"class":101},[91,84985,84986,84988,84990],{"class":93,"line":284},[91,84987,7554],{"class":101},[91,84989,7557],{"class":108},[91,84991,7560],{"class":101},[91,84993,84994,84996,84998],{"class":93,"line":299},[91,84995,7565],{"class":101},[91,84997,7568],{"class":169},[91,84999,7560],{"class":101},[91,85001,85002],{"class":93,"line":319},[91,85003,7575],{"class":101},[91,85005,85006],{"class":93,"line":334},[91,85007,137],{"class":101},[16,85009,7582,85010,7586],{},[31,85011,7585],{},[49,85013,7590],{"id":7589},[16,85015,7593,85016,7597],{},[31,85017,7596],{},[16,85019,85020],{},[19,85021],{"alt":7590,"src":7602},[16,85023,7605],{},[49,85025,7609],{"id":7608},[82,85027,85028],{"className":7462,"code":7612,"language":7464,"meta":87,"style":87},[31,85029,85030,85042,85054,85058,85070,85076,85088,85100,85104,85110,85114,85122,85130,85138,85142,85150,85158,85162,85170,85178,85182,85186,85190,85194,85198,85210,85232,85246,85250,85254,85266,85270,85274,85286,85298,85302,85334,85348,85352,85356,85362,85392,85396,85426,85430],{"__ignoreMap":87},[91,85031,85032,85034,85036,85038,85040],{"class":93,"line":94},[91,85033,1968],{"class":566},[91,85035,7621],{"class":108},[91,85037,1366],{"class":566},[91,85039,7626],{"class":169},[91,85041,118],{"class":101},[91,85043,85044,85046,85048,85050,85052],{"class":93,"line":105},[91,85045,1968],{"class":566},[91,85047,7635],{"class":108},[91,85049,1366],{"class":566},[91,85051,7640],{"class":169},[91,85053,118],{"class":101},[91,85055,85056],{"class":93,"line":121},[91,85057,1450],{"emptyLinePlaceholder":846},[91,85059,85060,85062,85064,85066,85068],{"class":93,"line":134},[91,85061,7471],{"class":566},[91,85063,7653],{"class":97},[91,85065,795],{"class":101},[91,85067,7658],{"class":1172},[91,85069,3866],{"class":101},[91,85071,85072,85074],{"class":93,"line":228},[91,85073,2012],{"class":566},[91,85075,102],{"class":101},[91,85077,85078,85080,85082,85084,85086],{"class":93,"line":250},[91,85079,1382],{"class":566},[91,85081,7673],{"class":108},[91,85083,1366],{"class":566},[91,85085,7678],{"class":97},[91,85087,7681],{"class":101},[91,85089,85090,85092,85094,85096,85098],{"class":93,"line":260},[91,85091,1382],{"class":566},[91,85093,7688],{"class":108},[91,85095,1366],{"class":566},[91,85097,7693],{"class":97},[91,85099,7696],{"class":101},[91,85101,85102],{"class":93,"line":274},[91,85103,1450],{"emptyLinePlaceholder":846},[91,85105,85106,85108],{"class":93,"line":284},[91,85107,7705],{"class":97},[91,85109,7708],{"class":101},[91,85111,85112],{"class":93,"line":299},[91,85113,1450],{"emptyLinePlaceholder":846},[91,85115,85116,85118,85120],{"class":93,"line":319},[91,85117,7717],{"class":566},[91,85119,7474],{"class":97},[91,85121,7549],{"class":101},[91,85123,85124,85126,85128],{"class":93,"line":334},[91,85125,7726],{"class":101},[91,85127,7557],{"class":108},[91,85129,7560],{"class":101},[91,85131,85132,85134,85136],{"class":93,"line":355},[91,85133,7735],{"class":101},[91,85135,7738],{"class":169},[91,85137,7560],{"class":101},[91,85139,85140],{"class":93,"line":364},[91,85141,7745],{"class":101},[91,85143,85144,85146,85148],{"class":93,"line":378},[91,85145,2053],{"class":101},[91,85147,1256],{"class":566},[91,85149,2058],{"class":101},[91,85151,85152,85154,85156],{"class":93,"line":387},[91,85153,2454],{"class":101},[91,85155,1261],{"class":97},[91,85157,2068],{"class":101},[91,85159,85160],{"class":93,"line":402},[91,85161,1450],{"emptyLinePlaceholder":846},[91,85163,85164,85166,85168],{"class":93,"line":422},[91,85165,7717],{"class":566},[91,85167,7474],{"class":97},[91,85169,7549],{"class":101},[91,85171,85172,85174,85176],{"class":93,"line":438},[91,85173,7726],{"class":101},[91,85175,7780],{"class":108},[91,85177,7560],{"class":101},[91,85179,85180],{"class":93,"line":458},[91,85181,7787],{"class":101},[91,85183,85184],{"class":93,"line":467},[91,85185,7745],{"class":101},[91,85187,85188],{"class":93,"line":481},[91,85189,1698],{"class":101},[91,85191,85192],{"class":93,"line":490},[91,85193,137],{"class":101},[91,85195,85196],{"class":93,"line":3310},[91,85197,1450],{"emptyLinePlaceholder":846},[91,85199,85200,85202,85204,85206,85208],{"class":93,"line":3315},[91,85201,7471],{"class":566},[91,85203,7678],{"class":97},[91,85205,795],{"class":101},[91,85207,7658],{"class":1172},[91,85209,3866],{"class":101},[91,85211,85212,85214,85216,85218,85220,85222,85224,85226,85228,85230],{"class":93,"line":3321},[91,85213,2439],{"class":566},[91,85215,2662],{"class":101},[91,85217,2665],{"class":566},[91,85219,7826],{"class":101},[91,85221,7829],{"class":566},[91,85223,7832],{"class":566},[91,85225,7835],{"class":101},[91,85227,7829],{"class":566},[91,85229,7832],{"class":566},[91,85231,7842],{"class":101},[91,85233,85234,85236,85238,85240,85242,85244],{"class":93,"line":3327},[91,85235,2673],{"class":566},[91,85237,2676],{"class":566},[91,85239,2679],{"class":97},[91,85241,795],{"class":101},[91,85243,7855],{"class":169},[91,85245,1594],{"class":101},[91,85247,85248],{"class":93,"line":3333},[91,85249,1698],{"class":101},[91,85251,85252],{"class":93,"line":3338},[91,85253,1450],{"emptyLinePlaceholder":846},[91,85255,85256,85258,85260,85262,85264],{"class":93,"line":3343},[91,85257,2695],{"class":566},[91,85259,7872],{"class":108},[91,85261,1235],{"class":101},[91,85263,1189],{"class":97},[91,85265,7879],{"class":101},[91,85267,85268],{"class":93,"line":7882},[91,85269,137],{"class":101},[91,85271,85272],{"class":93,"line":7887},[91,85273,1450],{"emptyLinePlaceholder":846},[91,85275,85276,85278,85280,85282,85284],{"class":93,"line":7892},[91,85277,7471],{"class":566},[91,85279,7693],{"class":97},[91,85281,795],{"class":101},[91,85283,7901],{"class":1172},[91,85285,3866],{"class":101},[91,85287,85288,85290,85292,85294,85296],{"class":93,"line":7906},[91,85289,2641],{"class":566},[91,85291,7911],{"class":108},[91,85293,1366],{"class":566},[91,85295,7916],{"class":97},[91,85297,7919],{"class":101},[91,85299,85300],{"class":93,"line":7922},[91,85301,1450],{"emptyLinePlaceholder":846},[91,85303,85304,85306,85308,85310,85312,85314,85316,85318,85320,85322,85324,85326,85328,85330,85332],{"class":93,"line":7927},[91,85305,2439],{"class":566},[91,85307,2662],{"class":101},[91,85309,2665],{"class":566},[91,85311,7936],{"class":101},[91,85313,7939],{"class":97},[91,85315,7942],{"class":101},[91,85317,7829],{"class":566},[91,85319,7947],{"class":101},[91,85321,156],{"class":566},[91,85323,6594],{"class":108},[91,85325,7954],{"class":566},[91,85327,7947],{"class":101},[91,85329,7959],{"class":566},[91,85331,7962],{"class":108},[91,85333,3866],{"class":101},[91,85335,85336,85338,85340,85342,85344,85346],{"class":93,"line":7967},[91,85337,2673],{"class":566},[91,85339,2676],{"class":566},[91,85341,2679],{"class":97},[91,85343,795],{"class":101},[91,85345,7978],{"class":169},[91,85347,1594],{"class":101},[91,85349,85350],{"class":93,"line":7983},[91,85351,1698],{"class":101},[91,85353,85354],{"class":93,"line":7988},[91,85355,1450],{"emptyLinePlaceholder":846},[91,85357,85358,85360],{"class":93,"line":7993},[91,85359,2695],{"class":566},[91,85361,102],{"class":101},[91,85363,85364,85366,85368,85370,85372,85374,85376,85378,85380,85382,85384,85386,85388,85390],{"class":93,"line":8000},[91,85365,8003],{"class":101},[91,85367,8006],{"class":97},[91,85369,8009],{"class":101},[91,85371,7829],{"class":566},[91,85373,8014],{"class":169},[91,85375,8017],{"class":101},[91,85377,8020],{"class":97},[91,85379,8023],{"class":101},[91,85381,8026],{"class":97},[91,85383,795],{"class":101},[91,85385,1578],{"class":108},[91,85387,64],{"class":101},[91,85389,5637],{"class":108},[91,85391,8037],{"class":101},[91,85393,85394],{"class":93,"line":8040},[91,85395,8043],{"class":101},[91,85397,85398,85400,85402,85404,85406,85408,85410,85412,85414,85416,85418,85420,85422,85424],{"class":93,"line":8046},[91,85399,8049],{"class":101},[91,85401,8006],{"class":97},[91,85403,8054],{"class":101},[91,85405,7829],{"class":566},[91,85407,8014],{"class":169},[91,85409,8017],{"class":101},[91,85411,8020],{"class":97},[91,85413,8023],{"class":101},[91,85415,8026],{"class":97},[91,85417,795],{"class":101},[91,85419,1578],{"class":108},[91,85421,64],{"class":101},[91,85423,8075],{"class":108},[91,85425,8037],{"class":101},[91,85427,85428],{"class":93,"line":8080},[91,85429,8083],{"class":101},[91,85431,85432],{"class":93,"line":8086},[91,85433,137],{"class":101},[16,85435,8091],{},[16,85437,85438,8097],{},[31,85439,8096],{},[16,85441,8100,85442,8104],{},[31,85443,8103],{},[82,85445,85446],{"className":7462,"code":8107,"language":7464,"meta":87,"style":87},[31,85447,85448,85460,85474,85486,85490,85496,85514,85532,85536,85546,85564,85568,85572,85580,85588,85594,85598,85604,85608,85616,85624,85628,85632,85636,85648,85678],{"__ignoreMap":87},[91,85449,85450,85452,85454,85456,85458],{"class":93,"line":94},[91,85451,7471],{"class":566},[91,85453,8116],{"class":97},[91,85455,795],{"class":101},[91,85457,8121],{"class":1172},[91,85459,3866],{"class":101},[91,85461,85462,85464,85466,85468,85470,85472],{"class":93,"line":105},[91,85463,2641],{"class":566},[91,85465,8130],{"class":108},[91,85467,1366],{"class":566},[91,85469,8135],{"class":101},[91,85471,8138],{"class":97},[91,85473,2030],{"class":101},[91,85475,85476,85478,85480,85482,85484],{"class":93,"line":121},[91,85477,8145],{"class":101},[91,85479,8148],{"class":97},[91,85481,795],{"class":101},[91,85483,8153],{"class":108},[91,85485,1594],{"class":101},[91,85487,85488],{"class":93,"line":134},[91,85489,1450],{"emptyLinePlaceholder":846},[91,85491,85492,85494],{"class":93,"line":228},[91,85493,2012],{"class":566},[91,85495,102],{"class":101},[91,85497,85498,85500,85502,85504,85506,85508,85510,85512],{"class":93,"line":250},[91,85499,1382],{"class":566},[91,85501,8172],{"class":108},[91,85503,1366],{"class":566},[91,85505,8177],{"class":101},[91,85507,8180],{"class":97},[91,85509,795],{"class":101},[91,85511,8185],{"class":108},[91,85513,1594],{"class":101},[91,85515,85516,85518,85520,85522,85524,85526,85528,85530],{"class":93,"line":260},[91,85517,1382],{"class":566},[91,85519,8194],{"class":108},[91,85521,1366],{"class":566},[91,85523,8199],{"class":101},[91,85525,8202],{"class":97},[91,85527,795],{"class":101},[91,85529,8207],{"class":108},[91,85531,1594],{"class":101},[91,85533,85534],{"class":93,"line":274},[91,85535,1450],{"emptyLinePlaceholder":846},[91,85537,85538,85540,85542,85544],{"class":93,"line":284},[91,85539,8218],{"class":566},[91,85541,2662],{"class":101},[91,85543,2665],{"class":566},[91,85545,8225],{"class":101},[91,85547,85548,85550,85552,85554,85556,85558,85560,85562],{"class":93,"line":299},[91,85549,8230],{"class":566},[91,85551,2676],{"class":566},[91,85553,2679],{"class":97},[91,85555,795],{"class":101},[91,85557,8239],{"class":169},[91,85559,8207],{"class":108},[91,85561,1241],{"class":169},[91,85563,1594],{"class":101},[91,85565,85566],{"class":93,"line":319},[91,85567,1693],{"class":101},[91,85569,85570],{"class":93,"line":334},[91,85571,1450],{"emptyLinePlaceholder":846},[91,85573,85574,85576,85578],{"class":93,"line":355},[91,85575,8258],{"class":101},[91,85577,8261],{"class":97},[91,85579,8264],{"class":101},[91,85581,85582,85584,85586],{"class":93,"line":364},[91,85583,8269],{"class":566},[91,85585,8272],{"class":97},[91,85587,8275],{"class":101},[91,85589,85590,85592],{"class":93,"line":378},[91,85591,8280],{"class":97},[91,85593,8283],{"class":101},[91,85595,85596],{"class":93,"line":387},[91,85597,8288],{"class":101},[91,85599,85600,85602],{"class":93,"line":402},[91,85601,8280],{"class":97},[91,85603,8295],{"class":101},[91,85605,85606],{"class":93,"line":422},[91,85607,8300],{"class":101},[91,85609,85610,85612,85614],{"class":93,"line":438},[91,85611,2053],{"class":101},[91,85613,8307],{"class":566},[91,85615,102],{"class":101},[91,85617,85618,85620,85622],{"class":93,"line":458},[91,85619,8314],{"class":101},[91,85621,8317],{"class":97},[91,85623,2030],{"class":101},[91,85625,85626],{"class":93,"line":467},[91,85627,1698],{"class":101},[91,85629,85630],{"class":93,"line":481},[91,85631,137],{"class":101},[91,85633,85634],{"class":93,"line":490},[91,85635,1450],{"emptyLinePlaceholder":846},[91,85637,85638,85640,85642,85644,85646],{"class":93,"line":3310},[91,85639,7471],{"class":566},[91,85641,8338],{"class":97},[91,85643,795],{"class":101},[91,85645,8343],{"class":1172},[91,85647,3866],{"class":101},[91,85649,85650,85652,85654,85656,85658,85660,85662,85664,85666,85668,85670,85672,85674,85676],{"class":93,"line":3315},[91,85651,2695],{"class":566},[91,85653,8352],{"class":169},[91,85655,8355],{"class":566},[91,85657,8358],{"class":108},[91,85659,8361],{"class":169},[91,85661,1235],{"class":101},[91,85663,8366],{"class":97},[91,85665,8369],{"class":101},[91,85667,8372],{"class":566},[91,85669,8375],{"class":169},[91,85671,8343],{"class":101},[91,85673,1241],{"class":169},[91,85675,2131],{"class":566},[91,85677,8384],{"class":101},[91,85679,85680],{"class":93,"line":3321},[91,85681,137],{"class":101},[16,85683,8391,85684,8395,85686,8398],{},[31,85685,8394],{},[31,85687,8307],{},[16,85689,8401,85690,64,85692,64,85694,64,85696,8413],{},[31,85691,166],{},[31,85693,8406],{},[31,85695,8409],{},[31,85697,8412],{},[49,85699,8417],{"id":8416},[16,85701,8420,85702,8424],{},[31,85703,8423],{},[82,85705,85706],{"className":8427,"code":8428,"language":8429,"meta":87,"style":87},[31,85707,85708,85716,85724,85732],{"__ignoreMap":87},[91,85709,85710,85712,85714],{"class":93,"line":94},[91,85711,8436],{"class":97},[91,85713,8439],{"class":108},[91,85715,8442],{"class":108},[91,85717,85718,85720,85722],{"class":93,"line":105},[91,85719,8447],{"class":108},[91,85721,8450],{"class":169},[91,85723,8442],{"class":108},[91,85725,85726,85728,85730],{"class":93,"line":121},[91,85727,8457],{"class":108},[91,85729,8460],{"class":169},[91,85731,8442],{"class":108},[91,85733,85734],{"class":93,"line":134},[91,85735,8467],{"class":169},[16,85737,8470,85738,8474],{},[31,85739,8473],{},[82,85741,85742],{"className":8477,"code":8478,"language":8479,"meta":87,"style":87},[31,85743,85744,85748,85758,85766],{"__ignoreMap":87},[91,85745,85746],{"class":93,"line":94},[91,85747,8486],{"class":101},[91,85749,85750,85752,85754,85756],{"class":93,"line":105},[91,85751,8491],{"class":108},[91,85753,112],{"class":101},[91,85755,7557],{"class":108},[91,85757,7560],{"class":101},[91,85759,85760,85762,85764],{"class":93,"line":121},[91,85761,8502],{"class":108},[91,85763,112],{"class":101},[91,85765,8507],{"class":169},[91,85767,85768],{"class":93,"line":134},[91,85769,137],{"class":101},[16,85771,85772,4115,85774,8519],{},[31,85773,8436],{},[31,85775,8518],{},[49,85777,8523],{"id":8522},[16,85779,85780],{},[19,85781],{"alt":8528,"src":8529},[16,85783,8532,85784,8536],{},[31,85785,8535],{},[16,85787,8539],{},[16,85789,8542],{},[24,85791,85792,85794,85796],{},[27,85793,8547],{},[27,85795,8550],{},[27,85797,8553],{},[1722,85799,85800],{},[16,85801,85802,8561],{},[91,85803,8560],{},[16,85805,8564,85806,8567,85808,8571],{},[31,85807,8423],{},[31,85809,8570],{},[49,85811,6005],{"id":6004},[1112,85813],{"description":8576,"host":8577,"title":8578,"url":8579},[1112,85815],{"description":8582,"host":8577,"title":8583,"url":8584},[1112,85817],{"description":8587,"host":8577,"title":8588,"url":8589},[1112,85819],{"description":8592,"host":8577,"title":8593,"url":8594},[829,85821,8597],{},{"title":87,"searchDepth":105,"depth":105,"links":85823},[85824,85825,85826,85827,85828,85829],{"id":7428,"depth":105,"text":7429},{"id":7589,"depth":105,"text":7590},{"id":7608,"depth":105,"text":7609},{"id":8416,"depth":105,"text":8417},{"id":8522,"depth":105,"text":8523},{"id":6004,"depth":105,"text":6005},{},{"title":7413,"description":8607},{"loc":8610},[8616,8617,8618,2865],{"id":8621,"title":8622,"body":85835,"created":9114,"description":9115,"extension":843,"filename":9116,"meta":86214,"navigation":846,"path":9118,"seo":86215,"sitemap":86216,"stem":9121,"subject":9122,"tags":86217,"updated":9114,"volume":853,"__hash__":9126},{"type":8,"value":85836,"toc":86202},[85837,85839,85841,85843,85845,85869,85871,85889,85891,85893,85931,85935,85937,85941,85946,85948,86148,86150,86162,86164,86168,86172,86174,86176,86178,86184,86186,86188,86190,86192,86194,86196,86198,86200],[1112,85838],{"description":8627,"favicon":1320,"host":1317,"image":8628,"title":8629,"url":8630},[16,85840,8633],{},[16,85842,8636],{},[49,85844,8640],{"id":8639},[82,85846,85847],{"className":6839,"code":8643,"language":6841,"meta":87,"style":87},[31,85848,85849,85859],{"__ignoreMap":87},[91,85850,85851,85853,85855,85857],{"class":93,"line":94},[91,85852,8650],{"class":97},[91,85854,8653],{"class":169},[91,85856,8656],{"class":169},[91,85858,8659],{"class":169},[91,85860,85861,85863,85865,85867],{"class":93,"line":105},[91,85862,8664],{"class":97},[91,85864,8667],{"class":169},[91,85866,8670],{"class":108},[91,85868,8673],{"class":108},[16,85870,8676],{},[82,85872,85873],{"className":6839,"code":8679,"language":6841,"meta":87,"style":87},[31,85874,85875,85885],{"__ignoreMap":87},[91,85876,85877,85879,85881,85883],{"class":93,"line":94},[91,85878,2574],{"class":566},[91,85880,8688],{"class":101},[91,85882,166],{"class":566},[91,85884,8693],{"class":101},[91,85886,85887],{"class":93,"line":105},[91,85888,8698],{"class":97},[16,85890,8701],{},[49,85892,8705],{"id":8704},[82,85894,85895],{"className":6839,"code":8708,"language":6841,"meta":87,"style":87},[31,85896,85897,85903,85907,85911,85921,85925],{"__ignoreMap":87},[91,85898,85899,85901],{"class":93,"line":94},[91,85900,8715],{"class":97},[91,85902,8718],{"class":169},[91,85904,85905],{"class":93,"line":105},[91,85906,8723],{"class":101},[91,85908,85909],{"class":93,"line":121},[91,85910,8728],{"class":1343},[91,85912,85913,85915,85917,85919],{"class":93,"line":134},[91,85914,2574],{"class":566},[91,85916,8688],{"class":101},[91,85918,166],{"class":566},[91,85920,8693],{"class":101},[91,85922,85923],{"class":93,"line":228},[91,85924,8723],{"class":101},[91,85926,85927,85929],{"class":93,"line":250},[91,85928,8747],{"class":108},[91,85930,8718],{"class":169},[16,85932,8752,85933,8756],{},[31,85934,8755],{},[49,85936,8760],{"id":8759},[16,85938,8763,85939,8767],{},[31,85940,8766],{},[82,85942,85944],{"className":85943,"code":8771,"language":1099},[1097],[31,85945,8771],{"__ignoreMap":87},[16,85947,8776],{},[82,85949,85950],{"className":8477,"code":8779,"language":8479,"meta":87,"style":87},[31,85951,85952,85958,85968,85978,85988,85994,86004,86014,86024,86034,86044,86054,86062,86066,86072,86082,86092,86102,86112,86118,86128,86136,86140,86144],{"__ignoreMap":87},[91,85953,85954,85956],{"class":93,"line":94},[91,85955,8786],{"class":169},[91,85957,8789],{"class":101},[91,85959,85960,85962,85964,85966],{"class":93,"line":105},[91,85961,8794],{"class":108},[91,85963,112],{"class":101},[91,85965,8799],{"class":169},[91,85967,7560],{"class":101},[91,85969,85970,85972,85974,85976],{"class":93,"line":121},[91,85971,8806],{"class":108},[91,85973,112],{"class":101},[91,85975,8811],{"class":108},[91,85977,7560],{"class":101},[91,85979,85980,85982,85984,85986],{"class":93,"line":134},[91,85981,8818],{"class":108},[91,85983,112],{"class":101},[91,85985,8823],{"class":169},[91,85987,7560],{"class":101},[91,85989,85990,85992],{"class":93,"line":228},[91,85991,8830],{"class":108},[91,85993,8789],{"class":101},[91,85995,85996,85998,86000,86002],{"class":93,"line":250},[91,85997,8837],{"class":108},[91,85999,112],{"class":101},[91,86001,8842],{"class":108},[91,86003,7560],{"class":101},[91,86005,86006,86008,86010,86012],{"class":93,"line":260},[91,86007,8849],{"class":108},[91,86009,112],{"class":101},[91,86011,8854],{"class":108},[91,86013,7560],{"class":101},[91,86015,86016,86018,86020,86022],{"class":93,"line":274},[91,86017,8861],{"class":108},[91,86019,112],{"class":101},[91,86021,8866],{"class":108},[91,86023,7560],{"class":101},[91,86025,86026,86028,86030,86032],{"class":93,"line":284},[91,86027,8873],{"class":108},[91,86029,112],{"class":101},[91,86031,8878],{"class":169},[91,86033,7560],{"class":101},[91,86035,86036,86038,86040,86042],{"class":93,"line":299},[91,86037,8885],{"class":108},[91,86039,112],{"class":101},[91,86041,8890],{"class":108},[91,86043,7560],{"class":101},[91,86045,86046,86048,86050,86052],{"class":93,"line":319},[91,86047,8897],{"class":108},[91,86049,112],{"class":101},[91,86051,8890],{"class":108},[91,86053,7560],{"class":101},[91,86055,86056,86058,86060],{"class":93,"line":334},[91,86057,8908],{"class":108},[91,86059,112],{"class":101},[91,86061,8913],{"class":108},[91,86063,86064],{"class":93,"line":355},[91,86065,3477],{"class":101},[91,86067,86068,86070],{"class":93,"line":364},[91,86069,8922],{"class":108},[91,86071,8789],{"class":101},[91,86073,86074,86076,86078,86080],{"class":93,"line":378},[91,86075,8929],{"class":108},[91,86077,112],{"class":101},[91,86079,8934],{"class":108},[91,86081,7560],{"class":101},[91,86083,86084,86086,86088,86090],{"class":93,"line":387},[91,86085,8941],{"class":108},[91,86087,112],{"class":101},[91,86089,8946],{"class":108},[91,86091,7560],{"class":101},[91,86093,86094,86096,86098,86100],{"class":93,"line":402},[91,86095,8953],{"class":108},[91,86097,112],{"class":101},[91,86099,8958],{"class":108},[91,86101,7560],{"class":101},[91,86103,86104,86106,86108,86110],{"class":93,"line":422},[91,86105,8965],{"class":108},[91,86107,112],{"class":101},[91,86109,8970],{"class":108},[91,86111,7560],{"class":101},[91,86113,86114,86116],{"class":93,"line":438},[91,86115,8977],{"class":108},[91,86117,8789],{"class":101},[91,86119,86120,86122,86124,86126],{"class":93,"line":458},[91,86121,8984],{"class":108},[91,86123,112],{"class":101},[91,86125,8989],{"class":108},[91,86127,7560],{"class":101},[91,86129,86130,86132,86134],{"class":93,"line":467},[91,86131,8996],{"class":108},[91,86133,112],{"class":101},[91,86135,9001],{"class":108},[91,86137,86138],{"class":93,"line":481},[91,86139,3307],{"class":101},[91,86141,86142],{"class":93,"line":490},[91,86143,1693],{"class":101},[91,86145,86146],{"class":93,"line":3310},[91,86147,137],{"class":101},[16,86149,9016],{},[24,86151,86152,86158,86160],{},[27,86153,86154,9024,86156,9028],{},[31,86155,9023],{},[31,86157,9027],{},[27,86159,9031],{},[27,86161,9034],{},[16,86163,9037],{},[16,86165,86166],{},[19,86167],{"alt":87,"src":9042},[16,86169,9045,86170,9049],{},[31,86171,9048],{},[49,86173,9053],{"id":9052},[16,86175,9056],{},[757,86177,9060],{"id":9059},[16,86179,9063,86180,64,86182,9070],{},[31,86181,9066],{},[31,86183,9069],{},[757,86185,9074],{"id":9073},[16,86187,9077],{},[757,86189,9081],{"id":9080},[16,86191,9084],{},[757,86193,9088],{"id":9087},[16,86195,9091],{},[757,86197,9095],{"id":9094},[16,86199,9098],{},[829,86201,9101],{},{"title":87,"searchDepth":105,"depth":105,"links":86203},[86204,86205,86206,86207],{"id":8639,"depth":105,"text":8640},{"id":8704,"depth":105,"text":8705},{"id":8759,"depth":105,"text":8760},{"id":9052,"depth":105,"text":9053,"children":86208},[86209,86210,86211,86212,86213],{"id":9059,"depth":121,"text":9060},{"id":9073,"depth":121,"text":9074},{"id":9080,"depth":121,"text":9081},{"id":9087,"depth":121,"text":9088},{"id":9094,"depth":121,"text":9095},{},{"title":8622,"description":9115},{"loc":9118},[9124,8755,9125,8664],{"id":9128,"title":9129,"body":86219,"created":6033,"description":10132,"extension":843,"filename":10133,"meta":87033,"navigation":846,"path":10135,"seo":87034,"sitemap":87035,"stem":10138,"subject":10139,"tags":87036,"updated":6033,"volume":853,"__hash__":10143},{"type":8,"value":86220,"toc":87027},[86221,86229,86303,86305,86307,86357,86359,86467,86481,86483,86485,86619,86621,86625,86631,86633,86685,86689,86767,86777,86779,86785,86791,86793,86795,86797,86883,86887,87017,87023,87025],[16,86222,9134,86223,9138,86225,9142,86227,9146],{},[31,86224,9137],{},[31,86226,9141],{},[31,86228,9145],{},[812,86230,86231,86245],{},[3001,86232,86233],{},[3004,86234,86235,86237,86239,86241,86243],{},[3007,86236,9155],{},[3007,86238,9158],{},[3007,86240,9161],{},[3007,86242,9164],{},[3007,86244,9167],{},[3017,86246,86247,86263,86277,86291],{},[3004,86248,86249,86253,86255,86257,86261],{},[3022,86250,86251,9176],{},[31,86252,9137],{},[3022,86254,9179],{},[3022,86256,9182],{},[3022,86258,86259,9188],{},[31,86260,9187],{},[3022,86262,9191],{},[3004,86264,86265,86269,86271,86273,86275],{},[3022,86266,86267],{},[31,86268,9141],{},[3022,86270,9200],{},[3022,86272,9182],{},[3022,86274,9205],{},[3022,86276,9191],{},[3004,86278,86279,86283,86285,86287,86289],{},[3022,86280,86281],{},[31,86282,9145],{},[3022,86284,9216],{},[3022,86286,9219],{},[3022,86288,9205],{},[3022,86290,9224],{},[3004,86292,86293,86295,86297,86299,86301],{},[3022,86294,9229],{},[3022,86296,9232],{},[3022,86298,9235],{},[3022,86300,9205],{},[3022,86302,9240],{},[49,86304,9244],{"id":9243},[1112,86306],{"description":9247,"favicon":9248,"host":5541,"title":9249,"url":9250},[82,86308,86309],{"className":1154,"code":9253,"language":1156,"meta":87,"style":87},[31,86310,86311,86319,86325,86343,86347,86351],{"__ignoreMap":87},[91,86312,86313,86315,86317],{"class":93,"line":94},[91,86314,9260],{"class":101},[91,86316,9263],{"class":97},[91,86318,9266],{"class":101},[91,86320,86321,86323],{"class":93,"line":105},[91,86322,9271],{"class":169},[91,86324,7560],{"class":101},[91,86326,86327,86329,86331,86333,86335,86337,86339,86341],{"class":93,"line":121},[91,86328,9278],{"class":108},[91,86330,1235],{"class":101},[91,86332,7506],{"class":97},[91,86334,9285],{"class":101},[91,86336,9288],{"class":169},[91,86338,9291],{"class":101},[91,86340,9294],{"class":97},[91,86342,9297],{"class":101},[91,86344,86345],{"class":93,"line":134},[91,86346,3487],{"class":101},[91,86348,86349],{"class":93,"line":228},[91,86350,1450],{"emptyLinePlaceholder":846},[91,86352,86353,86355],{"class":93,"line":250},[91,86354,9310],{"class":97},[91,86356,9313],{"class":101},[16,86358,9316],{},[82,86360,86361],{"className":1154,"code":9319,"language":1156,"meta":87,"style":87},[31,86362,86363,86383,86395,86417,86421,86437,86441,86453,86459,86463],{"__ignoreMap":87},[91,86364,86365,86367,86369,86371,86373,86375,86377,86379,86381],{"class":93,"line":94},[91,86366,9326],{"class":101},[91,86368,9329],{"class":97},[91,86370,795],{"class":101},[91,86372,9334],{"class":169},[91,86374,9337],{"class":101},[91,86376,9340],{"class":1172},[91,86378,1176],{"class":101},[91,86380,1179],{"class":566},[91,86382,102],{"class":101},[91,86384,86385,86387,86389,86391,86393],{"class":93,"line":105},[91,86386,2439],{"class":566},[91,86388,9353],{"class":101},[91,86390,9356],{"class":566},[91,86392,9359],{"class":101},[91,86394,9362],{"class":566},[91,86396,86397,86399,86401,86403,86405,86407,86409,86411,86413,86415],{"class":93,"line":121},[91,86398,2439],{"class":566},[91,86400,9369],{"class":101},[91,86402,9356],{"class":566},[91,86404,9374],{"class":169},[91,86406,7954],{"class":566},[91,86408,9379],{"class":101},[91,86410,9382],{"class":566},[91,86412,1363],{"class":108},[91,86414,1176],{"class":101},[91,86416,9362],{"class":566},[91,86418,86419],{"class":93,"line":134},[91,86420,1450],{"emptyLinePlaceholder":846},[91,86422,86423,86425,86427,86429,86431,86433,86435],{"class":93,"line":228},[91,86424,2641],{"class":566},[91,86426,9399],{"class":108},[91,86428,1366],{"class":566},[91,86430,7872],{"class":108},[91,86432,1235],{"class":101},[91,86434,1189],{"class":97},[91,86436,9410],{"class":101},[91,86438,86439],{"class":93,"line":250},[91,86440,1450],{"emptyLinePlaceholder":846},[91,86442,86443,86445,86447,86449,86451],{"class":93,"line":260},[91,86444,2439],{"class":566},[91,86446,9421],{"class":101},[91,86448,9382],{"class":566},[91,86450,9426],{"class":169},[91,86452,3866],{"class":101},[91,86454,86455,86457],{"class":93,"line":274},[91,86456,9433],{"class":97},[91,86458,9313],{"class":101},[91,86460,86461],{"class":93,"line":284},[91,86462,1698],{"class":101},[91,86464,86465],{"class":93,"line":299},[91,86466,9444],{"class":101},[16,86468,86469,9449,86471,64,86473,64,86475,64,86477,9462,86479,9465],{},[31,86470,9137],{},[31,86472,9452],{},[31,86474,9455],{},[31,86476,9458],{},[31,86478,9461],{},[31,86480,5177],{},[49,86482,9141],{"id":9468},[1112,86484],{"description":9471,"favicon":9248,"host":5541,"title":9472,"url":9473},[82,86486,86487],{"className":1154,"code":9476,"language":1156,"meta":87,"style":87},[31,86488,86489,86507,86511,86531,86543,86549,86553,86557,86561,86569,86575,86587,86591,86595],{"__ignoreMap":87},[91,86490,86491,86493,86495,86497,86499,86501,86503,86505],{"class":93,"line":94},[91,86492,1968],{"class":566},[91,86494,9485],{"class":108},[91,86496,1366],{"class":566},[91,86498,2676],{"class":566},[91,86500,9492],{"class":97},[91,86502,795],{"class":101},[91,86504,9497],{"class":169},[91,86506,3487],{"class":101},[91,86508,86509],{"class":93,"line":105},[91,86510,1450],{"emptyLinePlaceholder":846},[91,86512,86513,86515,86517,86519,86521,86523,86525,86527,86529],{"class":93,"line":121},[91,86514,9508],{"class":101},[91,86516,9329],{"class":97},[91,86518,795],{"class":101},[91,86520,9515],{"class":169},[91,86522,9337],{"class":101},[91,86524,9340],{"class":1172},[91,86526,1176],{"class":101},[91,86528,1179],{"class":566},[91,86530,102],{"class":101},[91,86532,86533,86535,86537,86539,86541],{"class":93,"line":134},[91,86534,2439],{"class":566},[91,86536,9532],{"class":101},[91,86538,9382],{"class":566},[91,86540,9537],{"class":169},[91,86542,3866],{"class":101},[91,86544,86545,86547],{"class":93,"line":228},[91,86546,9433],{"class":97},[91,86548,9313],{"class":101},[91,86550,86551],{"class":93,"line":250},[91,86552,1698],{"class":101},[91,86554,86555],{"class":93,"line":260},[91,86556,9444],{"class":101},[91,86558,86559],{"class":93,"line":274},[91,86560,1450],{"emptyLinePlaceholder":846},[91,86562,86563,86565,86567],{"class":93,"line":284},[91,86564,7471],{"class":566},[91,86566,9564],{"class":97},[91,86568,2007],{"class":101},[91,86570,86571,86573],{"class":93,"line":299},[91,86572,9571],{"class":97},[91,86574,9313],{"class":101},[91,86576,86577,86579,86581,86583,86585],{"class":93,"line":319},[91,86578,9578],{"class":101},[91,86580,9581],{"class":97},[91,86582,9584],{"class":101},[91,86584,9587],{"class":169},[91,86586,9590],{"class":101},[91,86588,86589],{"class":93,"line":334},[91,86590,137],{"class":101},[91,86592,86593],{"class":93,"line":355},[91,86594,1450],{"emptyLinePlaceholder":846},[91,86596,86597,86599,86601,86603,86605,86607,86609,86611,86613,86615,86617],{"class":93,"line":364},[91,86598,9326],{"class":101},[91,86600,9329],{"class":97},[91,86602,795],{"class":101},[91,86604,9609],{"class":169},[91,86606,9612],{"class":101},[91,86608,1179],{"class":566},[91,86610,9617],{"class":101},[91,86612,9620],{"class":97},[91,86614,9623],{"class":101},[91,86616,7557],{"class":108},[91,86618,9590],{"class":101},[16,86620,9630],{},[16,86622,86623],{},[19,86624],{"alt":9635,"src":9636},[16,86626,9639,86627,9642,86629,9646],{},[31,86628,9141],{},[31,86630,9645],{},[49,86632,9650],{"id":9649},[82,86634,86635],{"className":1154,"code":9653,"language":1156,"meta":87,"style":87},[31,86636,86637,86655,86659,86667,86675,86681],{"__ignoreMap":87},[91,86638,86639,86641,86643,86645,86647,86649,86651,86653],{"class":93,"line":94},[91,86640,1968],{"class":566},[91,86642,9662],{"class":108},[91,86644,1366],{"class":566},[91,86646,5049],{"class":101},[91,86648,9669],{"class":97},[91,86650,795],{"class":101},[91,86652,9674],{"class":169},[91,86654,3487],{"class":101},[91,86656,86657],{"class":93,"line":105},[91,86658,1450],{"emptyLinePlaceholder":846},[91,86660,86661,86663,86665],{"class":93,"line":121},[91,86662,9685],{"class":101},[91,86664,9581],{"class":97},[91,86666,9266],{"class":101},[91,86668,86669,86671,86673],{"class":93,"line":134},[91,86670,9694],{"class":101},[91,86672,9697],{"class":169},[91,86674,9700],{"class":101},[91,86676,86677,86679],{"class":93,"line":228},[91,86678,9705],{"class":169},[91,86680,7560],{"class":101},[91,86682,86683],{"class":93,"line":250},[91,86684,3487],{"class":101},[16,86686,86687,9717],{},[31,86688,9716],{},[82,86690,86691],{"className":1154,"code":9720,"language":1156,"meta":87,"style":87},[31,86692,86693,86713,86727,86739,86753,86757,86763],{"__ignoreMap":87},[91,86694,86695,86697,86699,86701,86703,86705,86707,86709,86711],{"class":93,"line":94},[91,86696,9326],{"class":101},[91,86698,9329],{"class":97},[91,86700,795],{"class":101},[91,86702,9515],{"class":169},[91,86704,9337],{"class":101},[91,86706,9340],{"class":1172},[91,86708,1176],{"class":101},[91,86710,1179],{"class":566},[91,86712,102],{"class":101},[91,86714,86715,86717,86719,86721,86723,86725],{"class":93,"line":105},[91,86716,2439],{"class":566},[91,86718,9749],{"class":101},[91,86720,9356],{"class":566},[91,86722,9754],{"class":169},[91,86724,1176],{"class":101},[91,86726,9362],{"class":566},[91,86728,86729,86731,86733,86735,86737],{"class":93,"line":121},[91,86730,2439],{"class":566},[91,86732,9765],{"class":101},[91,86734,9356],{"class":566},[91,86736,9770],{"class":101},[91,86738,9362],{"class":566},[91,86740,86741,86743,86745,86747,86749,86751],{"class":93,"line":134},[91,86742,2439],{"class":566},[91,86744,9532],{"class":101},[91,86746,9356],{"class":566},[91,86748,9783],{"class":169},[91,86750,1176],{"class":101},[91,86752,9362],{"class":566},[91,86754,86755],{"class":93,"line":228},[91,86756,1450],{"emptyLinePlaceholder":846},[91,86758,86759,86761],{"class":93,"line":250},[91,86760,9796],{"class":97},[91,86762,9799],{"class":101},[91,86764,86765],{"class":93,"line":260},[91,86766,9444],{"class":101},[16,86768,86769,9809,86771,9812,86773,9816,86775,9819],{},[31,86770,9808],{},[31,86772,9141],{},[31,86774,9815],{},[31,86776,8747],{},[1112,86778],{"description":9822,"favicon":9248,"host":5541,"title":9823,"url":9824},[16,86780,9827,86781,9831,86783,9834],{},[31,86782,9830],{},[31,86784,6591],{},[16,86786,9837,86787,5427,86789,9842],{},[31,86788,9141],{},[31,86790,9137],{},[49,86792,9846],{"id":9845},[1112,86794],{"description":9849,"favicon":9248,"host":5541,"title":9850,"url":9851},[16,86796,9854],{},[82,86798,86799],{"className":1154,"code":9857,"language":1156,"meta":87,"style":87},[31,86800,86801,86805,86813,86821,86829,86833,86837,86857,86869,86875,86879],{"__ignoreMap":87},[91,86802,86803],{"class":93,"line":94},[91,86804,9864],{"class":1343},[91,86806,86807,86809,86811],{"class":93,"line":105},[91,86808,9869],{"class":101},[91,86810,9581],{"class":97},[91,86812,7549],{"class":101},[91,86814,86815,86817,86819],{"class":93,"line":121},[91,86816,9878],{"class":101},[91,86818,9881],{"class":169},[91,86820,7560],{"class":101},[91,86822,86823,86825,86827],{"class":93,"line":134},[91,86824,9888],{"class":101},[91,86826,9891],{"class":169},[91,86828,9700],{"class":101},[91,86830,86831],{"class":93,"line":228},[91,86832,9444],{"class":101},[91,86834,86835],{"class":93,"line":250},[91,86836,1450],{"emptyLinePlaceholder":846},[91,86838,86839,86841,86843,86845,86847,86849,86851,86853,86855],{"class":93,"line":260},[91,86840,9906],{"class":101},[91,86842,9329],{"class":97},[91,86844,795],{"class":101},[91,86846,9515],{"class":169},[91,86848,9337],{"class":101},[91,86850,9340],{"class":1172},[91,86852,1176],{"class":101},[91,86854,1179],{"class":566},[91,86856,102],{"class":101},[91,86858,86859,86861,86863,86865,86867],{"class":93,"line":274},[91,86860,2439],{"class":566},[91,86862,9532],{"class":101},[91,86864,9382],{"class":566},[91,86866,9933],{"class":169},[91,86868,3866],{"class":101},[91,86870,86871,86873],{"class":93,"line":284},[91,86872,9940],{"class":97},[91,86874,9313],{"class":101},[91,86876,86877],{"class":93,"line":299},[91,86878,1698],{"class":101},[91,86880,86881],{"class":93,"line":319},[91,86882,9444],{"class":101},[16,86884,9953,86885,9956],{},[31,86886,9808],{},[82,86888,86889],{"className":7462,"code":9959,"language":7464,"meta":87,"style":87},[31,86890,86891,86895,86915,86929,86933,86941,86965,86979,86989,86997,87001,87005,87009,87013],{"__ignoreMap":87},[91,86892,86893],{"class":93,"line":94},[91,86894,9966],{"class":1343},[91,86896,86897,86899,86901,86903,86905,86907,86909,86911,86913],{"class":93,"line":105},[91,86898,9971],{"class":101},[91,86900,9329],{"class":97},[91,86902,795],{"class":101},[91,86904,9515],{"class":169},[91,86906,9337],{"class":101},[91,86908,9340],{"class":1172},[91,86910,1176],{"class":101},[91,86912,1179],{"class":566},[91,86914,102],{"class":101},[91,86916,86917,86919,86921,86923,86925,86927],{"class":93,"line":121},[91,86918,2439],{"class":566},[91,86920,9532],{"class":101},[91,86922,9356],{"class":566},[91,86924,9998],{"class":169},[91,86926,1176],{"class":101},[91,86928,9362],{"class":566},[91,86930,86931],{"class":93,"line":134},[91,86932,1450],{"emptyLinePlaceholder":846},[91,86934,86935,86937,86939],{"class":93,"line":228},[91,86936,10011],{"class":101},[91,86938,10014],{"class":97},[91,86940,9266],{"class":101},[91,86942,86943,86945,86947,86949,86951,86953,86955,86957,86959,86961,86963],{"class":93,"line":250},[91,86944,10021],{"class":101},[91,86946,10024],{"class":97},[91,86948,9584],{"class":101},[91,86950,10029],{"class":169},[91,86952,10032],{"class":101},[91,86954,1200],{"class":97},[91,86956,1169],{"class":101},[91,86958,10039],{"class":1172},[91,86960,1176],{"class":101},[91,86962,1179],{"class":566},[91,86964,102],{"class":101},[91,86966,86967,86969,86971,86973,86975,86977],{"class":93,"line":260},[91,86968,10050],{"class":566},[91,86970,2662],{"class":101},[91,86972,1968],{"class":566},[91,86974,10057],{"class":108},[91,86976,10060],{"class":566},[91,86978,10063],{"class":101},[91,86980,86981,86983,86985,86987],{"class":93,"line":274},[91,86982,10068],{"class":566},[91,86984,10071],{"class":101},[91,86986,9356],{"class":566},[91,86988,10076],{"class":101},[91,86990,86991,86993,86995],{"class":93,"line":284},[91,86992,10081],{"class":101},[91,86994,9581],{"class":97},[91,86996,10086],{"class":101},[91,86998,86999],{"class":93,"line":299},[91,87000,3307],{"class":101},[91,87002,87003],{"class":93,"line":319},[91,87004,10095],{"class":101},[91,87006,87007],{"class":93,"line":334},[91,87008,10100],{"class":101},[91,87010,87011],{"class":93,"line":355},[91,87012,10105],{"class":101},[91,87014,87015],{"class":93,"line":364},[91,87016,9444],{"class":101},[16,87018,87019,10115,87021,10119],{},[31,87020,10114],{},[31,87022,10118],{},[16,87024,10122],{},[829,87026,10125],{},{"title":87,"searchDepth":105,"depth":105,"links":87028},[87029,87030,87031,87032],{"id":9243,"depth":105,"text":9244},{"id":9468,"depth":105,"text":9141},{"id":9649,"depth":105,"text":9650},{"id":9845,"depth":105,"text":9846},{},{"title":9129,"description":10132},{"loc":10135},[2865,10141,8618,10142],{"id":10145,"title":10146,"body":87038,"created":10831,"description":10832,"extension":843,"filename":10833,"meta":87579,"navigation":846,"path":10835,"seo":87580,"sitemap":87581,"stem":10838,"subject":9122,"tags":87582,"updated":10831,"volume":853,"__hash__":10842},{"type":8,"value":87039,"toc":87571},[87040,87042,87044,87046,87048,87054,87056,87068,87070,87072,87198,87266,87268,87482,87484,87490,87492,87538,87542,87544,87546,87551,87557,87559,87561,87563,87565,87567,87569],[16,87041,10151],{},[49,87043,10155],{"id":10154},[16,87045,10158],{},[16,87047,10161],{},[24,87049,87050,87052],{},[27,87051,10166],{},[27,87053,10169],{},[49,87055,10173],{"id":10172},[82,87057,87058],{"className":6839,"code":10176,"language":6841,"meta":87,"style":87},[31,87059,87060],{"__ignoreMap":87},[91,87061,87062,87064,87066],{"class":93,"line":94},[91,87063,10183],{"class":97},[91,87065,8653],{"class":169},[91,87067,10188],{"class":169},[16,87069,10191],{},[16,87071,10194],{},[82,87073,87074],{"className":6839,"code":10197,"language":6841,"meta":87,"style":87},[31,87075,87076,87082,87090,87098,87106,87114,87122,87130,87138,87144,87152,87160,87168,87174,87180,87188,87194],{"__ignoreMap":87},[91,87077,87078,87080],{"class":93,"line":94},[91,87079,10204],{"class":97},[91,87081,8442],{"class":108},[91,87083,87084,87086,87088],{"class":93,"line":105},[91,87085,10211],{"class":108},[91,87087,10214],{"class":169},[91,87089,8442],{"class":108},[91,87091,87092,87094,87096],{"class":93,"line":121},[91,87093,10221],{"class":108},[91,87095,10224],{"class":108},[91,87097,8442],{"class":108},[91,87099,87100,87102,87104],{"class":93,"line":134},[91,87101,10231],{"class":108},[91,87103,10234],{"class":108},[91,87105,8442],{"class":108},[91,87107,87108,87110,87112],{"class":93,"line":228},[91,87109,10241],{"class":108},[91,87111,10244],{"class":108},[91,87113,8442],{"class":108},[91,87115,87116,87118,87120],{"class":93,"line":250},[91,87117,10251],{"class":108},[91,87119,10254],{"class":108},[91,87121,8442],{"class":108},[91,87123,87124,87126,87128],{"class":93,"line":260},[91,87125,10261],{"class":108},[91,87127,6594],{"class":108},[91,87129,8442],{"class":108},[91,87131,87132,87134,87136],{"class":93,"line":274},[91,87133,10270],{"class":108},[91,87135,10273],{"class":169},[91,87137,8442],{"class":108},[91,87139,87140,87142],{"class":93,"line":284},[91,87141,10280],{"class":108},[91,87143,8442],{"class":108},[91,87145,87146,87148,87150],{"class":93,"line":299},[91,87147,10287],{"class":108},[91,87149,10254],{"class":108},[91,87151,8442],{"class":108},[91,87153,87154,87156,87158],{"class":93,"line":319},[91,87155,10296],{"class":108},[91,87157,10299],{"class":169},[91,87159,8442],{"class":108},[91,87161,87162,87164,87166],{"class":93,"line":334},[91,87163,10306],{"class":108},[91,87165,10299],{"class":169},[91,87167,8442],{"class":108},[91,87169,87170,87172],{"class":93,"line":355},[91,87171,10315],{"class":108},[91,87173,8442],{"class":108},[91,87175,87176,87178],{"class":93,"line":364},[91,87177,10322],{"class":108},[91,87179,8442],{"class":108},[91,87181,87182,87184,87186],{"class":93,"line":378},[91,87183,10329],{"class":108},[91,87185,10332],{"class":169},[91,87187,8442],{"class":108},[91,87189,87190,87192],{"class":93,"line":387},[91,87191,10339],{"class":108},[91,87193,8442],{"class":108},[91,87195,87196],{"class":93,"line":402},[91,87197,10346],{"class":108},[812,87199,87200,87208],{},[3001,87201,87202],{},[3004,87203,87204,87206],{},[3007,87205,10356],{"align":10355},[3007,87207,10359],{"align":10355},[3017,87209,87210,87218,87226,87234,87242,87250,87258],{},[3004,87211,87212,87216],{},[3022,87213,87214],{"align":10355},[31,87215,10368],{},[3022,87217,10371],{"align":10355},[3004,87219,87220,87224],{},[3022,87221,87222],{"align":10355},[31,87223,10378],{},[3022,87225,10381],{"align":10355},[3004,87227,87228,87232],{},[3022,87229,87230],{"align":10355},[31,87231,10388],{},[3022,87233,10391],{"align":10355},[3004,87235,87236,87240],{},[3022,87237,87238],{"align":10355},[31,87239,10398],{},[3022,87241,10401],{"align":10355},[3004,87243,87244,87248],{},[3022,87245,87246],{"align":10355},[31,87247,10408],{},[3022,87249,10411],{"align":10355},[3004,87251,87252,87256],{},[3022,87253,87254],{"align":10355},[31,87255,10418],{},[3022,87257,10421],{"align":10355},[3004,87259,87260,87264],{},[3022,87261,87262],{"align":10355},[31,87263,10428],{},[3022,87265,10431],{"align":10355},[49,87267,10435],{"id":10434},[82,87269,87270],{"className":8477,"code":10438,"language":8479,"meta":87,"style":87},[31,87271,87272,87276,87282,87292,87302,87312,87322,87332,87342,87352,87362,87372,87382,87390,87394,87400,87406,87428,87450,87470,87474,87478],{"__ignoreMap":87},[91,87273,87274],{"class":93,"line":94},[91,87275,8486],{"class":101},[91,87277,87278,87280],{"class":93,"line":105},[91,87279,10449],{"class":108},[91,87281,8789],{"class":101},[91,87283,87284,87286,87288,87290],{"class":93,"line":121},[91,87285,10456],{"class":108},[91,87287,112],{"class":101},[91,87289,10461],{"class":169},[91,87291,7560],{"class":101},[91,87293,87294,87296,87298,87300],{"class":93,"line":134},[91,87295,10468],{"class":108},[91,87297,112],{"class":101},[91,87299,10473],{"class":169},[91,87301,7560],{"class":101},[91,87303,87304,87306,87308,87310],{"class":93,"line":228},[91,87305,10480],{"class":108},[91,87307,112],{"class":101},[91,87309,10485],{"class":169},[91,87311,7560],{"class":101},[91,87313,87314,87316,87318,87320],{"class":93,"line":250},[91,87315,10492],{"class":108},[91,87317,112],{"class":101},[91,87319,10485],{"class":169},[91,87321,7560],{"class":101},[91,87323,87324,87326,87328,87330],{"class":93,"line":260},[91,87325,10503],{"class":108},[91,87327,112],{"class":101},[91,87329,10485],{"class":169},[91,87331,7560],{"class":101},[91,87333,87334,87336,87338,87340],{"class":93,"line":274},[91,87335,10514],{"class":108},[91,87337,112],{"class":101},[91,87339,10485],{"class":169},[91,87341,7560],{"class":101},[91,87343,87344,87346,87348,87350],{"class":93,"line":284},[91,87345,10525],{"class":108},[91,87347,112],{"class":101},[91,87349,10485],{"class":169},[91,87351,7560],{"class":101},[91,87353,87354,87356,87358,87360],{"class":93,"line":299},[91,87355,10536],{"class":108},[91,87357,112],{"class":101},[91,87359,10541],{"class":169},[91,87361,7560],{"class":101},[91,87363,87364,87366,87368,87370],{"class":93,"line":319},[91,87365,10548],{"class":108},[91,87367,112],{"class":101},[91,87369,10553],{"class":169},[91,87371,7560],{"class":101},[91,87373,87374,87376,87378,87380],{"class":93,"line":334},[91,87375,10560],{"class":108},[91,87377,112],{"class":101},[91,87379,10553],{"class":169},[91,87381,7560],{"class":101},[91,87383,87384,87386,87388],{"class":93,"line":355},[91,87385,10571],{"class":108},[91,87387,112],{"class":101},[91,87389,10576],{"class":169},[91,87391,87392],{"class":93,"line":364},[91,87393,10581],{"class":101},[91,87395,87396,87398],{"class":93,"line":378},[91,87397,10586],{"class":108},[91,87399,8789],{"class":101},[91,87401,87402,87404],{"class":93,"line":387},[91,87403,10593],{"class":108},[91,87405,10596],{"class":101},[91,87407,87408,87410,87412,87414,87416,87418,87420,87422,87424,87426],{"class":93,"line":402},[91,87409,10601],{"class":169},[91,87411,64],{"class":101},[91,87413,10606],{"class":169},[91,87415,64],{"class":101},[91,87417,10611],{"class":169},[91,87419,64],{"class":101},[91,87421,10616],{"class":169},[91,87423,64],{"class":101},[91,87425,10621],{"class":169},[91,87427,10624],{"class":101},[91,87429,87430,87432,87434,87436,87438,87440,87442,87444,87446,87448],{"class":93,"line":422},[91,87431,10629],{"class":169},[91,87433,64],{"class":101},[91,87435,10634],{"class":169},[91,87437,64],{"class":101},[91,87439,10639],{"class":169},[91,87441,64],{"class":101},[91,87443,10644],{"class":169},[91,87445,64],{"class":101},[91,87447,10649],{"class":169},[91,87449,10624],{"class":101},[91,87451,87452,87454,87456,87458,87460,87462,87464,87466,87468],{"class":93,"line":438},[91,87453,10656],{"class":169},[91,87455,64],{"class":101},[91,87457,10661],{"class":169},[91,87459,64],{"class":101},[91,87461,10666],{"class":169},[91,87463,64],{"class":101},[91,87465,10671],{"class":169},[91,87467,64],{"class":101},[91,87469,10676],{"class":169},[91,87471,87472],{"class":93,"line":458},[91,87473,10681],{"class":101},[91,87475,87476],{"class":93,"line":467},[91,87477,1698],{"class":101},[91,87479,87480],{"class":93,"line":481},[91,87481,137],{"class":101},[16,87483,10692],{},[1722,87485,87486],{},[16,87487,87488,10700],{},[91,87489,10699],{},[49,87491,10704],{"id":10703},[82,87493,87494],{"className":6839,"code":10707,"language":6841,"meta":87,"style":87},[31,87495,87496,87508,87512,87516,87520,87524,87528,87532],{"__ignoreMap":87},[91,87497,87498,87500,87502,87504,87506],{"class":93,"line":94},[91,87499,10714],{"class":97},[91,87501,10717],{"class":566},[91,87503,10720],{"class":169},[91,87505,10723],{"class":566},[91,87507,8718],{"class":169},[91,87509,87510],{"class":93,"line":105},[91,87511,10730],{"class":169},[91,87513,87514],{"class":93,"line":121},[91,87515,10735],{"class":169},[91,87517,87518],{"class":93,"line":134},[91,87519,10740],{"class":169},[91,87521,87522],{"class":93,"line":228},[91,87523,10745],{"class":169},[91,87525,87526],{"class":93,"line":250},[91,87527,137],{"class":169},[91,87529,87530],{"class":93,"line":260},[91,87531,10754],{"class":169},[91,87533,87534,87536],{"class":93,"line":274},[91,87535,8747],{"class":108},[91,87537,8718],{"class":169},[16,87539,10763,87540,10767],{},[31,87541,10766],{},[49,87543,10771],{"id":10770},[16,87545,10774],{},[82,87547,87549],{"className":87548,"code":10778,"language":1099,"meta":87},[1097],[31,87550,10778],{"__ignoreMap":87},[24,87552,87553,87555],{},[27,87554,10785],{},[27,87556,10788],{},[16,87558,10791],{},[49,87560,6005],{"id":6004},[1112,87562],{"host":10796,"title":10797,"url":10798,"description":10799},[1112,87564],{"host":10802,"title":10803,"url":10804},[1112,87566],{"host":10807,"title":10808,"url":10809,"description":10810,"favicon":1320,"image":10811},[1112,87568],{"host":10814,"title":10815,"url":10816,"description":10817,"favicon":10818,"image":10819},[829,87570,10822],{},{"title":87,"searchDepth":105,"depth":105,"links":87572},[87573,87574,87575,87576,87577,87578],{"id":10154,"depth":105,"text":10155},{"id":10172,"depth":105,"text":10173},{"id":10434,"depth":105,"text":10435},{"id":10703,"depth":105,"text":10704},{"id":10770,"depth":105,"text":10771},{"id":6004,"depth":105,"text":6005},{},{"title":10146,"description":10832},{"loc":10835},[9124,10840,10841,9125],{"id":10844,"title":10845,"body":87584,"created":15033,"description":15034,"extension":843,"filename":15035,"meta":91057,"navigation":846,"path":15037,"seo":91058,"sitemap":91059,"stem":15040,"subject":2862,"tags":91060,"updated":15049,"volume":4441,"__hash__":15050},{"type":8,"value":87585,"toc":91038},[87586,87588,87590,87595,87597,87599,87603,87607,87611,87613,87615,87619,87621,87623,87631,87633,87635,87643,87645,87651,87655,87687,87693,87695,87697,87923,87930,87934,87942,87946,87950,87954,87956,87960,87962,87970,87974,87976,87978,87980,88152,88156,88628,88630,88640,88684,88688,88816,88818,88822,88824,88826,88828,88844,88848,88852,88974,88982,89066,89068,89070,89072,89124,89126,89132,89134,89136,89142,89144,89356,89364,89370,89686,89688,89692,89694,89696,89718,89722,89856,89858,89966,89970,89972,89977,89979,89983,89985,89989,90061,90063,90067,90069,90073,90075,90079,90083,90087,90089,90091,90093,90533,90545,90547,90549,90551,90556,90560,90562,90566,90568,90570,90576,90730,90736,90740,90742,90802,90808,90810,90826,90834,90980,90984,91032,91036],[16,87587,10850],{},[16,87589,10853],{},[16,87591,87592],{},[4306,87593,10860],{"href":10858,"rel":87594},[4310],[16,87596,10863],{},[49,87598,10867],{"id":10866},[16,87600,87601],{},[19,87602],{"alt":21,"src":10872},[16,87604,10875,87605,10879],{},[31,87606,10878],{},[16,87608,87609],{},[19,87610],{"alt":21,"src":10884},[16,87612,10887],{},[49,87614,10891],{"id":10890},[16,87616,87617],{},[19,87618],{"alt":21,"src":10896},[16,87620,10899],{},[16,87622,10902],{},[4530,87624,87625,87627,87629],{},[27,87626,10907],{},[27,87628,10910],{},[27,87630,10913],{},[16,87632,10916],{},[757,87634,10919],{"id":10919},[16,87636,87637,10924,87639,10928,87641,10932],{},[792,87638,10919],{},[31,87640,10927],{},[31,87642,10931],{},[757,87644,10910],{"id":10935},[16,87646,87647,10940,87649,10944],{},[792,87648,10910],{},[31,87650,10943],{},[16,87652,87653],{},[19,87654],{"alt":21,"src":10949},[82,87656,87657],{"className":10952,"code":10953,"language":10954,"meta":87,"style":87},[31,87658,87659,87663,87675,87683],{"__ignoreMap":87},[91,87660,87661],{"class":93,"line":94},[91,87662,10961],{"class":1343},[91,87664,87665,87667,87669,87671,87673],{"class":93,"line":105},[91,87666,10966],{"class":108},[91,87668,1235],{"class":101},[91,87670,10971],{"class":108},[91,87672,1366],{"class":566},[91,87674,102],{"class":101},[91,87676,87677,87679,87681],{"class":93,"line":121},[91,87678,10980],{"class":101},[91,87680,10983],{"class":169},[91,87682,7560],{"class":101},[91,87684,87685],{"class":93,"line":134},[91,87686,137],{"class":101},[16,87688,10992,87689,10996,87691,11000],{},[31,87690,10995],{},[31,87692,10999],{},[757,87694,11004],{"id":11003},[16,87696,11007],{},[82,87698,87699],{"className":11010,"code":11011,"language":11012,"meta":87,"style":87},[31,87700,87701,87709,87715,87721,87727,87733,87737,87743,87749,87757,87763,87773,87783,87791,87797,87805,87809,87819,87827,87831,87841,87849,87855,87863,87867,87877,87885,87891,87899,87907,87915],{"__ignoreMap":87},[91,87702,87703,87705,87707],{"class":93,"line":94},[91,87704,1238],{"class":159},[91,87706,112],{"class":101},[91,87708,11023],{"class":169},[91,87710,87711,87713],{"class":93,"line":105},[91,87712,11028],{"class":108},[91,87714,7265],{"class":101},[91,87716,87717,87719],{"class":93,"line":121},[91,87718,11035],{"class":159},[91,87720,7265],{"class":101},[91,87722,87723,87725],{"class":93,"line":134},[91,87724,11042],{"class":159},[91,87726,7265],{"class":101},[91,87728,87729,87731],{"class":93,"line":228},[91,87730,11049],{"class":101},[91,87732,11052],{"class":169},[91,87734,87735],{"class":93,"line":250},[91,87736,1450],{"emptyLinePlaceholder":846},[91,87738,87739,87741],{"class":93,"line":260},[91,87740,7347],{"class":159},[91,87742,7265],{"class":101},[91,87744,87745,87747],{"class":93,"line":274},[91,87746,11067],{"class":159},[91,87748,7265],{"class":101},[91,87750,87751,87753,87755],{"class":93,"line":284},[91,87752,7374],{"class":159},[91,87754,112],{"class":101},[91,87756,7379],{"class":169},[91,87758,87759,87761],{"class":93,"line":299},[91,87760,11082],{"class":159},[91,87762,7265],{"class":101},[91,87764,87765,87767,87769,87771],{"class":93,"line":319},[91,87766,11049],{"class":101},[91,87768,11091],{"class":159},[91,87770,112],{"class":101},[91,87772,11096],{"class":169},[91,87774,87775,87777,87779,87781],{"class":93,"line":334},[91,87776,11049],{"class":101},[91,87778,1238],{"class":159},[91,87780,112],{"class":101},[91,87782,11107],{"class":169},[91,87784,87785,87787,87789],{"class":93,"line":355},[91,87786,11112],{"class":159},[91,87788,112],{"class":101},[91,87790,11117],{"class":169},[91,87792,87793,87795],{"class":93,"line":364},[91,87794,11122],{"class":159},[91,87796,7265],{"class":101},[91,87798,87799,87801,87803],{"class":93,"line":378},[91,87800,11129],{"class":159},[91,87802,112],{"class":101},[91,87804,11134],{"class":169},[91,87806,87807],{"class":93,"line":387},[91,87808,11139],{"class":101},[91,87810,87811,87813,87815,87817],{"class":93,"line":402},[91,87812,11049],{"class":101},[91,87814,1238],{"class":159},[91,87816,112],{"class":101},[91,87818,11150],{"class":169},[91,87820,87821,87823,87825],{"class":93,"line":422},[91,87822,7320],{"class":159},[91,87824,112],{"class":101},[91,87826,11159],{"class":169},[91,87828,87829],{"class":93,"line":438},[91,87830,1450],{"emptyLinePlaceholder":846},[91,87832,87833,87835,87837,87839],{"class":93,"line":458},[91,87834,11049],{"class":101},[91,87836,1238],{"class":159},[91,87838,112],{"class":101},[91,87840,11174],{"class":169},[91,87842,87843,87845,87847],{"class":93,"line":467},[91,87844,7320],{"class":159},[91,87846,112],{"class":101},[91,87848,11183],{"class":169},[91,87850,87851,87853],{"class":93,"line":481},[91,87852,7262],{"class":159},[91,87854,7265],{"class":101},[91,87856,87857,87859,87861],{"class":93,"line":490},[91,87858,11194],{"class":159},[91,87860,112],{"class":101},[91,87862,11199],{"class":169},[91,87864,87865],{"class":93,"line":3310},[91,87866,11139],{"class":101},[91,87868,87869,87871,87873,87875],{"class":93,"line":3315},[91,87870,11049],{"class":101},[91,87872,1238],{"class":159},[91,87874,112],{"class":101},[91,87876,11214],{"class":169},[91,87878,87879,87881,87883],{"class":93,"line":3321},[91,87880,11112],{"class":159},[91,87882,112],{"class":101},[91,87884,11223],{"class":169},[91,87886,87887,87889],{"class":93,"line":3327},[91,87888,7262],{"class":159},[91,87890,7265],{"class":101},[91,87892,87893,87895,87897],{"class":93,"line":3333},[91,87894,11234],{"class":159},[91,87896,112],{"class":101},[91,87898,11239],{"class":169},[91,87900,87901,87903,87905],{"class":93,"line":3338},[91,87902,11244],{"class":159},[91,87904,112],{"class":101},[91,87906,11249],{"class":169},[91,87908,87909,87911,87913],{"class":93,"line":3343},[91,87910,11254],{"class":159},[91,87912,112],{"class":101},[91,87914,11259],{"class":169},[91,87916,87917,87919,87921],{"class":93,"line":7882},[91,87918,11264],{"class":159},[91,87920,112],{"class":101},[91,87922,11269],{"class":108},[16,87924,87925,11274,87927,11280],{},[31,87926,11028],{},[4306,87928,11279],{"href":11277,"rel":87929},[4310],[16,87931,87932,11285],{},[31,87933,7347],{},[16,87935,11288,87936,11292,87938,11296,87940,11299],{},[31,87937,11291],{},[31,87939,11295],{},[31,87941,10919],{},[16,87943,87944],{},[19,87945],{"alt":21,"src":11304},[16,87947,11307,87948,11311],{},[31,87949,11310],{},[16,87951,87952],{},[19,87953],{"alt":21,"src":11316},[16,87955,11319],{},[16,87957,87958],{},[19,87959],{"alt":21,"src":11324},[16,87961,11327],{},[4530,87963,87964,87968],{},[27,87965,11332,87966,11336],{},[31,87967,11335],{},[27,87969,11339],{},[16,87971,87972],{},[19,87973],{"alt":21,"src":11344},[16,87975,11347],{},[49,87977,11351],{"id":11350},[16,87979,11354],{},[82,87981,87982],{"className":10952,"code":11357,"language":10954,"meta":87,"style":87},[31,87983,87984,87988,87992,87996,88006,88016,88026,88036,88046,88056,88066,88070,88074,88084,88094,88104,88114,88124,88134,88144,88148],{"__ignoreMap":87},[91,87985,87986],{"class":93,"line":94},[91,87987,11364],{"class":1343},[91,87989,87990],{"class":93,"line":105},[91,87991,11369],{"class":101},[91,87993,87994],{"class":93,"line":121},[91,87995,11374],{"class":101},[91,87997,87998,88000,88002,88004],{"class":93,"line":134},[91,87999,11379],{"class":169},[91,88001,112],{"class":101},[91,88003,11384],{"class":169},[91,88005,7560],{"class":101},[91,88007,88008,88010,88012,88014],{"class":93,"line":228},[91,88009,11391],{"class":169},[91,88011,112],{"class":101},[91,88013,11396],{"class":169},[91,88015,7560],{"class":101},[91,88017,88018,88020,88022,88024],{"class":93,"line":250},[91,88019,11403],{"class":169},[91,88021,112],{"class":101},[91,88023,11408],{"class":169},[91,88025,7560],{"class":101},[91,88027,88028,88030,88032,88034],{"class":93,"line":260},[91,88029,11415],{"class":169},[91,88031,112],{"class":101},[91,88033,11420],{"class":169},[91,88035,7560],{"class":101},[91,88037,88038,88040,88042,88044],{"class":93,"line":274},[91,88039,11427],{"class":169},[91,88041,112],{"class":101},[91,88043,11432],{"class":169},[91,88045,7560],{"class":101},[91,88047,88048,88050,88052,88054],{"class":93,"line":284},[91,88049,11439],{"class":169},[91,88051,112],{"class":101},[91,88053,11444],{"class":169},[91,88055,7560],{"class":101},[91,88057,88058,88060,88062,88064],{"class":93,"line":299},[91,88059,11451],{"class":169},[91,88061,11454],{"class":101},[91,88063,11457],{"class":169},[91,88065,11460],{"class":101},[91,88067,88068],{"class":93,"line":319},[91,88069,10581],{"class":101},[91,88071,88072],{"class":93,"line":334},[91,88073,11374],{"class":101},[91,88075,88076,88078,88080,88082],{"class":93,"line":355},[91,88077,11379],{"class":169},[91,88079,112],{"class":101},[91,88081,11477],{"class":169},[91,88083,7560],{"class":101},[91,88085,88086,88088,88090,88092],{"class":93,"line":364},[91,88087,11391],{"class":169},[91,88089,112],{"class":101},[91,88091,11488],{"class":169},[91,88093,7560],{"class":101},[91,88095,88096,88098,88100,88102],{"class":93,"line":378},[91,88097,11403],{"class":169},[91,88099,112],{"class":101},[91,88101,11499],{"class":169},[91,88103,7560],{"class":101},[91,88105,88106,88108,88110,88112],{"class":93,"line":387},[91,88107,11415],{"class":169},[91,88109,112],{"class":101},[91,88111,11420],{"class":169},[91,88113,7560],{"class":101},[91,88115,88116,88118,88120,88122],{"class":93,"line":402},[91,88117,11427],{"class":169},[91,88119,112],{"class":101},[91,88121,11432],{"class":169},[91,88123,7560],{"class":101},[91,88125,88126,88128,88130,88132],{"class":93,"line":422},[91,88127,11439],{"class":169},[91,88129,112],{"class":101},[91,88131,11444],{"class":169},[91,88133,7560],{"class":101},[91,88135,88136,88138,88140,88142],{"class":93,"line":438},[91,88137,11451],{"class":169},[91,88139,11454],{"class":101},[91,88141,11457],{"class":169},[91,88143,11460],{"class":101},[91,88145,88146],{"class":93,"line":458},[91,88147,1698],{"class":101},[91,88149,88150],{"class":93,"line":467},[91,88151,11460],{"class":101},[16,88153,11552,88154,11556],{},[31,88155,11555],{},[82,88157,88158],{"className":11559,"code":11560,"language":11561,"meta":87,"style":87},[31,88159,88160,88172,88184,88188,88198,88208,88218,88228,88238,88248,88258,88262,88266,88278,88290,88306,88318,88322,88340,88378,88386,88390,88396,88414,88426,88430,88434,88438,88442,88446,88462,88472,88476,88480,88496,88506,88510,88514,88518,88526,88548,88562,88566,88570,88574,88578,88594,88608,88612,88616,88620],{"__ignoreMap":87},[91,88161,88162,88164,88166,88168,88170],{"class":93,"line":94},[91,88163,2499],{"class":566},[91,88165,11570],{"class":101},[91,88167,2505],{"class":566},[91,88169,11575],{"class":169},[91,88171,118],{"class":101},[91,88173,88174,88176,88178,88180,88182],{"class":93,"line":105},[91,88175,2499],{"class":566},[91,88177,11584],{"class":101},[91,88179,2505],{"class":566},[91,88181,11589],{"class":169},[91,88183,118],{"class":101},[91,88185,88186],{"class":93,"line":121},[91,88187,1450],{"emptyLinePlaceholder":846},[91,88189,88190,88192,88194,88196],{"class":93,"line":134},[91,88191,2574],{"class":566},[91,88193,11602],{"class":566},[91,88195,11605],{"class":97},[91,88197,102],{"class":101},[91,88199,88200,88202,88204,88206],{"class":93,"line":228},[91,88201,11612],{"class":1172},[91,88203,1208],{"class":566},[91,88205,1357],{"class":108},[91,88207,118],{"class":101},[91,88209,88210,88212,88214,88216],{"class":93,"line":250},[91,88211,11623],{"class":1172},[91,88213,1208],{"class":566},[91,88215,1357],{"class":108},[91,88217,118],{"class":101},[91,88219,88220,88222,88224,88226],{"class":93,"line":260},[91,88221,11634],{"class":1172},[91,88223,1208],{"class":566},[91,88225,1357],{"class":108},[91,88227,118],{"class":101},[91,88229,88230,88232,88234,88236],{"class":93,"line":274},[91,88231,11645],{"class":1172},[91,88233,1208],{"class":566},[91,88235,1357],{"class":108},[91,88237,118],{"class":101},[91,88239,88240,88242,88244,88246],{"class":93,"line":284},[91,88241,11656],{"class":1172},[91,88243,1208],{"class":566},[91,88245,1357],{"class":108},[91,88247,11663],{"class":101},[91,88249,88250,88252,88254,88256],{"class":93,"line":299},[91,88251,11668],{"class":1172},[91,88253,1208],{"class":566},[91,88255,1357],{"class":108},[91,88257,118],{"class":101},[91,88259,88260],{"class":93,"line":319},[91,88261,137],{"class":101},[91,88263,88264],{"class":93,"line":334},[91,88265,1450],{"emptyLinePlaceholder":846},[91,88267,88268,88270,88272,88274,88276],{"class":93,"line":355},[91,88269,8412],{"class":101},[91,88271,11689],{"class":97},[91,88273,11692],{"class":101},[91,88275,7557],{"class":108},[91,88277,11697],{"class":101},[91,88279,88280,88282,88284,88286,88288],{"class":93,"line":364},[91,88281,11702],{"class":566},[91,88283,11705],{"class":97},[91,88285,11708],{"class":566},[91,88287,11711],{"class":97},[91,88289,102],{"class":101},[91,88291,88292,88294,88296,88298,88300,88302,88304],{"class":93,"line":378},[91,88293,11718],{"class":566},[91,88295,11721],{"class":1172},[91,88297,1208],{"class":566},[91,88299,11726],{"class":97},[91,88301,11729],{"class":101},[91,88303,166],{"class":566},[91,88305,11734],{"class":101},[91,88307,88308,88310,88312,88314,88316],{"class":93,"line":387},[91,88309,11718],{"class":566},[91,88311,11741],{"class":1172},[91,88313,1366],{"class":566},[91,88315,8014],{"class":169},[91,88317,118],{"class":101},[91,88319,88320],{"class":93,"line":402},[91,88321,1450],{"emptyLinePlaceholder":846},[91,88323,88324,88326,88328,88330,88332,88334,88336,88338],{"class":93,"line":422},[91,88325,11756],{"class":566},[91,88327,11759],{"class":97},[91,88329,11762],{"class":101},[91,88331,1208],{"class":566},[91,88333,11605],{"class":97},[91,88335,1360],{"class":566},[91,88337,11771],{"class":108},[91,88339,102],{"class":101},[91,88341,88342,88344,88346,88348,88350,88352,88354,88356,88358,88360,88362,88364,88366,88368,88370,88372,88374,88376],{"class":93,"line":438},[91,88343,8218],{"class":566},[91,88345,795],{"class":101},[91,88347,11782],{"class":108},[91,88349,11785],{"class":101},[91,88351,11788],{"class":566},[91,88353,1363],{"class":108},[91,88355,7954],{"class":566},[91,88357,11795],{"class":108},[91,88359,11785],{"class":101},[91,88361,11788],{"class":566},[91,88363,8014],{"class":169},[91,88365,7954],{"class":566},[91,88367,11795],{"class":108},[91,88369,11808],{"class":101},[91,88371,11811],{"class":108},[91,88373,11814],{"class":566},[91,88375,11817],{"class":108},[91,88377,11820],{"class":101},[91,88379,88380,88382,88384],{"class":93,"line":458},[91,88381,11825],{"class":566},[91,88383,11771],{"class":108},[91,88385,118],{"class":101},[91,88387,88388],{"class":93,"line":467},[91,88389,1693],{"class":101},[91,88391,88392,88394],{"class":93,"line":481},[91,88393,11838],{"class":566},[91,88395,102],{"class":101},[91,88397,88398,88400,88402,88404,88406,88408,88410,88412],{"class":93,"line":490},[91,88399,11825],{"class":566},[91,88401,11795],{"class":108},[91,88403,11808],{"class":101},[91,88405,11851],{"class":97},[91,88407,795],{"class":101},[91,88409,11856],{"class":1172},[91,88411,11859],{"class":566},[91,88413,102],{"class":101},[91,88415,88416,88418,88420,88422,88424],{"class":93,"line":3310},[91,88417,11866],{"class":566},[91,88419,11869],{"class":101},[91,88421,9382],{"class":566},[91,88423,11795],{"class":108},[91,88425,11876],{"class":101},[91,88427,88428],{"class":93,"line":3315},[91,88429,11881],{"class":101},[91,88431,88432],{"class":93,"line":3321},[91,88433,1693],{"class":101},[91,88435,88436],{"class":93,"line":3327},[91,88437,1698],{"class":101},[91,88439,88440],{"class":93,"line":3333},[91,88441,1629],{"class":101},[91,88443,88444],{"class":93,"line":3338},[91,88445,11898],{"class":101},[91,88447,88448,88450,88452,88454,88456,88458,88460],{"class":93,"line":3343},[91,88449,11718],{"class":566},[91,88451,11905],{"class":97},[91,88453,795],{"class":101},[91,88455,11910],{"class":1172},[91,88457,1208],{"class":566},[91,88459,11605],{"class":97},[91,88461,11917],{"class":101},[91,88463,88464,88466,88468,88470],{"class":93,"line":7882},[91,88465,11922],{"class":108},[91,88467,11925],{"class":101},[91,88469,166],{"class":566},[91,88471,11930],{"class":101},[91,88473,88474],{"class":93,"line":7887},[91,88475,1698],{"class":101},[91,88477,88478],{"class":93,"line":7892},[91,88479,11898],{"class":101},[91,88481,88482,88484,88486,88488,88490,88492,88494],{"class":93,"line":7906},[91,88483,11718],{"class":566},[91,88485,11945],{"class":97},[91,88487,795],{"class":101},[91,88489,11950],{"class":1172},[91,88491,1208],{"class":566},[91,88493,1357],{"class":108},[91,88495,3866],{"class":101},[91,88497,88498,88500,88502,88504],{"class":93,"line":7922},[91,88499,11922],{"class":108},[91,88501,11785],{"class":101},[91,88503,166],{"class":566},[91,88505,11967],{"class":101},[91,88507,88508],{"class":93,"line":7927},[91,88509,1698],{"class":101},[91,88511,88512],{"class":93,"line":7967},[91,88513,1450],{"emptyLinePlaceholder":846},[91,88515,88516],{"class":93,"line":7983},[91,88517,11980],{"class":101},[91,88519,88520,88522,88524],{"class":93,"line":7988},[91,88521,11718],{"class":566},[91,88523,11987],{"class":97},[91,88525,2007],{"class":101},[91,88527,88528,88530,88532,88534,88536,88538,88540,88542,88544,88546],{"class":93,"line":7993},[91,88529,11994],{"class":101},[91,88531,5938],{"class":97},[91,88533,795],{"class":101},[91,88535,12001],{"class":169},[91,88537,8017],{"class":101},[91,88539,1200],{"class":97},[91,88541,795],{"class":101},[91,88543,12010],{"class":1172},[91,88545,11859],{"class":566},[91,88547,102],{"class":101},[91,88549,88550,88552,88554,88556,88558,88560],{"class":93,"line":8000},[91,88551,12019],{"class":108},[91,88553,12022],{"class":101},[91,88555,12025],{"class":97},[91,88557,795],{"class":101},[91,88559,12030],{"class":169},[91,88561,12033],{"class":101},[91,88563,88564],{"class":93,"line":8040},[91,88565,7745],{"class":101},[91,88567,88568],{"class":93,"line":8046},[91,88569,1698],{"class":101},[91,88571,88572],{"class":93,"line":8080},[91,88573,1450],{"emptyLinePlaceholder":846},[91,88575,88576],{"class":93,"line":8086},[91,88577,11980],{"class":101},[91,88579,88580,88582,88584,88586,88588,88590,88592],{"class":93,"line":12052},[91,88581,11718],{"class":566},[91,88583,12057],{"class":97},[91,88585,795],{"class":101},[91,88587,5177],{"class":1172},[91,88589,1208],{"class":566},[91,88591,1357],{"class":108},[91,88593,3866],{"class":101},[91,88595,88596,88598,88600,88602,88604,88606],{"class":93,"line":12070},[91,88597,11922],{"class":108},[91,88599,12022],{"class":101},[91,88601,12025],{"class":97},[91,88603,795],{"class":101},[91,88605,12081],{"class":169},[91,88607,12084],{"class":101},[91,88609,88610],{"class":93,"line":12087},[91,88611,1698],{"class":101},[91,88613,88614],{"class":93,"line":12092},[91,88615,137],{"class":101},[91,88617,88618],{"class":93,"line":12097},[91,88619,1450],{"emptyLinePlaceholder":846},[91,88621,88622,88624,88626],{"class":93,"line":12102},[91,88623,2574],{"class":566},[91,88625,12107],{"class":566},[91,88627,12110],{"class":101},[16,88629,12113],{},[4530,88631,88632,88636],{},[27,88633,88634,12121],{},[792,88635,12120],{},[27,88637,88638,12127],{},[792,88639,12126],{},[82,88641,88642],{"className":11559,"code":12130,"language":11561,"meta":87,"style":87},[31,88643,88644,88648,88660,88672],{"__ignoreMap":87},[91,88645,88646],{"class":93,"line":94},[91,88647,12137],{"class":1343},[91,88649,88650,88652,88654,88656,88658],{"class":93,"line":105},[91,88651,2499],{"class":566},[91,88653,12144],{"class":101},[91,88655,2505],{"class":566},[91,88657,12149],{"class":169},[91,88659,118],{"class":101},[91,88661,88662,88664,88666,88668,88670],{"class":93,"line":121},[91,88663,1968],{"class":566},[91,88665,12158],{"class":108},[91,88667,1366],{"class":566},[91,88669,12163],{"class":97},[91,88671,2030],{"class":101},[91,88673,88674,88676,88678,88680,88682],{"class":93,"line":134},[91,88675,12170],{"class":101},[91,88677,12173],{"class":97},[91,88679,795],{"class":101},[91,88681,12178],{"class":169},[91,88683,1594],{"class":101},[16,88685,12183,88686,12187],{},[31,88687,12186],{},[82,88689,88690],{"className":11559,"code":12190,"language":11561,"meta":87,"style":87},[31,88691,88692,88696,88708,88720,88732,88736,88748,88760,88770,88774,88786,88802,88812],{"__ignoreMap":87},[91,88693,88694],{"class":93,"line":94},[91,88695,12197],{"class":1343},[91,88697,88698,88700,88702,88704,88706],{"class":93,"line":105},[91,88699,2499],{"class":566},[91,88701,12204],{"class":101},[91,88703,2505],{"class":566},[91,88705,2508],{"class":169},[91,88707,118],{"class":101},[91,88709,88710,88712,88714,88716,88718],{"class":93,"line":121},[91,88711,2499],{"class":566},[91,88713,12217],{"class":101},[91,88715,2505],{"class":566},[91,88717,12222],{"class":169},[91,88719,118],{"class":101},[91,88721,88722,88724,88726,88728,88730],{"class":93,"line":134},[91,88723,2499],{"class":566},[91,88725,12144],{"class":101},[91,88727,2505],{"class":566},[91,88729,12149],{"class":169},[91,88731,118],{"class":101},[91,88733,88734],{"class":93,"line":228},[91,88735,1450],{"emptyLinePlaceholder":846},[91,88737,88738,88740,88742,88744,88746],{"class":93,"line":250},[91,88739,1968],{"class":566},[91,88741,12158],{"class":108},[91,88743,1366],{"class":566},[91,88745,12163],{"class":97},[91,88747,2030],{"class":101},[91,88749,88750,88752,88754,88756,88758],{"class":93,"line":260},[91,88751,1968],{"class":566},[91,88753,12259],{"class":108},[91,88755,1366],{"class":566},[91,88757,12264],{"class":97},[91,88759,2030],{"class":101},[91,88761,88762,88764,88766,88768],{"class":93,"line":274},[91,88763,1968],{"class":566},[91,88765,12273],{"class":108},[91,88767,1366],{"class":566},[91,88769,12278],{"class":101},[91,88771,88772],{"class":93,"line":284},[91,88773,1450],{"emptyLinePlaceholder":846},[91,88775,88776,88778,88780,88782,88784],{"class":93,"line":299},[91,88777,12170],{"class":101},[91,88779,12173],{"class":97},[91,88781,795],{"class":101},[91,88783,12293],{"class":169},[91,88785,12296],{"class":101},[91,88787,88788,88790,88792,88794,88796,88798,88800],{"class":93,"line":319},[91,88789,1968],{"class":566},[91,88791,12303],{"class":108},[91,88793,1366],{"class":566},[91,88795,12308],{"class":97},[91,88797,2088],{"class":101},[91,88799,1179],{"class":566},[91,88801,102],{"class":101},[91,88803,88804,88806,88808,88810],{"class":93,"line":334},[91,88805,2695],{"class":566},[91,88807,12321],{"class":101},[91,88809,12324],{"class":169},[91,88811,12327],{"class":101},[91,88813,88814],{"class":93,"line":355},[91,88815,1303],{"class":101},[16,88817,12334],{},[16,88819,88820],{},[19,88821],{"alt":21,"src":12339},[16,88823,12342],{},[49,88825,12346],{"id":12345},[16,88827,12349],{},[82,88829,88830],{"className":11559,"code":12352,"language":11561,"meta":87,"style":87},[31,88831,88832,88836],{"__ignoreMap":87},[91,88833,88834],{"class":93,"line":94},[91,88835,12359],{"class":101},[91,88837,88838,88840,88842],{"class":93,"line":105},[91,88839,12364],{"class":101},[91,88841,8409],{"class":566},[91,88843,12369],{"class":101},[16,88845,88846,12375],{},[792,88847,12374],{},[16,88849,88850,12381],{},[792,88851,12380],{},[82,88853,88854],{"className":11559,"code":12384,"language":11561,"meta":87,"style":87},[31,88855,88856,88860,88864,88872,88900,88910,88928,88944,88958,88966,88970],{"__ignoreMap":87},[91,88857,88858],{"class":93,"line":94},[91,88859,12391],{"class":1343},[91,88861,88862],{"class":93,"line":105},[91,88863,12396],{"class":101},[91,88865,88866,88868,88870],{"class":93,"line":121},[91,88867,12401],{"class":101},[91,88869,12404],{"class":97},[91,88871,12407],{"class":101},[91,88873,88874,88876,88878,88880,88882,88884,88886,88888,88890,88892,88894,88896,88898],{"class":93,"line":134},[91,88875,2695],{"class":566},[91,88877,12414],{"class":101},[91,88879,5938],{"class":97},[91,88881,795],{"class":101},[91,88883,12421],{"class":169},[91,88885,12424],{"class":101},[91,88887,12427],{"class":169},[91,88889,8017],{"class":101},[91,88891,1200],{"class":97},[91,88893,795],{"class":101},[91,88895,12010],{"class":1172},[91,88897,11859],{"class":566},[91,88899,102],{"class":101},[91,88901,88902,88904,88906,88908],{"class":93,"line":228},[91,88903,1382],{"class":566},[91,88905,12446],{"class":108},[91,88907,1366],{"class":566},[91,88909,12451],{"class":101},[91,88911,88912,88914,88916,88918,88920,88922,88924,88926],{"class":93,"line":250},[91,88913,12456],{"class":566},[91,88915,12459],{"class":108},[91,88917,1366],{"class":566},[91,88919,2676],{"class":566},[91,88921,12466],{"class":101},[91,88923,12469],{"class":97},[91,88925,11762],{"class":101},[91,88927,12474],{"class":566},[91,88929,88930,88932,88934,88936,88938,88940,88942],{"class":93,"line":260},[91,88931,12479],{"class":101},[91,88933,12482],{"class":97},[91,88935,795],{"class":101},[91,88937,12487],{"class":169},[91,88939,64],{"class":101},[91,88941,7557],{"class":108},[91,88943,1594],{"class":101},[91,88945,88946,88948,88950,88952,88954,88956],{"class":93,"line":274},[91,88947,12456],{"class":566},[91,88949,12500],{"class":108},[91,88951,1366],{"class":566},[91,88953,12505],{"class":101},[91,88955,12508],{"class":97},[91,88957,12511],{"class":101},[91,88959,88960,88962,88964],{"class":93,"line":284},[91,88961,7717],{"class":566},[91,88963,12518],{"class":101},[91,88965,12474],{"class":566},[91,88967,88968],{"class":93,"line":299},[91,88969,7575],{"class":101},[91,88971,88972],{"class":93,"line":319},[91,88973,137],{"class":101},[16,88975,12531,88976,12534,88978,12540],{},[31,88977,12508],{},[792,88979,88980],{},[31,88981,12539],{},[82,88983,88984],{"className":11559,"code":12543,"language":11561,"meta":87,"style":87},[31,88985,88986,88990,89008,89012,89016,89026,89050,89058,89062],{"__ignoreMap":87},[91,88987,88988],{"class":93,"line":94},[91,88989,12197],{"class":1343},[91,88991,88992,88994,88996,88998,89000,89002,89004,89006],{"class":93,"line":105},[91,88993,156],{"class":101},[91,88995,160],{"class":159},[91,88997,12558],{"class":97},[91,88999,166],{"class":566},[91,89001,12563],{"class":169},[91,89003,12566],{"class":101},[91,89005,160],{"class":159},[91,89007,173],{"class":101},[91,89009,89010],{"class":93,"line":121},[91,89011,1450],{"emptyLinePlaceholder":846},[91,89013,89014],{"class":93,"line":134},[91,89015,12579],{"class":1343},[91,89017,89018,89020,89022,89024],{"class":93,"line":228},[91,89019,2085],{"class":97},[91,89021,2088],{"class":101},[91,89023,1179],{"class":566},[91,89025,102],{"class":101},[91,89027,89028,89030,89032,89034,89036,89038,89040,89042,89044,89046,89048],{"class":93,"line":250},[91,89029,12594],{"class":101},[91,89031,12173],{"class":97},[91,89033,795],{"class":101},[91,89035,12601],{"class":169},[91,89037,12604],{"class":101},[91,89039,1200],{"class":97},[91,89041,1169],{"class":101},[91,89043,12010],{"class":1172},[91,89045,1176],{"class":101},[91,89047,1179],{"class":566},[91,89049,102],{"class":101},[91,89051,89052,89054,89056],{"class":93,"line":260},[91,89053,12621],{"class":101},[91,89055,166],{"class":566},[91,89057,12626],{"class":101},[91,89059,89060],{"class":93,"line":274},[91,89061,12631],{"class":101},[91,89063,89064],{"class":93,"line":284},[91,89065,9444],{"class":101},[16,89067,12638],{},[49,89069,12642],{"id":12641},[16,89071,12645],{},[82,89073,89074],{"className":11559,"code":12648,"language":11561,"meta":87,"style":87},[31,89075,89076,89098],{"__ignoreMap":87},[91,89077,89078,89080,89082,89084,89086,89088,89090,89092,89094,89096],{"class":93,"line":94},[91,89079,12655],{"class":101},[91,89081,8409],{"class":566},[91,89083,12660],{"class":108},[91,89085,12663],{"class":101},[91,89087,8409],{"class":566},[91,89089,12668],{"class":101},[91,89091,8409],{"class":566},[91,89093,12673],{"class":101},[91,89095,12676],{"class":566},[91,89097,12679],{"class":101},[91,89099,89100,89102,89104,89106,89108,89110,89112,89114,89116,89118,89120,89122],{"class":93,"line":105},[91,89101,12655],{"class":101},[91,89103,8409],{"class":566},[91,89105,12660],{"class":108},[91,89107,12663],{"class":101},[91,89109,8409],{"class":566},[91,89111,12668],{"class":101},[91,89113,8409],{"class":566},[91,89115,12698],{"class":101},[91,89117,8409],{"class":566},[91,89119,12673],{"class":101},[91,89121,12676],{"class":566},[91,89123,12707],{"class":101},[16,89125,12710],{},[1722,89127,89128],{},[16,89129,89130,12718],{},[91,89131,12717],{},[16,89133,12721],{},[16,89135,12724],{},[16,89137,12727,89138,12731,89140,12735],{},[31,89139,12730],{},[31,89141,12734],{},[16,89143,12738],{},[82,89145,89146],{"className":11559,"code":12741,"language":11561,"meta":87,"style":87},[31,89147,89148,89152,89156,89160,89164,89184,89206,89230,89236,89272,89280,89316,89320,89324,89328,89332,89336,89340],{"__ignoreMap":87},[91,89149,89150],{"class":93,"line":94},[91,89151,12748],{"class":1343},[91,89153,89154],{"class":93,"line":105},[91,89155,1450],{"emptyLinePlaceholder":846},[91,89157,89158],{"class":93,"line":121},[91,89159,12757],{"class":1343},[91,89161,89162],{"class":93,"line":134},[91,89163,12762],{"class":1343},[91,89165,89166,89168,89170,89172,89174,89176,89178,89180,89182],{"class":93,"line":228},[91,89167,1968],{"class":566},[91,89169,12769],{"class":97},[91,89171,1366],{"class":566},[91,89173,2001],{"class":566},[91,89175,2662],{"class":101},[91,89177,12778],{"class":1172},[91,89179,64],{"class":101},[91,89181,12783],{"class":1172},[91,89183,3866],{"class":101},[91,89185,89186,89188,89190,89192,89194,89196,89198,89200,89202,89204],{"class":93,"line":250},[91,89187,2695],{"class":566},[91,89189,2676],{"class":566},[91,89191,1976],{"class":108},[91,89193,1169],{"class":101},[91,89195,1930],{"class":1172},[91,89197,64],{"class":101},[91,89199,2065],{"class":1172},[91,89201,1176],{"class":101},[91,89203,1179],{"class":566},[91,89205,102],{"class":101},[91,89207,89208,89210,89212,89214,89216,89218,89220,89222,89224,89226,89228],{"class":93,"line":260},[91,89209,2454],{"class":101},[91,89211,1225],{"class":97},[91,89213,795],{"class":101},[91,89215,12818],{"class":169},[91,89217,12821],{"class":108},[91,89219,12824],{"class":169},[91,89221,12827],{"class":101},[91,89223,12818],{"class":169},[91,89225,12821],{"class":108},[91,89227,12818],{"class":169},[91,89229,1594],{"class":101},[91,89231,89232,89234],{"class":93,"line":274},[91,89233,12840],{"class":566},[91,89235,102],{"class":101},[91,89237,89238,89240,89242,89244,89246,89248,89250,89252,89254,89256,89258,89260,89262,89264,89266,89268,89270],{"class":93,"line":284},[91,89239,12847],{"class":101},[91,89241,12734],{"class":97},[91,89243,12852],{"class":101},[91,89245,12855],{"class":1172},[91,89247,64],{"class":101},[91,89249,12860],{"class":1172},[91,89251,1176],{"class":101},[91,89253,1179],{"class":566},[91,89255,12867],{"class":101},[91,89257,9382],{"class":566},[91,89259,1363],{"class":108},[91,89261,12874],{"class":566},[91,89263,12877],{"class":97},[91,89265,12880],{"class":101},[91,89267,1208],{"class":566},[91,89269,12885],{"class":97},[91,89271,12888],{"class":101},[91,89273,89274,89276,89278],{"class":93,"line":299},[91,89275,12893],{"class":101},[91,89277,1256],{"class":566},[91,89279,12898],{"class":101},[91,89281,89282,89284,89286,89288,89290,89292,89294,89296,89298,89300,89302,89304,89306,89308,89310,89312,89314],{"class":93,"line":319},[91,89283,12847],{"class":101},[91,89285,12905],{"class":97},[91,89287,12852],{"class":101},[91,89289,12855],{"class":1172},[91,89291,64],{"class":101},[91,89293,12860],{"class":1172},[91,89295,1176],{"class":101},[91,89297,1179],{"class":566},[91,89299,12867],{"class":101},[91,89301,9382],{"class":566},[91,89303,1363],{"class":108},[91,89305,12874],{"class":566},[91,89307,12877],{"class":97},[91,89309,12880],{"class":101},[91,89311,1208],{"class":566},[91,89313,12885],{"class":97},[91,89315,12888],{"class":101},[91,89317,89318],{"class":93,"line":334},[91,89319,1693],{"class":101},[91,89321,89322],{"class":93,"line":355},[91,89323,12631],{"class":101},[91,89325,89326],{"class":93,"line":364},[91,89327,137],{"class":101},[91,89329,89330],{"class":93,"line":378},[91,89331,1450],{"emptyLinePlaceholder":846},[91,89333,89334],{"class":93,"line":387},[91,89335,12956],{"class":1343},[91,89337,89338],{"class":93,"line":402},[91,89339,12961],{"class":1343},[91,89341,89342,89344,89346,89348,89350,89352,89354],{"class":93,"line":422},[91,89343,12966],{"class":566},[91,89345,12769],{"class":97},[91,89347,12971],{"class":101},[91,89349,12974],{"class":97},[91,89351,12977],{"class":101},[91,89353,7557],{"class":108},[91,89355,9444],{"class":101},[16,89357,12984,89358,12987,89360,12990,89362,12994],{},[31,89359,12905],{},[31,89361,12905],{},[31,89363,12993],{},[16,89365,12997,89366,13000,89368,13004],{},[31,89367,11291],{},[31,89369,13003],{},[82,89371,89372],{"className":11559,"code":13007,"language":11561,"meta":87,"style":87},[31,89373,89374,89390,89406,89410,89426,89456,89476,89482,89498,89506,89512,89516,89520,89524,89536,89544,89556,89568,89580,89588,89592,89596,89600,89604,89620,89632,89646,89660,89674,89678,89682],{"__ignoreMap":87},[91,89375,89376,89378,89380,89382,89384,89386,89388],{"class":93,"line":94},[91,89377,1968],{"class":566},[91,89379,13016],{"class":108},[91,89381,1366],{"class":566},[91,89383,13021],{"class":97},[91,89385,795],{"class":101},[91,89387,13026],{"class":169},[91,89389,3487],{"class":101},[91,89391,89392,89394,89396,89398,89400,89402,89404],{"class":93,"line":105},[91,89393,1968],{"class":566},[91,89395,13035],{"class":108},[91,89397,1366],{"class":566},[91,89399,13021],{"class":97},[91,89401,795],{"class":101},[91,89403,13044],{"class":169},[91,89405,3487],{"class":101},[91,89407,89408],{"class":93,"line":121},[91,89409,1450],{"emptyLinePlaceholder":846},[91,89411,89412,89414,89416,89418,89420,89422,89424],{"class":93,"line":134},[91,89413,1968],{"class":566},[91,89415,13057],{"class":108},[91,89417,1366],{"class":566},[91,89419,13021],{"class":97},[91,89421,795],{"class":101},[91,89423,13066],{"class":169},[91,89425,3487],{"class":101},[91,89427,89428,89430,89432,89434,89436,89438,89440,89442,89444,89446,89448,89450,89452,89454],{"class":93,"line":228},[91,89429,1968],{"class":566},[91,89431,13075],{"class":108},[91,89433,1366],{"class":566},[91,89435,13080],{"class":101},[91,89437,13083],{"class":97},[91,89439,795],{"class":101},[91,89441,11856],{"class":1172},[91,89443,11859],{"class":566},[91,89445,13092],{"class":169},[91,89447,11856],{"class":101},[91,89449,1235],{"class":169},[91,89451,5177],{"class":101},[91,89453,1241],{"class":169},[91,89455,3487],{"class":101},[91,89457,89458,89460,89462,89464,89466,89468,89470,89472,89474],{"class":93,"line":250},[91,89459,1968],{"class":566},[91,89461,13109],{"class":108},[91,89463,1366],{"class":566},[91,89465,13080],{"class":101},[91,89467,13083],{"class":97},[91,89469,795],{"class":101},[91,89471,11856],{"class":1172},[91,89473,11859],{"class":566},[91,89475,102],{"class":101},[91,89477,89478,89480],{"class":93,"line":260},[91,89479,2695],{"class":566},[91,89481,13130],{"class":101},[91,89483,89484,89486,89488,89490,89492,89494,89496],{"class":93,"line":274},[91,89485,13135],{"class":101},[91,89487,13138],{"class":169},[91,89489,11856],{"class":101},[91,89491,1235],{"class":169},[91,89493,1238],{"class":101},[91,89495,13147],{"class":169},[91,89497,7560],{"class":101},[91,89499,89500,89502,89504],{"class":93,"line":284},[91,89501,13154],{"class":101},[91,89503,7829],{"class":566},[91,89505,13159],{"class":101},[91,89507,89508,89510],{"class":93,"line":299},[91,89509,13164],{"class":101},[91,89511,13167],{"class":169},[91,89513,89514],{"class":93,"line":319},[91,89515,1698],{"class":101},[91,89517,89518],{"class":93,"line":334},[91,89519,9444],{"class":101},[91,89521,89522],{"class":93,"line":355},[91,89523,1450],{"emptyLinePlaceholder":846},[91,89525,89526,89528,89530,89532,89534],{"class":93,"line":364},[91,89527,10966],{"class":108},[91,89529,1235],{"class":101},[91,89531,10971],{"class":108},[91,89533,1366],{"class":566},[91,89535,13192],{"class":101},[91,89537,89538,89540,89542],{"class":93,"line":378},[91,89539,13197],{"class":566},[91,89541,13035],{"class":97},[91,89543,7549],{"class":101},[91,89545,89546,89548,89550,89552,89554],{"class":93,"line":387},[91,89547,13206],{"class":101},[91,89549,13209],{"class":97},[91,89551,13212],{"class":101},[91,89553,13215],{"class":169},[91,89555,8037],{"class":101},[91,89557,89558,89560,89562,89564,89566],{"class":93,"line":402},[91,89559,13222],{"class":101},[91,89561,13225],{"class":169},[91,89563,64],{"class":101},[91,89565,1442],{"class":566},[91,89567,13232],{"class":101},[91,89569,89570,89572,89574,89576,89578],{"class":93,"line":422},[91,89571,13237],{"class":101},[91,89573,13240],{"class":566},[91,89575,13243],{"class":101},[91,89577,13246],{"class":97},[91,89579,7549],{"class":101},[91,89581,89582,89584,89586],{"class":93,"line":438},[91,89583,13253],{"class":101},[91,89585,13256],{"class":169},[91,89587,7560],{"class":101},[91,89589,89590],{"class":93,"line":458},[91,89591,10100],{"class":101},[91,89593,89594],{"class":93,"line":467},[91,89595,13267],{"class":101},[91,89597,89598],{"class":93,"line":481},[91,89599,12327],{"class":101},[91,89601,89602],{"class":93,"line":490},[91,89603,10961],{"class":1343},[91,89605,89606,89608,89610,89612,89614,89616,89618],{"class":93,"line":3310},[91,89607,1968],{"class":566},[91,89609,13282],{"class":108},[91,89611,1366],{"class":566},[91,89613,13021],{"class":97},[91,89615,795],{"class":101},[91,89617,13291],{"class":169},[91,89619,1594],{"class":101},[91,89621,89622,89624,89626,89628,89630],{"class":93,"line":3315},[91,89623,10966],{"class":108},[91,89625,1235],{"class":101},[91,89627,10971],{"class":108},[91,89629,1366],{"class":566},[91,89631,102],{"class":101},[91,89633,89634,89636,89638,89640,89642,89644],{"class":93,"line":3321},[91,89635,13310],{"class":97},[91,89637,6549],{"class":101},[91,89639,13315],{"class":1172},[91,89641,1176],{"class":101},[91,89643,1179],{"class":566},[91,89645,102],{"class":101},[91,89647,89648,89650,89652,89654,89656,89658],{"class":93,"line":3327},[91,89649,13326],{"class":566},[91,89651,13329],{"class":101},[91,89653,13332],{"class":108},[91,89655,13335],{"class":566},[91,89657,13338],{"class":169},[91,89659,3866],{"class":101},[91,89661,89662,89664,89666,89668,89670,89672],{"class":93,"line":3333},[91,89663,13345],{"class":101},[91,89665,13348],{"class":97},[91,89667,795],{"class":101},[91,89669,1442],{"class":566},[91,89671,13355],{"class":101},[91,89673,13358],{"class":1343},[91,89675,89676],{"class":93,"line":3338},[91,89677,10095],{"class":101},[91,89679,89680],{"class":93,"line":3343},[91,89681,3477],{"class":101},[91,89683,89684],{"class":93,"line":7882},[91,89685,137],{"class":101},[16,89687,13373],{},[16,89689,89690],{},[19,89691],{"alt":21,"src":13378},[16,89693,13381],{},[49,89695,13385],{"id":13384},[82,89697,89698],{"className":11559,"code":13388,"language":11561,"meta":87,"style":87},[31,89699,89700],{"__ignoreMap":87},[91,89701,89702,89704,89706,89708,89710,89712,89714,89716],{"class":93,"line":94},[91,89703,12655],{"class":101},[91,89705,8409],{"class":566},[91,89707,12660],{"class":108},[91,89709,13401],{"class":101},[91,89711,8409],{"class":566},[91,89713,13406],{"class":101},[91,89715,8409],{"class":566},[91,89717,13411],{"class":101},[16,89719,13414,89720,13418],{},[31,89721,13417],{},[82,89723,89724],{"className":11559,"code":13421,"language":11561,"meta":87,"style":87},[31,89725,89726,89742,89762,89768,89784,89792,89798,89802,89806,89810,89822,89828,89836,89844,89848,89852],{"__ignoreMap":87},[91,89727,89728,89730,89732,89734,89736,89738,89740],{"class":93,"line":94},[91,89729,1968],{"class":566},[91,89731,13430],{"class":108},[91,89733,1366],{"class":566},[91,89735,13021],{"class":97},[91,89737,795],{"class":101},[91,89739,13439],{"class":169},[91,89741,13442],{"class":101},[91,89743,89744,89746,89748,89750,89752,89754,89756,89758,89760],{"class":93,"line":105},[91,89745,1968],{"class":566},[91,89747,13109],{"class":108},[91,89749,1366],{"class":566},[91,89751,13080],{"class":101},[91,89753,13083],{"class":97},[91,89755,795],{"class":101},[91,89757,11856],{"class":1172},[91,89759,11859],{"class":566},[91,89761,102],{"class":101},[91,89763,89764,89766],{"class":93,"line":121},[91,89765,2695],{"class":566},[91,89767,13130],{"class":101},[91,89769,89770,89772,89774,89776,89778,89780,89782],{"class":93,"line":134},[91,89771,13473],{"class":101},[91,89773,13138],{"class":169},[91,89775,11856],{"class":101},[91,89777,1235],{"class":169},[91,89779,5177],{"class":101},[91,89781,13147],{"class":169},[91,89783,7560],{"class":101},[91,89785,89786,89788,89790],{"class":93,"line":228},[91,89787,13490],{"class":101},[91,89789,7829],{"class":566},[91,89791,13495],{"class":101},[91,89793,89794,89796],{"class":93,"line":250},[91,89795,13164],{"class":101},[91,89797,13167],{"class":169},[91,89799,89800],{"class":93,"line":260},[91,89801,1698],{"class":101},[91,89803,89804],{"class":93,"line":274},[91,89805,9444],{"class":101},[91,89807,89808],{"class":93,"line":284},[91,89809,1450],{"emptyLinePlaceholder":846},[91,89811,89812,89814,89816,89818,89820],{"class":93,"line":299},[91,89813,10966],{"class":108},[91,89815,1235],{"class":101},[91,89817,10971],{"class":108},[91,89819,1366],{"class":566},[91,89821,13192],{"class":101},[91,89823,89824,89826],{"class":93,"line":319},[91,89825,13530],{"class":566},[91,89827,7560],{"class":101},[91,89829,89830,89832,89834],{"class":93,"line":334},[91,89831,13197],{"class":566},[91,89833,13430],{"class":97},[91,89835,7549],{"class":101},[91,89837,89838,89840,89842],{"class":93,"line":355},[91,89839,13545],{"class":101},[91,89841,13548],{"class":108},[91,89843,7560],{"class":101},[91,89845,89846],{"class":93,"line":364},[91,89847,13555],{"class":101},[91,89849,89850],{"class":93,"line":378},[91,89851,12631],{"class":101},[91,89853,89854],{"class":93,"line":387},[91,89855,12327],{"class":101},[16,89857,13566],{},[82,89859,89860],{"className":11559,"code":13569,"language":11561,"meta":87,"style":87},[31,89861,89862,89870,89882,89894,89906,89914,89922,89934,89946,89958],{"__ignoreMap":87},[91,89863,89864,89866,89868],{"class":93,"line":94},[91,89865,156],{"class":101},[91,89867,5177],{"class":159},[91,89869,173],{"class":101},[91,89871,89872,89874,89876,89878,89880],{"class":93,"line":105},[91,89873,178],{"class":101},[91,89875,13586],{"class":159},[91,89877,13589],{"class":101},[91,89879,13586],{"class":159},[91,89881,173],{"class":101},[91,89883,89884,89886,89888,89890,89892],{"class":93,"line":121},[91,89885,178],{"class":101},[91,89887,13600],{"class":159},[91,89889,13603],{"class":101},[91,89891,13600],{"class":159},[91,89893,173],{"class":101},[91,89895,89896,89898,89900,89902,89904],{"class":93,"line":134},[91,89897,178],{"class":101},[91,89899,13614],{"class":159},[91,89901,13617],{"class":101},[91,89903,13614],{"class":159},[91,89905,173],{"class":101},[91,89907,89908,89910,89912],{"class":93,"line":228},[91,89909,493],{"class":101},[91,89911,5177],{"class":159},[91,89913,173],{"class":101},[91,89915,89916,89918,89920],{"class":93,"line":250},[91,89917,156],{"class":101},[91,89919,5177],{"class":159},[91,89921,173],{"class":101},[91,89923,89924,89926,89928,89930,89932],{"class":93,"line":260},[91,89925,178],{"class":101},[91,89927,13586],{"class":159},[91,89929,13646],{"class":101},[91,89931,13586],{"class":159},[91,89933,173],{"class":101},[91,89935,89936,89938,89940,89942,89944],{"class":93,"line":274},[91,89937,178],{"class":101},[91,89939,13600],{"class":159},[91,89941,13603],{"class":101},[91,89943,13600],{"class":159},[91,89945,173],{"class":101},[91,89947,89948,89950,89952,89954,89956],{"class":93,"line":284},[91,89949,178],{"class":101},[91,89951,13614],{"class":159},[91,89953,13617],{"class":101},[91,89955,13614],{"class":159},[91,89957,173],{"class":101},[91,89959,89960,89962,89964],{"class":93,"line":299},[91,89961,493],{"class":101},[91,89963,5177],{"class":159},[91,89965,173],{"class":101},[16,89967,13685,89968,13689],{},[31,89969,13688],{},[757,89971,13693],{"id":13692},[16,89973,89974],{},[4306,89975,13700],{"href":13698,"rel":89976},[4310],[16,89978,13703],{},[16,89980,89981],{},[19,89982],{"alt":21,"src":13708},[16,89984,13711],{},[16,89986,89987],{},[19,89988],{"alt":21,"src":13716},[82,89990,89991],{"className":11559,"code":13719,"language":11561,"meta":87,"style":87},[31,89992,89993,90003,90017,90025,90045,90053],{"__ignoreMap":87},[91,89994,89995,89997,89999,90001],{"class":93,"line":94},[91,89996,13726],{"class":566},[91,89998,13729],{"class":108},[91,90000,13732],{"class":101},[91,90002,173],{"class":566},[91,90004,90005,90007,90009,90011,90013,90015],{"class":93,"line":105},[91,90006,156],{"class":101},[91,90008,149],{"class":159},[91,90010,1951],{"class":97},[91,90012,166],{"class":566},[91,90014,13747],{"class":169},[91,90016,173],{"class":101},[91,90018,90019,90021,90023],{"class":93,"line":121},[91,90020,2125],{"class":101},[91,90022,13756],{"class":159},[91,90024,173],{"class":101},[91,90026,90027,90029,90031,90033,90035,90037,90039,90041,90043],{"class":93,"line":134},[91,90028,178],{"class":101},[91,90030,13765],{"class":159},[91,90032,13768],{"class":97},[91,90034,166],{"class":566},[91,90036,13773],{"class":169},[91,90038,13776],{"class":97},[91,90040,166],{"class":566},[91,90042,13781],{"class":169},[91,90044,2147],{"class":101},[91,90046,90047,90049,90051],{"class":93,"line":228},[91,90048,277],{"class":101},[91,90050,13756],{"class":159},[91,90052,173],{"class":101},[91,90054,90055,90057,90059],{"class":93,"line":250},[91,90056,493],{"class":101},[91,90058,149],{"class":159},[91,90060,173],{"class":101},[16,90062,13802],{},[16,90064,90065],{},[19,90066],{"alt":21,"src":13807},[16,90068,13810],{},[16,90070,90071],{},[19,90072],{"alt":21,"src":13815},[16,90074,13818],{},[16,90076,90077],{},[19,90078],{"alt":21,"src":13823},[16,90080,13826,90081,13830],{},[31,90082,13829],{},[16,90084,90085],{},[19,90086],{"alt":21,"src":13835},[16,90088,13838],{},[49,90090,13842],{"id":13841},[16,90092,13845],{},[82,90094,90095],{"className":11559,"code":13848,"language":11561,"meta":87,"style":87},[31,90096,90097,90109,90117,90127,90137,90149,90173,90185,90191,90195,90217,90255,90269,90283,90309,90331,90335,90345,90353,90361,90369,90377,90385,90389,90397,90405,90413,90421,90429,90437,90445,90453,90459,90487,90515,90523,90529],{"__ignoreMap":87},[91,90098,90099,90101,90103,90105,90107],{"class":93,"line":94},[91,90100,10966],{"class":108},[91,90102,1235],{"class":101},[91,90104,10971],{"class":108},[91,90106,1366],{"class":566},[91,90108,13192],{"class":101},[91,90110,90111,90113,90115],{"class":93,"line":105},[91,90112,13197],{"class":566},[91,90114,13035],{"class":97},[91,90116,7549],{"class":101},[91,90118,90119,90121,90123,90125],{"class":93,"line":121},[91,90120,13875],{"class":97},[91,90122,795],{"class":101},[91,90124,13880],{"class":1172},[91,90126,3866],{"class":101},[91,90128,90129,90131,90133,90135],{"class":93,"line":134},[91,90130,13887],{"class":566},[91,90132,13890],{"class":101},[91,90134,166],{"class":566},[91,90136,13895],{"class":101},[91,90138,90139,90141,90143,90145,90147],{"class":93,"line":228},[91,90140,13900],{"class":101},[91,90142,1225],{"class":97},[91,90144,795],{"class":101},[91,90146,13907],{"class":169},[91,90148,13910],{"class":101},[91,90150,90151,90153,90155,90157,90159,90161,90163,90165,90167,90169,90171],{"class":93,"line":250},[91,90152,13915],{"class":566},[91,90154,13918],{"class":108},[91,90156,1366],{"class":566},[91,90158,13080],{"class":101},[91,90160,11851],{"class":97},[91,90162,795],{"class":101},[91,90164,11856],{"class":1172},[91,90166,11859],{"class":566},[91,90168,13933],{"class":101},[91,90170,13936],{"class":97},[91,90172,13939],{"class":101},[91,90174,90175,90177,90179,90181,90183],{"class":93,"line":260},[91,90176,13326],{"class":566},[91,90178,13946],{"class":101},[91,90180,11788],{"class":566},[91,90182,1363],{"class":108},[91,90184,3866],{"class":101},[91,90186,90187,90189],{"class":93,"line":274},[91,90188,11866],{"class":566},[91,90190,13895],{"class":101},[91,90192,90193],{"class":93,"line":284},[91,90194,10095],{"class":101},[91,90196,90197,90199,90201,90203,90205,90207,90209,90211,90213,90215],{"class":93,"line":299},[91,90198,13915],{"class":566},[91,90200,13969],{"class":101},[91,90202,13972],{"class":108},[91,90204,64],{"class":101},[91,90206,13977],{"class":108},[91,90208,64],{"class":101},[91,90210,13982],{"class":108},[91,90212,13985],{"class":101},[91,90214,166],{"class":566},[91,90216,13990],{"class":101},[91,90218,90219,90221,90223,90225,90227,90229,90231,90233,90235,90237,90239,90241,90243,90245,90247,90249,90251,90253],{"class":93,"line":319},[91,90220,13915],{"class":566},[91,90222,13997],{"class":108},[91,90224,1366],{"class":566},[91,90226,14002],{"class":101},[91,90228,8372],{"class":566},[91,90230,14007],{"class":101},[91,90232,14010],{"class":97},[91,90234,795],{"class":101},[91,90236,8361],{"class":169},[91,90238,14018],{"class":14017},[91,90240,8361],{"class":169},[91,90242,14023],{"class":566},[91,90244,64],{"class":101},[91,90246,14028],{"class":169},[91,90248,1176],{"class":101},[91,90250,1208],{"class":566},[91,90252,14035],{"class":101},[91,90254,14038],{"class":108},[91,90256,90257,90259,90261,90263,90265,90267],{"class":93,"line":334},[91,90258,13915],{"class":566},[91,90260,14045],{"class":108},[91,90262,1366],{"class":566},[91,90264,14050],{"class":101},[91,90266,7829],{"class":566},[91,90268,14055],{"class":169},[91,90270,90271,90273,90275,90277,90279,90281],{"class":93,"line":355},[91,90272,13915],{"class":566},[91,90274,14062],{"class":108},[91,90276,1366],{"class":566},[91,90278,14067],{"class":101},[91,90280,7829],{"class":566},[91,90282,14072],{"class":169},[91,90284,90285,90287,90289,90291,90293,90295,90297,90299,90301,90303,90305,90307],{"class":93,"line":364},[91,90286,13915],{"class":566},[91,90288,14079],{"class":108},[91,90290,1366],{"class":566},[91,90292,14084],{"class":169},[91,90294,14087],{"class":101},[91,90296,1235],{"class":169},[91,90298,14092],{"class":101},[91,90300,1235],{"class":169},[91,90302,13548],{"class":108},[91,90304,14099],{"class":169},[91,90306,14102],{"class":101},[91,90308,14105],{"class":169},[91,90310,90311,90313,90315,90317,90319,90321,90323,90325,90327,90329],{"class":93,"line":378},[91,90312,13915],{"class":566},[91,90314,14112],{"class":108},[91,90316,1366],{"class":566},[91,90318,14084],{"class":169},[91,90320,14087],{"class":101},[91,90322,1235],{"class":169},[91,90324,14092],{"class":101},[91,90326,1235],{"class":169},[91,90328,13548],{"class":108},[91,90330,14129],{"class":169},[91,90332,90333],{"class":93,"line":387},[91,90334,1450],{"emptyLinePlaceholder":846},[91,90336,90337,90339,90341,90343],{"class":93,"line":402},[91,90338,13915],{"class":566},[91,90340,14140],{"class":108},[91,90342,1366],{"class":566},[91,90344,14145],{"class":169},[91,90346,90347,90349,90351],{"class":93,"line":422},[91,90348,14150],{"class":169},[91,90350,14153],{"class":101},[91,90352,14156],{"class":169},[91,90354,90355,90357,90359],{"class":93,"line":438},[91,90356,14161],{"class":169},[91,90358,14153],{"class":101},[91,90360,14166],{"class":169},[91,90362,90363,90365,90367],{"class":93,"line":458},[91,90364,14171],{"class":169},[91,90366,14174],{"class":101},[91,90368,14166],{"class":169},[91,90370,90371,90373,90375],{"class":93,"line":467},[91,90372,14181],{"class":169},[91,90374,14184],{"class":101},[91,90376,14166],{"class":169},[91,90378,90379,90381,90383],{"class":93,"line":481},[91,90380,14191],{"class":169},[91,90382,5177],{"class":101},[91,90384,14166],{"class":169},[91,90386,90387],{"class":93,"line":490},[91,90388,14200],{"class":169},[91,90390,90391,90393,90395],{"class":93,"line":3310},[91,90392,14205],{"class":169},[91,90394,14153],{"class":101},[91,90396,14166],{"class":169},[91,90398,90399,90401,90403],{"class":93,"line":3315},[91,90400,14214],{"class":169},[91,90402,14174],{"class":101},[91,90404,14166],{"class":169},[91,90406,90407,90409,90411],{"class":93,"line":3321},[91,90408,14223],{"class":169},[91,90410,14226],{"class":101},[91,90412,14166],{"class":169},[91,90414,90415,90417,90419],{"class":93,"line":3327},[91,90416,14233],{"class":169},[91,90418,14226],{"class":101},[91,90420,14166],{"class":169},[91,90422,90423,90425,90427],{"class":93,"line":3333},[91,90424,14242],{"class":169},[91,90426,5177],{"class":101},[91,90428,14166],{"class":169},[91,90430,90431,90433,90435],{"class":93,"line":3338},[91,90432,14251],{"class":169},[91,90434,14153],{"class":101},[91,90436,14166],{"class":169},[91,90438,90439,90441,90443],{"class":93,"line":3343},[91,90440,14260],{"class":169},[91,90442,14174],{"class":101},[91,90444,14166],{"class":169},[91,90446,90447,90449,90451],{"class":93,"line":7882},[91,90448,14269],{"class":169},[91,90450,14226],{"class":101},[91,90452,14166],{"class":169},[91,90454,90455,90457],{"class":93,"line":7887},[91,90456,14278],{"class":169},[91,90458,118],{"class":101},[91,90460,90461,90463,90465,90467,90469,90471,90473,90475,90477,90479,90481,90483,90485],{"class":93,"line":7892},[91,90462,13915],{"class":566},[91,90464,14287],{"class":108},[91,90466,1366],{"class":566},[91,90468,14292],{"class":101},[91,90470,14295],{"class":97},[91,90472,795],{"class":101},[91,90474,14300],{"class":169},[91,90476,1176],{"class":101},[91,90478,8406],{"class":566},[91,90480,14307],{"class":169},[91,90482,1235],{"class":101},[91,90484,11811],{"class":108},[91,90486,118],{"class":101},[91,90488,90489,90491,90493,90495,90497,90499,90501,90503,90505,90507,90509,90511,90513],{"class":93,"line":7906},[91,90490,14318],{"class":101},[91,90492,166],{"class":566},[91,90494,14292],{"class":101},[91,90496,8026],{"class":97},[91,90498,795],{"class":101},[91,90500,1578],{"class":108},[91,90502,14331],{"class":101},[91,90504,8406],{"class":566},[91,90506,14336],{"class":101},[91,90508,8406],{"class":566},[91,90510,14292],{"class":101},[91,90512,8026],{"class":97},[91,90514,14345],{"class":101},[91,90516,90517,90519,90521],{"class":93,"line":7922},[91,90518,14350],{"class":101},[91,90520,166],{"class":566},[91,90522,14355],{"class":101},[91,90524,90525,90527],{"class":93,"line":7927},[91,90526,11825],{"class":566},[91,90528,14362],{"class":101},[91,90530,90531],{"class":93,"line":7967},[91,90532,3477],{"class":101},[16,90534,14369,90535,14373,90537,14377,90539,64,90541,14382,90543,14386],{},[31,90536,14372],{},[31,90538,14376],{},[31,90540,13972],{},[31,90542,13977],{},[31,90544,14385],{},[49,90546,14390],{"id":14389},[16,90548,14393],{},[757,90550,14397],{"id":14396},[16,90552,90553],{},[4306,90554,14404],{"href":14402,"rel":90555},[4310],[16,90557,90558],{},[19,90559],{"alt":21,"src":14409},[16,90561,14412],{},[16,90563,90564],{},[19,90565],{"alt":21,"src":14417},[16,90567,14420],{},[771,90569,14424],{"id":14423},[16,90571,14427,90572,14431,90574,14435],{},[31,90573,14430],{},[31,90575,14434],{},[82,90577,90578],{"className":11559,"code":14438,"language":11561,"meta":87,"style":87},[31,90579,90580,90584,90588,90592,90598,90626,90630,90636,90642,90648,90660,90694,90708,90720],{"__ignoreMap":87},[91,90581,90582],{"class":93,"line":94},[91,90583,14445],{"class":101},[91,90585,90586],{"class":93,"line":105},[91,90587,14450],{"class":101},[91,90589,90590],{"class":93,"line":121},[91,90591,14455],{"class":101},[91,90593,90594,90596],{"class":93,"line":134},[91,90595,14460],{"class":101},[91,90597,14463],{"class":566},[91,90599,90600,90602,90604,90606,90608,90610,90612,90614,90616,90618,90620,90622,90624],{"class":93,"line":228},[91,90601,14468],{"class":101},[91,90603,14471],{"class":97},[91,90605,14474],{"class":97},[91,90607,14477],{"class":97},[91,90609,14480],{"class":97},[91,90611,14483],{"class":97},[91,90613,14486],{"class":101},[91,90615,14489],{"class":97},[91,90617,14492],{"class":97},[91,90619,14495],{"class":97},[91,90621,11795],{"class":97},[91,90623,14500],{"class":97},[91,90625,14503],{"class":101},[91,90627,90628],{"class":93,"line":250},[91,90629,14445],{"class":101},[91,90631,90632,90634],{"class":93,"line":260},[91,90633,14512],{"class":101},[91,90635,14515],{"class":97},[91,90637,90638,90640],{"class":93,"line":274},[91,90639,14520],{"class":101},[91,90641,14523],{"class":97},[91,90643,90644,90646],{"class":93,"line":284},[91,90645,14528],{"class":101},[91,90647,14515],{"class":97},[91,90649,90650,90652,90654,90656,90658],{"class":93,"line":299},[91,90651,14468],{"class":101},[91,90653,14537],{"class":97},[91,90655,14540],{"class":97},[91,90657,14543],{"class":97},[91,90659,14546],{"class":97},[91,90661,90662,90664,90666,90668,90670,90672,90674,90676,90678,90680,90682,90684,90686,90688,90690,90692],{"class":93,"line":319},[91,90663,14468],{"class":101},[91,90665,14553],{"class":97},[91,90667,14556],{"class":97},[91,90669,14474],{"class":97},[91,90671,14561],{"class":97},[91,90673,14564],{"class":97},[91,90675,14567],{"class":97},[91,90677,14570],{"class":97},[91,90679,14573],{"class":97},[91,90681,10273],{"class":97},[91,90683,14474],{"class":97},[91,90685,14580],{"class":97},[91,90687,14583],{"class":97},[91,90689,14474],{"class":97},[91,90691,14588],{"class":97},[91,90693,7265],{"class":101},[91,90695,90696,90698,90700,90702,90704,90706],{"class":93,"line":334},[91,90697,14595],{"class":101},[91,90699,14598],{"class":97},[91,90701,1235],{"class":101},[91,90703,14603],{"class":97},[91,90705,1235],{"class":101},[91,90707,14608],{"class":97},[91,90709,90710,90712,90714,90716,90718],{"class":93,"line":355},[91,90711,14613],{"class":101},[91,90713,14616],{"class":97},[91,90715,1235],{"class":101},[91,90717,14621],{"class":97},[91,90719,12474],{"class":101},[91,90721,90722,90724,90726,90728],{"class":93,"line":364},[91,90723,14468],{"class":101},[91,90725,14630],{"class":97},[91,90727,10060],{"class":97},[91,90729,14635],{"class":97},[16,90731,90732,14641,90734,14645],{},[31,90733,14640],{},[31,90735,14644],{},[16,90737,90738],{},[19,90739],{"alt":21,"src":14650},[16,90741,14653],{},[82,90743,90744],{"className":11559,"code":14656,"language":11561,"meta":87,"style":87},[31,90745,90746,90750,90762,90766,90770,90778,90782,90786,90794,90798],{"__ignoreMap":87},[91,90747,90748],{"class":93,"line":94},[91,90749,10961],{"class":1343},[91,90751,90752,90754,90756,90758,90760],{"class":93,"line":105},[91,90753,10966],{"class":108},[91,90755,1235],{"class":101},[91,90757,10971],{"class":108},[91,90759,1366],{"class":566},[91,90761,102],{"class":101},[91,90763,90764],{"class":93,"line":121},[91,90765,14679],{"class":101},[91,90767,90768],{"class":93,"line":134},[91,90769,14684],{"class":1343},[91,90771,90772,90774,90776],{"class":93,"line":228},[91,90773,14689],{"class":101},[91,90775,7557],{"class":108},[91,90777,7560],{"class":101},[91,90779,90780],{"class":93,"line":250},[91,90781,14698],{"class":1343},[91,90783,90784],{"class":93,"line":260},[91,90785,14703],{"class":1343},[91,90787,90788,90790,90792],{"class":93,"line":274},[91,90789,14708],{"class":101},[91,90791,14711],{"class":169},[91,90793,7560],{"class":101},[91,90795,90796],{"class":93,"line":284},[91,90797,1698],{"class":101},[91,90799,90800],{"class":93,"line":299},[91,90801,137],{"class":101},[16,90803,14724,90804,14728,90806,14732],{},[31,90805,14727],{},[31,90807,14731],{},[757,90809,14736],{"id":14735},[82,90811,90812],{"className":11559,"code":14739,"language":11561,"meta":87,"style":87},[31,90813,90814],{"__ignoreMap":87},[91,90815,90816,90818,90820,90822,90824],{"class":93,"line":94},[91,90817,14746],{"class":101},[91,90819,8409],{"class":566},[91,90821,14751],{"class":101},[91,90823,8409],{"class":566},[91,90825,14756],{"class":101},[16,90827,14759,90828,14763,90830,14766,90832,14770],{},[31,90829,14762],{},[31,90831,14762],{},[31,90833,14769],{},[82,90835,90836],{"className":11559,"code":14773,"language":11561,"meta":87,"style":87},[31,90837,90838,90842,90854,90858,90872,90886,90898,90902,90906,90918,90926,90934,90944,90948,90958,90962,90968],{"__ignoreMap":87},[91,90839,90840],{"class":93,"line":94},[91,90841,14780],{"class":1343},[91,90843,90844,90846,90848,90850,90852],{"class":93,"line":105},[91,90845,2499],{"class":566},[91,90847,14787],{"class":101},[91,90849,2505],{"class":566},[91,90851,14792],{"class":169},[91,90853,118],{"class":101},[91,90855,90856],{"class":93,"line":121},[91,90857,1450],{"emptyLinePlaceholder":846},[91,90859,90860,90862,90864,90866,90868,90870],{"class":93,"line":134},[91,90861,1349],{"class":566},[91,90863,14805],{"class":108},[91,90865,1366],{"class":566},[91,90867,14810],{"class":169},[91,90869,14813],{"class":101},[91,90871,14816],{"class":1343},[91,90873,90874,90876,90878,90880,90882,90884],{"class":93,"line":228},[91,90875,5226],{"class":566},[91,90877,14823],{"class":101},[91,90879,13332],{"class":108},[91,90881,13335],{"class":566},[91,90883,14830],{"class":169},[91,90885,3866],{"class":101},[91,90887,90888,90890,90892,90894,90896],{"class":93,"line":250},[91,90889,14837],{"class":108},[91,90891,1366],{"class":566},[91,90893,14842],{"class":169},[91,90895,14813],{"class":101},[91,90897,14847],{"class":1343},[91,90899,90900],{"class":93,"line":260},[91,90901,137],{"class":101},[91,90903,90904],{"class":93,"line":274},[91,90905,1450],{"emptyLinePlaceholder":846},[91,90907,90908,90910,90912,90914,90916],{"class":93,"line":284},[91,90909,1968],{"class":566},[91,90911,14862],{"class":108},[91,90913,1366],{"class":566},[91,90915,14867],{"class":97},[91,90917,14870],{"class":101},[91,90919,90920,90922,90924],{"class":93,"line":299},[91,90921,1235],{"class":101},[91,90923,14877],{"class":97},[91,90925,14880],{"class":101},[91,90927,90928,90930,90932],{"class":93,"line":319},[91,90929,1235],{"class":101},[91,90931,14877],{"class":97},[91,90933,14889],{"class":101},[91,90935,90936,90938,90940,90942],{"class":93,"line":334},[91,90937,14894],{"class":566},[91,90939,1235],{"class":101},[91,90941,14877],{"class":97},[91,90943,14901],{"class":101},[91,90945,90946],{"class":93,"line":355},[91,90947,14906],{"class":101},[91,90949,90950,90952,90954,90956],{"class":93,"line":364},[91,90951,14911],{"class":101},[91,90953,14914],{"class":108},[91,90955,64],{"class":101},[91,90957,14847],{"class":1343},[91,90959,90960],{"class":93,"line":378},[91,90961,1693],{"class":101},[91,90963,90964,90966],{"class":93,"line":387},[91,90965,14927],{"class":101},[91,90967,12474],{"class":566},[91,90969,90970,90972,90974,90976,90978],{"class":93,"line":402},[91,90971,1235],{"class":101},[91,90973,14936],{"class":97},[91,90975,795],{"class":101},[91,90977,13256],{"class":169},[91,90979,3487],{"class":101},[16,90981,14945,90982,14948],{},[31,90983,14877],{},[82,90985,90986],{"className":11559,"code":14951,"language":11561,"meta":87,"style":87},[31,90987,90988,90992,91002,91014,91018,91022,91026],{"__ignoreMap":87},[91,90989,90990],{"class":93,"line":94},[91,90991,14958],{"class":1343},[91,90993,90994,90996,90998,91000],{"class":93,"line":105},[91,90995,2499],{"class":566},[91,90997,14965],{"class":101},[91,90999,2505],{"class":566},[91,91001,14970],{"class":169},[91,91003,91004,91006,91008,91010,91012],{"class":93,"line":121},[91,91005,1968],{"class":566},[91,91007,14977],{"class":108},[91,91009,1366],{"class":566},[91,91011,14982],{"class":97},[91,91013,7549],{"class":101},[91,91015,91016],{"class":93,"line":134},[91,91017,14989],{"class":566},[91,91019,91020],{"class":93,"line":228},[91,91021,9444],{"class":101},[91,91023,91024],{"class":93,"line":250},[91,91025,1450],{"emptyLinePlaceholder":846},[91,91027,91028,91030],{"class":93,"line":260},[91,91029,15002],{"class":97},[91,91031,15005],{"class":101},[16,91033,91034,15010],{},[31,91035,15002],{},[829,91037,15013],{},{"title":87,"searchDepth":105,"depth":105,"links":91039},[91040,91041,91046,91047,91048,91049,91052,91053],{"id":10866,"depth":105,"text":10867},{"id":10890,"depth":105,"text":10891,"children":91042},[91043,91044,91045],{"id":10919,"depth":121,"text":10919},{"id":10935,"depth":121,"text":10910},{"id":11003,"depth":121,"text":11004},{"id":11350,"depth":105,"text":11351},{"id":12345,"depth":105,"text":12346},{"id":12641,"depth":105,"text":12642},{"id":13384,"depth":105,"text":13385,"children":91050},[91051],{"id":13692,"depth":121,"text":13693},{"id":13841,"depth":105,"text":13842},{"id":14389,"depth":105,"text":14390,"children":91054},[91055,91056],{"id":14396,"depth":121,"text":14397},{"id":14735,"depth":121,"text":14736},{},{"title":10845,"description":15034},{"loc":15037},[15042,15043,15044,15045,15046,15047,15048],{"id":15052,"title":15053,"body":91062,"created":1501,"description":15275,"extension":843,"filename":15276,"meta":91235,"navigation":846,"path":15278,"seo":91236,"sitemap":91237,"stem":15281,"subject":15282,"tags":91238,"updated":1501,"volume":1863,"__hash__":15284},{"type":8,"value":91063,"toc":91229},[91064,91066,91070,91072,91074,91078,91084,91086,91088,91090,91092,91094,91150,91155,91157,91223],[16,91065,15058],{},[1722,91067,91068],{},[16,91069,15063],{},[16,91071,15066],{},[49,91073,15070],{"id":15069},[16,91075,15073,91076,15077],{},[31,91077,15076],{},[24,91079,91080,91082],{},[27,91081,15082],{},[27,91083,15085],{},[16,91085,15088],{},[757,91087,15092],{"id":15091},[1112,91089],{"description":15095,"favicon":15096,"host":15097,"title":15092,"url":15098},[16,91091,15101],{},[757,91093,15105],{"id":15104},[812,91095,91096,91108],{},[3001,91097,91098],{},[3004,91099,91100,91102,91104,91106],{},[3007,91101,15114],{},[3007,91103,15117],{},[3007,91105,15120],{},[3007,91107,15123],{},[3017,91109,91110,91120,91130,91140],{},[3004,91111,91112,91114,91116,91118],{},[3022,91113,15130],{},[3022,91115,15133],{},[3022,91117,15136],{},[3022,91119,15139],{},[3004,91121,91122,91124,91126,91128],{},[3022,91123,15144],{},[3022,91125,15147],{},[3022,91127,15150],{},[3022,91129,15139],{},[3004,91131,91132,91134,91136,91138],{},[3022,91133,15157],{},[3022,91135,15160],{},[3022,91137,15163],{},[3022,91139,15166],{},[3004,91141,91142,91144,91146,91148],{},[3022,91143,15171],{},[3022,91145],{},[3022,91147],{},[3022,91149],{},[82,91151,91153],{"className":91152,"code":15181,"language":1099},[1097],[31,91154,15181],{"__ignoreMap":87},[16,91156,15186],{},[812,91158,91159,91171],{},[3001,91160,91161],{},[3004,91162,91163,91165,91167,91169],{},[3007,91164,15195],{},[3007,91166,15114],{},[3007,91168,15200],{},[3007,91170,15203],{},[3017,91172,91173,91183,91193,91203,91213],{},[3004,91174,91175,91177,91179,91181],{},[3022,91176,15210],{},[3022,91178,15130],{},[3022,91180,15136],{},[3022,91182,15217],{},[3004,91184,91185,91187,91189,91191],{},[3022,91186,15210],{},[3022,91188,15157],{},[3022,91190,15163],{},[3022,91192,15217],{},[3004,91194,91195,91197,91199,91201],{},[3022,91196,15232],{},[3022,91198,15130],{},[3022,91200,15130],{},[3022,91202,15239],{},[3004,91204,91205,91207,91209,91211],{},[3022,91206,15232],{},[3022,91208,15157],{},[3022,91210,15157],{},[3022,91212,15239],{},[3004,91214,91215,91217,91219,91221],{},[3022,91216,15254],{},[3022,91218],{},[3022,91220],{},[3022,91222],{},[1722,91224,91225],{},[16,91226,91227,15268],{},[91,91228,15267],{},{"title":87,"searchDepth":105,"depth":105,"links":91230},[91231],{"id":15069,"depth":105,"text":15070,"children":91232},[91233,91234],{"id":15091,"depth":121,"text":15092},{"id":15104,"depth":121,"text":15105},{},{"title":15053,"description":15275},{"loc":15278},[5447,7203,7409],{"id":15286,"title":15287,"body":91240,"created":15406,"description":15407,"extension":843,"filename":15408,"meta":91326,"navigation":846,"path":15410,"seo":91327,"sitemap":91328,"stem":15413,"subject":15282,"tags":91329,"updated":15406,"volume":1863,"__hash__":15418},{"type":8,"value":91241,"toc":91324},[91242,91244,91258,91282,91286,91308,91318,91322],[1112,91243],{"description":15292,"favicon":1320,"host":1317,"image":15293,"title":15294,"url":15295},[1722,91245,91246,91248,91250,91252,91254,91256],{},[16,91247,15300],{},[16,91249,15303],{},[16,91251,15306],{},[16,91253,15309],{},[16,91255,15312],{},[16,91257,15315],{},[82,91259,91260],{"className":8477,"code":15318,"language":8479,"meta":87,"style":87},[31,91261,91262,91268,91278],{"__ignoreMap":87},[91,91263,91264,91266],{"class":93,"line":94},[91,91265,15325],{"class":169},[91,91267,8789],{"class":101},[91,91269,91270,91272,91274,91276],{"class":93,"line":105},[91,91271,15332],{"class":108},[91,91273,112],{"class":101},[91,91275,15337],{"class":169},[91,91277,7560],{"class":101},[91,91279,91280],{"class":93,"line":121},[91,91281,137],{"class":101},[16,91283,15346,91284,15350],{},[31,91285,15349],{},[82,91287,91288],{"className":8477,"code":15353,"language":8479,"meta":87,"style":87},[31,91289,91290,91296,91304],{"__ignoreMap":87},[91,91291,91292,91294],{"class":93,"line":94},[91,91293,15360],{"class":169},[91,91295,8789],{"class":101},[91,91297,91298,91300,91302],{"class":93,"line":105},[91,91299,15332],{"class":108},[91,91301,112],{"class":101},[91,91303,15371],{"class":169},[91,91305,91306],{"class":93,"line":121},[91,91307,15376],{"class":101},[16,91309,91310,15382,91312,15386,91314,15390,91316,15394],{},[31,91311,15381],{},[792,91313,15385],{},[792,91315,15389],{},[792,91317,15393],{},[16,91319,15397,91320,15400],{},[31,91321,15349],{},[829,91323,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":91325},[],{},{"title":15287,"description":15407},{"loc":15410},[15415,1261,15416,5447,15417],{"id":15420,"title":15421,"body":91331,"created":16313,"description":16314,"extension":843,"filename":16315,"meta":92067,"navigation":846,"path":16317,"seo":92068,"sitemap":92069,"stem":16320,"subject":2862,"tags":92070,"updated":16313,"volume":853,"__hash__":16327},{"type":8,"value":91332,"toc":92059},[91333,91335,91337,91339,91345,91361,91373,91377,91383,91385,91391,91595,91601,91603,91605,91633,91699,91705,91707,91723,91725,91737,91739,91783,91785,92033,92037,92039,92043,92049,92051,92053,92055,92057],[16,91334,15426],{},[16,91336,15429],{},[49,91338,15433],{"id":15432},[16,91340,15436,91341,15440,91343,15444],{},[31,91342,15439],{},[31,91344,15443],{},[82,91346,91347],{"className":15447,"code":15448,"language":843,"meta":87,"style":87},[31,91348,91349,91353,91357],{"__ignoreMap":87},[91,91350,91351],{"class":93,"line":94},[91,91352,15455],{"class":101},[91,91354,91355],{"class":93,"line":105},[91,91356,15460],{"class":101},[91,91358,91359],{"class":93,"line":121},[91,91360,15465],{"class":101},[16,91362,15468,91363,15472,91365,15476,91367,64,91369,64,91371,15483],{},[31,91364,15471],{},[31,91366,15475],{},[31,91368,82],{},[31,91370,16],{},[31,91372,4530],{},[16,91374,91375],{},[19,91376],{"alt":15488,"src":15489},[16,91378,15492,91379,15495,91381,15499],{},[31,91380,1112],{},[31,91382,15498],{},[49,91384,15503],{"id":15502},[16,91386,15506,91387,15509,91389,15513],{},[31,91388,15498],{},[31,91390,15512],{},[82,91392,91393],{"className":1934,"code":15516,"language":1936,"meta":87,"style":87},[31,91394,91395,91411,91421,91425,91437,91459,91473,91487,91491,91495,91505,91509,91513,91521,91525,91533,91553,91559,91567,91575,91579,91587],{"__ignoreMap":87},[91,91396,91397,91399,91401,91403,91405,91407,91409],{"class":93,"line":94},[91,91398,156],{"class":101},[91,91400,1945],{"class":159},[91,91402,1948],{"class":97},[91,91404,1951],{"class":97},[91,91406,166],{"class":101},[91,91408,1956],{"class":169},[91,91410,173],{"class":101},[91,91412,91413,91415,91417,91419],{"class":93,"line":105},[91,91414,2499],{"class":566},[91,91416,15541],{"class":101},[91,91418,2505],{"class":566},[91,91420,15546],{"class":169},[91,91422,91423],{"class":93,"line":121},[91,91424,1450],{"emptyLinePlaceholder":846},[91,91426,91427,91429,91431,91433,91435],{"class":93,"line":134},[91,91428,1968],{"class":566},[91,91430,12259],{"class":108},[91,91432,1366],{"class":566},[91,91434,12264],{"class":97},[91,91436,9313],{"class":101},[91,91438,91439,91441,91443,91445,91447,91449,91451,91453,91455,91457],{"class":93,"line":228},[91,91440,1968],{"class":566},[91,91442,13969],{"class":101},[91,91444,7901],{"class":1172},[91,91446,112],{"class":101},[91,91448,15575],{"class":108},[91,91450,13985],{"class":101},[91,91452,166],{"class":566},[91,91454,1390],{"class":566},[91,91456,15584],{"class":97},[91,91458,9266],{"class":101},[91,91460,91461,91463,91465,91467,91469,91471],{"class":93,"line":250},[91,91462,15591],{"class":169},[91,91464,14102],{"class":101},[91,91466,1235],{"class":169},[91,91468,15598],{"class":101},[91,91470,1241],{"class":169},[91,91472,7560],{"class":101},[91,91474,91475,91477,91479,91481,91483,91485],{"class":93,"line":260},[91,91476,15607],{"class":101},[91,91478,1179],{"class":566},[91,91480,15612],{"class":97},[91,91482,15615],{"class":101},[91,91484,15618],{"class":97},[91,91486,8275],{"class":101},[91,91488,91489],{"class":93,"line":274},[91,91490,3487],{"class":101},[91,91492,91493],{"class":93,"line":284},[91,91494,1450],{"emptyLinePlaceholder":846},[91,91496,91497,91499,91501,91503],{"class":93,"line":299},[91,91498,1968],{"class":566},[91,91500,15635],{"class":108},[91,91502,1366],{"class":566},[91,91504,102],{"class":101},[91,91506,91507],{"class":93,"line":319},[91,91508,15644],{"class":101},[91,91510,91511],{"class":93,"line":334},[91,91512,137],{"class":101},[91,91514,91515,91517,91519],{"class":93,"line":355},[91,91516,493],{"class":101},[91,91518,1945],{"class":159},[91,91520,173],{"class":101},[91,91522,91523],{"class":93,"line":364},[91,91524,1450],{"emptyLinePlaceholder":846},[91,91526,91527,91529,91531],{"class":93,"line":378},[91,91528,156],{"class":101},[91,91530,2118],{"class":159},[91,91532,173],{"class":101},[91,91534,91535,91537,91539,91541,91543,91545,91547,91549,91551],{"class":93,"line":387},[91,91536,2125],{"class":101},[91,91538,15675],{"class":159},[91,91540,15678],{"class":97},[91,91542,166],{"class":101},[91,91544,15683],{"class":169},[91,91546,15686],{"class":97},[91,91548,166],{"class":101},[91,91550,15683],{"class":169},[91,91552,173],{"class":101},[91,91554,91555,91557],{"class":93,"line":402},[91,91556,178],{"class":101},[91,91558,15699],{"class":159},[91,91560,91561,91563,91565],{"class":93,"line":422},[91,91562,15704],{"class":97},[91,91564,166],{"class":101},[91,91566,15709],{"class":169},[91,91568,91569,91571,91573],{"class":93,"line":438},[91,91570,15714],{"class":97},[91,91572,166],{"class":101},[91,91574,15719],{"class":169},[91,91576,91577],{"class":93,"line":458},[91,91578,15724],{"class":101},[91,91580,91581,91583,91585],{"class":93,"line":467},[91,91582,15729],{"class":101},[91,91584,15675],{"class":159},[91,91586,173],{"class":101},[91,91588,91589,91591,91593],{"class":93,"line":481},[91,91590,493],{"class":101},[91,91592,2118],{"class":159},[91,91594,173],{"class":101},[16,91596,91597,15747,91599,15750],{},[31,91598,15746],{},[31,91600,1112],{},[49,91602,15754],{"id":15753},[16,91604,15757],{},[82,91606,91607],{"className":15447,"code":15760,"language":843,"meta":87,"style":87},[31,91608,91609,91613,91629],{"__ignoreMap":87},[91,91610,91611],{"class":93,"line":94},[91,91612,15767],{"class":101},[91,91614,91615,91617,91619,91621,91623,91625,91627],{"class":93,"line":105},[91,91616,15772],{"class":101},[91,91618,15776],{"class":15775},[91,91620,15779],{"class":101},[91,91622,15783],{"class":15782},[91,91624,15786],{"class":101},[91,91626,15790],{"class":15789},[91,91628,15793],{"class":101},[91,91630,91631],{"class":93,"line":121},[91,91632,15465],{"class":101},[82,91634,91635],{"className":1934,"code":15800,"language":1936,"meta":87,"style":87},[31,91636,91637,91641,91649,91663,91683,91691],{"__ignoreMap":87},[91,91638,91639],{"class":93,"line":94},[91,91640,15807],{"class":1343},[91,91642,91643,91645,91647],{"class":93,"line":105},[91,91644,156],{"class":101},[91,91646,2118],{"class":159},[91,91648,173],{"class":101},[91,91650,91651,91653,91655,91657,91659,91661],{"class":93,"line":121},[91,91652,2125],{"class":101},[91,91654,15822],{"class":159},[91,91656,163],{"class":97},[91,91658,166],{"class":101},[91,91660,15829],{"class":169},[91,91662,173],{"class":101},[91,91664,91665,91667,91669,91671,91673,91675,91677,91679,91681],{"class":93,"line":134},[91,91666,178],{"class":101},[91,91668,15838],{"class":159},[91,91670,15841],{"class":97},[91,91672,166],{"class":101},[91,91674,15846],{"class":169},[91,91676,15849],{"class":97},[91,91678,166],{"class":101},[91,91680,15854],{"class":169},[91,91682,2147],{"class":101},[91,91684,91685,91687,91689],{"class":93,"line":228},[91,91686,15729],{"class":101},[91,91688,15822],{"class":159},[91,91690,173],{"class":101},[91,91692,91693,91695,91697],{"class":93,"line":250},[91,91694,493],{"class":101},[91,91696,2118],{"class":159},[91,91698,173],{"class":101},[16,91700,15875,91701,15878,91703,15882],{},[31,91702,15838],{},[31,91704,15881],{},[49,91706,15886],{"id":15885},[16,91708,15889,91709,64,91711,64,91713,64,91715,64,91717,64,91719,15905,91721,15908],{},[31,91710,5177],{},[31,91712,13972],{},[31,91714,13977],{},[31,91716,15898],{},[31,91718,15901],{},[31,91720,15904],{},[31,91722,4974],{},[16,91724,15911],{},[82,91726,91727],{"className":15447,"code":15914,"language":843,"meta":87,"style":87},[31,91728,91729,91733],{"__ignoreMap":87},[91,91730,91731],{"class":93,"line":94},[91,91732,15921],{"class":101},[91,91734,91735],{"class":93,"line":105},[91,91736,15465],{"class":101},[16,91738,15928],{},[82,91740,91741],{"className":15447,"code":15931,"language":843,"meta":87,"style":87},[31,91742,91743,91747,91751,91755,91759,91763,91767,91771,91775,91779],{"__ignoreMap":87},[91,91744,91745],{"class":93,"line":94},[91,91746,15455],{"class":101},[91,91748,91749],{"class":93,"line":105},[91,91750,15943],{"class":15942},[91,91752,91753],{"class":93,"line":121},[91,91754,15948],{"class":101},[91,91756,91757],{"class":93,"line":134},[91,91758,15953],{"class":101},[91,91760,91761],{"class":93,"line":228},[91,91762,15958],{"class":101},[91,91764,91765],{"class":93,"line":250},[91,91766,15963],{"class":101},[91,91768,91769],{"class":93,"line":260},[91,91770,15968],{"class":101},[91,91772,91773],{"class":93,"line":274},[91,91774,15973],{"class":101},[91,91776,91777],{"class":93,"line":284},[91,91778,15943],{"class":15942},[91,91780,91781],{"class":93,"line":299},[91,91782,15465],{"class":101},[16,91784,15984],{},[82,91786,91787],{"className":1934,"code":15987,"language":1936,"meta":87,"style":87},[31,91788,91789,91805,91811,91819,91827,91835,91843,91851,91859,91863,91871,91875,91883,91915,91947,91961,91973,91991,92009,92017,92025],{"__ignoreMap":87},[91,91790,91791,91793,91795,91797,91799,91801,91803],{"class":93,"line":94},[91,91792,156],{"class":101},[91,91794,1945],{"class":159},[91,91796,1948],{"class":97},[91,91798,1951],{"class":97},[91,91800,166],{"class":101},[91,91802,1956],{"class":169},[91,91804,173],{"class":101},[91,91806,91807,91809],{"class":93,"line":105},[91,91808,16010],{"class":97},[91,91810,2205],{"class":101},[91,91812,91813,91815,91817],{"class":93,"line":121},[91,91814,11612],{"class":1172},[91,91816,1208],{"class":566},[91,91818,16021],{"class":108},[91,91820,91821,91823,91825],{"class":93,"line":134},[91,91822,11645],{"class":1172},[91,91824,1208],{"class":566},[91,91826,16021],{"class":108},[91,91828,91829,91831,91833],{"class":93,"line":228},[91,91830,16034],{"class":1172},[91,91832,16037],{"class":566},[91,91834,16021],{"class":108},[91,91836,91837,91839,91841],{"class":93,"line":250},[91,91838,16044],{"class":1172},[91,91840,16037],{"class":566},[91,91842,16021],{"class":108},[91,91844,91845,91847,91849],{"class":93,"line":260},[91,91846,16053],{"class":1172},[91,91848,16037],{"class":566},[91,91850,16021],{"class":108},[91,91852,91853,91855,91857],{"class":93,"line":274},[91,91854,16062],{"class":1172},[91,91856,16037],{"class":566},[91,91858,16021],{"class":108},[91,91860,91861],{"class":93,"line":284},[91,91862,16071],{"class":101},[91,91864,91865,91867,91869],{"class":93,"line":299},[91,91866,493],{"class":101},[91,91868,1945],{"class":159},[91,91870,173],{"class":101},[91,91872,91873],{"class":93,"line":319},[91,91874,1450],{"emptyLinePlaceholder":846},[91,91876,91877,91879,91881],{"class":93,"line":334},[91,91878,156],{"class":101},[91,91880,2118],{"class":159},[91,91882,173],{"class":101},[91,91884,91885,91887,91889,91891,91893,91895,91897,91899,91901,91903,91905,91907,91909,91911,91913],{"class":93,"line":355},[91,91886,2125],{"class":101},[91,91888,4306],{"class":159},[91,91890,16100],{"class":97},[91,91892,166],{"class":101},[91,91894,16105],{"class":169},[91,91896,163],{"class":97},[91,91898,166],{"class":101},[91,91900,16112],{"class":169},[91,91902,16115],{"class":97},[91,91904,166],{"class":101},[91,91906,16120],{"class":169},[91,91908,16123],{"class":97},[91,91910,166],{"class":101},[91,91912,16128],{"class":169},[91,91914,173],{"class":101},[91,91916,91917,91919,91921,91923,91925,91927,91929,91931,91933,91935,91937,91939,91941,91943,91945],{"class":93,"line":364},[91,91918,178],{"class":101},[91,91920,19],{"class":159},[91,91922,15678],{"class":97},[91,91924,166],{"class":101},[91,91926,16143],{"class":169},[91,91928,16146],{"class":97},[91,91930,166],{"class":101},[91,91932,16143],{"class":169},[91,91934,16153],{"class":97},[91,91936,166],{"class":101},[91,91938,13747],{"class":169},[91,91940,163],{"class":97},[91,91942,166],{"class":101},[91,91944,16164],{"class":169},[91,91946,2147],{"class":101},[91,91948,91949,91951,91953,91955,91957,91959],{"class":93,"line":378},[91,91950,178],{"class":101},[91,91952,91],{"class":159},[91,91954,163],{"class":97},[91,91956,166],{"class":101},[91,91958,16179],{"class":169},[91,91960,173],{"class":101},[91,91962,91963,91965,91967,91969,91971],{"class":93,"line":387},[91,91964,16186],{"class":101},[91,91966,792],{"class":159},[91,91968,16191],{"class":101},[91,91970,792],{"class":159},[91,91972,173],{"class":101},[91,91974,91975,91977,91979,91981,91983,91985,91987,91989],{"class":93,"line":402},[91,91976,16186],{"class":101},[91,91978,91],{"class":159},[91,91980,15678],{"class":97},[91,91982,166],{"class":101},[91,91984,16208],{"class":169},[91,91986,16211],{"class":101},[91,91988,91],{"class":159},[91,91990,173],{"class":101},[91,91992,91993,91995,91997,91999,92001,92003,92005,92007],{"class":93,"line":422},[91,91994,16186],{"class":101},[91,91996,16222],{"class":159},[91,91998,15678],{"class":97},[91,92000,166],{"class":101},[91,92002,16229],{"class":169},[91,92004,16232],{"class":101},[91,92006,16222],{"class":159},[91,92008,173],{"class":101},[91,92010,92011,92013,92015],{"class":93,"line":438},[91,92012,277],{"class":101},[91,92014,91],{"class":159},[91,92016,173],{"class":101},[91,92018,92019,92021,92023],{"class":93,"line":458},[91,92020,15729],{"class":101},[91,92022,4306],{"class":159},[91,92024,173],{"class":101},[91,92026,92027,92029,92031],{"class":93,"line":467},[91,92028,493],{"class":101},[91,92030,2118],{"class":159},[91,92032,173],{"class":101},[16,92034,16263,92035,16266],{},[31,92036,1208],{},[49,92038,16270],{"id":16269},[16,92040,16273,92041,16276],{},[31,92042,1112],{},[24,92044,92045,92047],{},[27,92046,16281],{},[27,92048,16284],{},[16,92050,16287],{},[49,92052,6005],{"id":6004},[1112,92054],{"description":16292,"host":16293,"title":16294,"url":16295},[1112,92056],{"description":16298,"host":16299,"title":16300,"url":16301},[829,92058,16304],{},{"title":87,"searchDepth":105,"depth":105,"links":92060},[92061,92062,92063,92064,92065,92066],{"id":15432,"depth":105,"text":15433},{"id":15502,"depth":105,"text":15503},{"id":15753,"depth":105,"text":15754},{"id":15885,"depth":105,"text":15886},{"id":16269,"depth":105,"text":16270},{"id":6004,"depth":105,"text":6005},{},{"title":15421,"description":16314},{"loc":16317},[16322,16323,16324,16325,16326],{"id":16329,"title":16330,"body":92072,"created":15406,"description":17124,"extension":843,"filename":17125,"meta":92733,"navigation":846,"path":17127,"seo":92734,"sitemap":92735,"stem":17130,"subject":2862,"tags":92736,"updated":15406,"volume":853,"__hash__":17133},{"type":8,"value":92073,"toc":92723},[92074,92076,92078,92098,92100,92126,92130,92132,92138,92142,92266,92268,92272,92378,92380,92384,92430,92432,92434,92447,92449,92459,92461,92505,92507,92519,92521,92583,92595,92597,92599,92673,92675,92719,92721],[16,92075,16335],{},[49,92077,16339],{"id":16338},[82,92079,92080],{"className":8427,"code":16342,"language":8429,"meta":87,"style":87},[31,92081,92082,92090],{"__ignoreMap":87},[91,92083,92084,92086,92088],{"class":93,"line":94},[91,92085,15417],{"class":97},[91,92087,8653],{"class":169},[91,92089,16353],{"class":169},[91,92091,92092,92094,92096],{"class":93,"line":105},[91,92093,16358],{"class":97},[91,92095,16361],{"class":169},[91,92097,16353],{"class":169},[49,92099,16367],{"id":16366},[82,92101,92102],{"className":1154,"code":16370,"language":1156,"meta":87,"style":87},[31,92103,92104,92114,92122],{"__ignoreMap":87},[91,92105,92106,92108,92110,92112],{"class":93,"line":94},[91,92107,2574],{"class":566},[91,92109,12107],{"class":566},[91,92111,16381],{"class":97},[91,92113,7549],{"class":101},[91,92115,92116,92118,92120],{"class":93,"line":105},[91,92117,16388],{"class":101},[91,92119,16391],{"class":169},[91,92121,16394],{"class":101},[91,92123,92124],{"class":93,"line":121},[91,92125,9444],{"class":101},[16,92127,92128,16404],{},[31,92129,16403],{},[49,92131,16408],{"id":16407},[16,92133,92134,16414,92136,16417],{},[31,92135,16413],{},[31,92137,16413],{},[16,92139,16420,92140],{},[31,92141,16423],{},[82,92143,92144],{"className":1154,"code":16426,"language":1156,"meta":87,"style":87},[31,92145,92146,92156,92166,92170,92192,92208,92230,92234,92242,92248,92252,92256,92262],{"__ignoreMap":87},[91,92147,92148,92150,92152,92154],{"class":93,"line":94},[91,92149,2499],{"class":566},[91,92151,16435],{"class":101},[91,92153,2505],{"class":566},[91,92155,16440],{"class":169},[91,92157,92158,92160,92162,92164],{"class":93,"line":105},[91,92159,2499],{"class":566},[91,92161,16447],{"class":101},[91,92163,2505],{"class":566},[91,92165,16452],{"class":169},[91,92167,92168],{"class":93,"line":121},[91,92169,1450],{"emptyLinePlaceholder":846},[91,92171,92172,92174,92176,92178,92180,92182,92184,92186,92188,92190],{"class":93,"line":134},[91,92173,2574],{"class":566},[91,92175,16463],{"class":566},[91,92177,16466],{"class":108},[91,92179,1366],{"class":566},[91,92181,16471],{"class":97},[91,92183,795],{"class":101},[91,92185,16476],{"class":169},[91,92187,9612],{"class":101},[91,92189,1179],{"class":566},[91,92191,102],{"class":101},[91,92193,92194,92196,92198,92200,92202,92204,92206],{"class":93,"line":228},[91,92195,2641],{"class":566},[91,92197,16489],{"class":108},[91,92199,1366],{"class":566},[91,92201,16494],{"class":97},[91,92203,795],{"class":101},[91,92205,1578],{"class":108},[91,92207,3487],{"class":101},[91,92209,92210,92212,92214,92216,92218,92220,92222,92224,92226,92228],{"class":93,"line":250},[91,92211,2641],{"class":566},[91,92213,16507],{"class":108},[91,92215,1366],{"class":566},[91,92217,12308],{"class":97},[91,92219,2088],{"class":101},[91,92221,1179],{"class":566},[91,92223,16518],{"class":101},[91,92225,6591],{"class":566},[91,92227,16523],{"class":108},[91,92229,3487],{"class":101},[91,92231,92232],{"class":93,"line":260},[91,92233,1450],{"emptyLinePlaceholder":846},[91,92235,92236,92238,92240],{"class":93,"line":274},[91,92237,16534],{"class":566},[91,92239,16537],{"class":97},[91,92241,2007],{"class":101},[91,92243,92244,92246],{"class":93,"line":284},[91,92245,16544],{"class":101},[91,92247,16547],{"class":566},[91,92249,92250],{"class":93,"line":299},[91,92251,1698],{"class":101},[91,92253,92254],{"class":93,"line":319},[91,92255,1450],{"emptyLinePlaceholder":846},[91,92257,92258,92260],{"class":93,"line":334},[91,92259,2695],{"class":566},[91,92261,16562],{"class":101},[91,92263,92264],{"class":93,"line":355},[91,92265,9444],{"class":101},[49,92267,16570],{"id":16569},[16,92269,16573,92270,16577],{},[31,92271,16576],{},[82,92273,92274],{"className":1934,"code":16580,"language":1936,"meta":87,"style":87},[31,92275,92276,92284,92292,92304,92322,92330,92338,92342,92358,92370],{"__ignoreMap":87},[91,92277,92278,92280,92282],{"class":93,"line":94},[91,92279,156],{"class":101},[91,92281,2118],{"class":159},[91,92283,173],{"class":101},[91,92285,92286,92288,92290],{"class":93,"line":105},[91,92287,2125],{"class":101},[91,92289,160],{"class":159},[91,92291,173],{"class":101},[91,92293,92294,92296,92298,92300,92302],{"class":93,"line":121},[91,92295,178],{"class":101},[91,92297,16],{"class":159},[91,92299,16607],{"class":101},[91,92301,16],{"class":159},[91,92303,173],{"class":101},[91,92305,92306,92308,92310,92312,92314,92316,92318,92320],{"class":93,"line":134},[91,92307,178],{"class":101},[91,92309,16618],{"class":159},[91,92311,16621],{"class":97},[91,92313,166],{"class":101},[91,92315,16626],{"class":169},[91,92317,16629],{"class":101},[91,92319,16618],{"class":159},[91,92321,173],{"class":101},[91,92323,92324,92326,92328],{"class":93,"line":228},[91,92325,15729],{"class":101},[91,92327,160],{"class":159},[91,92329,173],{"class":101},[91,92331,92332,92334,92336],{"class":93,"line":250},[91,92333,493],{"class":101},[91,92335,2118],{"class":159},[91,92337,173],{"class":101},[91,92339,92340],{"class":93,"line":260},[91,92341,1450],{"emptyLinePlaceholder":846},[91,92343,92344,92346,92348,92350,92352,92354,92356],{"class":93,"line":274},[91,92345,156],{"class":101},[91,92347,1945],{"class":159},[91,92349,1948],{"class":97},[91,92351,1951],{"class":97},[91,92353,166],{"class":101},[91,92355,1956],{"class":169},[91,92357,173],{"class":101},[91,92359,92360,92362,92364,92366,92368],{"class":93,"line":284},[91,92361,1968],{"class":566},[91,92363,16676],{"class":108},[91,92365,1366],{"class":566},[91,92367,16466],{"class":97},[91,92369,9313],{"class":101},[91,92371,92372,92374,92376],{"class":93,"line":299},[91,92373,493],{"class":101},[91,92375,1945],{"class":159},[91,92377,173],{"class":101},[49,92379,16694],{"id":16693},[16,92381,16697,92382,16700],{},[31,92383,16403],{},[82,92385,92386],{"className":1154,"code":16703,"language":1156,"meta":87,"style":87},[31,92387,92388,92398,92406,92410,92422,92426],{"__ignoreMap":87},[91,92389,92390,92392,92394,92396],{"class":93,"line":94},[91,92391,2574],{"class":566},[91,92393,12107],{"class":566},[91,92395,16381],{"class":97},[91,92397,7549],{"class":101},[91,92399,92400,92402,92404],{"class":93,"line":105},[91,92401,16388],{"class":101},[91,92403,16391],{"class":169},[91,92405,16394],{"class":101},[91,92407,92408],{"class":93,"line":121},[91,92409,16728],{"class":101},[91,92411,92412,92414,92416,92418,92420],{"class":93,"line":134},[91,92413,16733],{"class":101},[91,92415,16736],{"class":169},[91,92417,64],{"class":101},[91,92419,16741],{"class":169},[91,92421,16394],{"class":101},[91,92423,92424],{"class":93,"line":228},[91,92425,10581],{"class":101},[91,92427,92428],{"class":93,"line":250},[91,92429,9444],{"class":101},[16,92431,16754],{},[11,92433,16758],{"id":16757},[1722,92435,92436,92440,92445],{},[16,92437,16763,92438,16767],{},[91,92439,16766],{},[16,92441,16770,92442,16775],{},[4306,92443,16773],{"href":16773,"rel":92444},[4310],[16,92446,16778],{},[16,92448,16781],{},[4530,92450,92451,92453,92457],{},[27,92452,16786],{},[27,92454,92455,16792],{},[31,92456,16791],{},[27,92458,16795],{},[757,92460,16799],{"id":16798},[82,92462,92463],{"className":6839,"code":16802,"language":6841,"meta":87,"style":87},[31,92464,92465,92473,92481,92489,92497],{"__ignoreMap":87},[91,92466,92467,92469,92471],{"class":93,"line":94},[91,92468,16809],{"class":97},[91,92470,16812],{"class":108},[91,92472,16815],{"class":169},[91,92474,92475,92477,92479],{"class":93,"line":105},[91,92476,16809],{"class":97},[91,92478,16812],{"class":108},[91,92480,16824],{"class":169},[91,92482,92483,92485,92487],{"class":93,"line":121},[91,92484,16809],{"class":97},[91,92486,16812],{"class":108},[91,92488,16833],{"class":169},[91,92490,92491,92493,92495],{"class":93,"line":134},[91,92492,15417],{"class":97},[91,92494,8653],{"class":169},[91,92496,16842],{"class":1343},[91,92498,92499,92501,92503],{"class":93,"line":228},[91,92500,15417],{"class":97},[91,92502,16849],{"class":169},[91,92504,16852],{"class":169},[16,92506,16855],{},[1722,92508,92509,92513],{},[16,92510,92511,16862],{},[91,92512,1728],{},[24,92514,92515],{},[27,92516,92517,16869],{},[91,92518,16322],{},[16,92520,16872],{},[812,92522,92523,92539],{},[3001,92524,92525],{},[3004,92526,92527,92531,92535],{},[3007,92528,92529],{},[792,92530,16883],{},[3007,92532,92533],{},[792,92534,16888],{},[3007,92536,92537],{},[792,92538,16893],{},[3017,92540,92541,92555,92569],{},[3004,92542,92543,92547,92551],{},[3022,92544,92545],{},[792,92546,16902],{},[3022,92548,92549],{},[31,92550,16907],{},[3022,92552,92553,16913],{},[31,92554,16912],{},[3004,92556,92557,92561,92565],{},[3022,92558,92559],{},[792,92560,16920],{},[3022,92562,92563],{},[31,92564,16925],{},[3022,92566,92567,16931],{},[31,92568,16930],{},[3004,92570,92571,92575,92579],{},[3022,92572,92573],{},[792,92574,16791],{},[3022,92576,92577],{},[31,92578,16942],{},[3022,92580,92581,16931],{},[31,92582,16947],{},[82,92584,92585],{"className":6839,"code":16950,"language":6841,"meta":87,"style":87},[31,92586,92587],{"__ignoreMap":87},[91,92588,92589,92591,92593],{"class":93,"line":94},[91,92590,15417],{"class":97},[91,92592,8653],{"class":169},[91,92594,16961],{"class":169},[16,92596,16964],{},[757,92598,16968],{"id":16967},[82,92600,92601],{"className":1154,"code":16971,"language":1156,"meta":87,"style":87},[31,92602,92603,92607,92617,92627,92631,92649,92661,92669],{"__ignoreMap":87},[91,92604,92605],{"class":93,"line":94},[91,92606,16978],{"class":1343},[91,92608,92609,92611,92613,92615],{"class":93,"line":105},[91,92610,2499],{"class":566},[91,92612,16985],{"class":101},[91,92614,2505],{"class":566},[91,92616,16990],{"class":169},[91,92618,92619,92621,92623,92625],{"class":93,"line":121},[91,92620,2499],{"class":566},[91,92622,16997],{"class":101},[91,92624,2505],{"class":566},[91,92626,16440],{"class":169},[91,92628,92629],{"class":93,"line":134},[91,92630,1450],{"emptyLinePlaceholder":846},[91,92632,92633,92635,92637,92639,92641,92643,92645,92647],{"class":93,"line":228},[91,92634,2574],{"class":566},[91,92636,12107],{"class":566},[91,92638,17014],{"class":97},[91,92640,1169],{"class":101},[91,92642,17019],{"class":1172},[91,92644,1176],{"class":101},[91,92646,1179],{"class":566},[91,92648,102],{"class":101},[91,92650,92651,92653,92655,92657,92659],{"class":93,"line":250},[91,92652,2641],{"class":566},[91,92654,17032],{"class":108},[91,92656,1366],{"class":566},[91,92658,17037],{"class":97},[91,92660,9313],{"class":101},[91,92662,92663,92665,92667],{"class":93,"line":260},[91,92664,17044],{"class":101},[91,92666,14877],{"class":97},[91,92668,17049],{"class":101},[91,92670,92671],{"class":93,"line":274},[91,92672,9444],{"class":101},[16,92674,17056],{},[82,92676,92677],{"className":8477,"code":17059,"language":8479,"meta":87,"style":87},[31,92678,92679,92685,92695,92705,92715],{"__ignoreMap":87},[91,92680,92681,92683],{"class":93,"line":94},[91,92682,15325],{"class":169},[91,92684,8789],{"class":101},[91,92686,92687,92689,92691,92693],{"class":93,"line":105},[91,92688,17072],{"class":108},[91,92690,112],{"class":101},[91,92692,17077],{"class":169},[91,92694,7560],{"class":101},[91,92696,92697,92699,92701,92703],{"class":93,"line":121},[91,92698,17084],{"class":108},[91,92700,112],{"class":101},[91,92702,17089],{"class":169},[91,92704,7560],{"class":101},[91,92706,92707,92709,92711,92713],{"class":93,"line":134},[91,92708,17096],{"class":108},[91,92710,112],{"class":101},[91,92712,17101],{"class":169},[91,92714,7560],{"class":101},[91,92716,92717],{"class":93,"line":228},[91,92718,15376],{"class":101},[16,92720,17110],{},[829,92722,17113],{},{"title":87,"searchDepth":105,"depth":105,"links":92724},[92725,92726,92727,92728,92729],{"id":16338,"depth":105,"text":16339},{"id":16366,"depth":105,"text":16367},{"id":16407,"depth":105,"text":16408},{"id":16569,"depth":105,"text":16570},{"id":16693,"depth":105,"text":16694,"children":92730},[92731,92732],{"id":16798,"depth":121,"text":16799},{"id":16967,"depth":121,"text":16968},{},{"title":16330,"description":17124},{"loc":17127},[16322,16324,17132],{"id":17135,"title":17136,"body":92738,"created":17541,"description":17542,"extension":843,"filename":17543,"meta":93064,"navigation":846,"path":17545,"seo":93065,"sitemap":93066,"stem":17548,"subject":17549,"tags":93067,"updated":17541,"volume":1863,"__hash__":17554},{"type":8,"value":92739,"toc":93059},[92740,92742,92744,92746,92748,92753,92759,92765,92895,92901,92903,92909,92983,92989,92993,92995,92997,93057],[16,92741,17141],{},[16,92743,17144],{},[49,92745,17148],{"id":17147},[16,92747,17151],{},[82,92749,92751],{"className":92750,"code":17155,"language":1099,"meta":87},[1097],[31,92752,17155],{"__ignoreMap":87},[16,92754,17160,92755,15747,92757,17167],{},[792,92756,17163],{},[31,92758,17166],{},[16,92760,92761,17172,92763,17175],{},[31,92762,17163],{},[31,92764,17166],{},[82,92766,92767],{"className":1154,"code":17178,"language":1156,"meta":87,"style":87},[31,92768,92769,92785,92795,92823,92833,92845,92861,92869,92873,92881,92885,92891],{"__ignoreMap":87},[91,92770,92771,92773,92775,92777,92779,92781,92783],{"class":93,"line":94},[91,92772,7471],{"class":566},[91,92774,17187],{"class":97},[91,92776,795],{"class":101},[91,92778,17192],{"class":1172},[91,92780,64],{"class":101},[91,92782,17197],{"class":1172},[91,92784,3866],{"class":101},[91,92786,92787,92789,92791,92793],{"class":93,"line":105},[91,92788,2641],{"class":566},[91,92790,17206],{"class":108},[91,92792,1366],{"class":566},[91,92794,17211],{"class":101},[91,92796,92797,92799,92801,92803,92805,92807,92809,92811,92813,92815,92817,92819,92821],{"class":93,"line":121},[91,92798,17216],{"class":566},[91,92800,2662],{"class":101},[91,92802,1349],{"class":566},[91,92804,17223],{"class":101},[91,92806,166],{"class":566},[91,92808,11817],{"class":108},[91,92810,17230],{"class":101},[91,92812,156],{"class":566},[91,92814,17235],{"class":101},[91,92816,11811],{"class":108},[91,92818,17240],{"class":101},[91,92820,17243],{"class":566},[91,92822,3866],{"class":101},[91,92824,92825,92827,92829,92831],{"class":93,"line":134},[91,92826,1382],{"class":566},[91,92828,17252],{"class":108},[91,92830,1366],{"class":566},[91,92832,17257],{"class":101},[91,92834,92835,92837,92839,92841,92843],{"class":93,"line":228},[91,92836,1382],{"class":566},[91,92838,17264],{"class":108},[91,92840,1366],{"class":566},[91,92842,17269],{"class":97},[91,92844,17272],{"class":101},[91,92846,92847,92849,92851,92853,92855,92857,92859],{"class":93,"line":250},[91,92848,8218],{"class":566},[91,92850,2662],{"class":101},[91,92852,2665],{"class":566},[91,92854,17283],{"class":101},[91,92856,17286],{"class":97},[91,92858,17289],{"class":101},[91,92860,17292],{"class":1343},[91,92862,92863,92865,92867],{"class":93,"line":260},[91,92864,17297],{"class":101},[91,92866,166],{"class":566},[91,92868,11734],{"class":101},[91,92870,92871],{"class":93,"line":274},[91,92872,1693],{"class":101},[91,92874,92875,92877,92879],{"class":93,"line":284},[91,92876,17310],{"class":101},[91,92878,13348],{"class":97},[91,92880,17315],{"class":101},[91,92882,92883],{"class":93,"line":299},[91,92884,1698],{"class":101},[91,92886,92887,92889],{"class":93,"line":319},[91,92888,2695],{"class":566},[91,92890,17326],{"class":101},[91,92892,92893],{"class":93,"line":334},[91,92894,137],{"class":101},[16,92896,92897,17336,92899,17340],{},[31,92898,17335],{},[31,92900,17339],{},[49,92902,17344],{"id":17343},[16,92904,17347,92905,15747,92907,17353],{},[792,92906,17350],{},[31,92908,17166],{},[82,92910,92911],{"className":1154,"code":17356,"language":1156,"meta":87,"style":87},[31,92912,92913,92941,92953,92961,92969,92975,92979],{"__ignoreMap":87},[91,92914,92915,92917,92919,92921,92923,92925,92927,92929,92931,92933,92935,92937,92939],{"class":93,"line":94},[91,92916,5626],{"class":566},[91,92918,17365],{"class":101},[91,92920,166],{"class":566},[91,92922,17370],{"class":97},[91,92924,795],{"class":101},[91,92926,7471],{"class":566},[91,92928,795],{"class":101},[91,92930,17379],{"class":1172},[91,92932,64],{"class":101},[91,92934,8343],{"class":1172},[91,92936,64],{"class":101},[91,92938,9452],{"class":1172},[91,92940,3866],{"class":101},[91,92942,92943,92945,92947,92949,92951],{"class":93,"line":105},[91,92944,2439],{"class":566},[91,92946,17396],{"class":101},[91,92948,17399],{"class":97},[91,92950,17289],{"class":101},[91,92952,17404],{"class":1343},[91,92954,92955,92957,92959],{"class":93,"line":121},[91,92956,17310],{"class":101},[91,92958,13348],{"class":97},[91,92960,17413],{"class":101},[91,92962,92963,92965,92967],{"class":93,"line":134},[91,92964,2053],{"class":101},[91,92966,5258],{"class":566},[91,92968,102],{"class":101},[91,92970,92971,92973],{"class":93,"line":228},[91,92972,17426],{"class":97},[91,92974,17429],{"class":101},[91,92976,92977],{"class":93,"line":250},[91,92978,1698],{"class":101},[91,92980,92981],{"class":93,"line":260},[91,92982,1303],{"class":101},[16,92984,92985,17442,92987,17446],{},[31,92986,17350],{},[31,92988,17445],{},[16,92990,17449,92991,17452],{},[31,92992,17163],{},[49,92994,17456],{"id":17455},[16,92996,17459],{},[24,92998,92999,93003,93049],{},[27,93000,93001],{},[792,93002,17466],{},[27,93004,93005,93007,93013],{},[792,93006,17471],{},[24,93008,93009],{},[27,93010,17476,93011,17479],{},[31,93012,17335],{},[82,93014,93015],{"className":1154,"code":17482,"language":1156,"meta":87,"style":87},[31,93016,93017],{"__ignoreMap":87},[91,93018,93019,93021,93023,93025,93027,93029,93031,93033,93035,93037,93039,93041,93043,93045,93047],{"class":93,"line":94},[91,93020,1968],{"class":566},[91,93022,17491],{"class":97},[91,93024,1366],{"class":566},[91,93026,2662],{"class":101},[91,93028,17498],{"class":1172},[91,93030,64],{"class":101},[91,93032,9452],{"class":1172},[91,93034,1176],{"class":101},[91,93036,1179],{"class":566},[91,93038,17509],{"class":108},[91,93040,1235],{"class":101},[91,93042,17514],{"class":108},[91,93044,17517],{"class":101},[91,93046,17399],{"class":97},[91,93048,17522],{"class":101},[27,93050,93051,93053],{},[792,93052,17527],{},[24,93054,93055],{},[27,93056,17532],{},[829,93058,17535],{},{"title":87,"searchDepth":105,"depth":105,"links":93060},[93061,93062,93063],{"id":17147,"depth":105,"text":17148},{"id":17343,"depth":105,"text":17344},{"id":17455,"depth":105,"text":17456},{},{"title":17136,"description":17542},{"loc":17545},[2865,17551,17552,17553],{"id":17556,"title":17557,"body":93069,"created":17676,"description":17677,"extension":843,"filename":17678,"meta":93164,"navigation":846,"path":17680,"seo":93165,"sitemap":93166,"stem":17683,"subject":4438,"tags":93167,"updated":17676,"volume":1863,"__hash__":17687},{"type":8,"value":93070,"toc":93162},[93071,93076,93078,93082,93084,93090,93096,93158,93160],[82,93072,93074],{"className":93073,"code":17563,"language":1099},[1097],[31,93075,17563],{"__ignoreMap":87},[16,93077,17568],{},[16,93079,93080],{},[19,93081],{"alt":21,"src":17573},[16,93083,17576],{},[24,93085,93086,93088],{},[27,93087,17581],{},[27,93089,17584],{},[16,93091,93092,17590,93094,17594],{},[31,93093,17589],{},[31,93095,17593],{},[82,93097,93098],{"className":8477,"code":17597,"language":8479,"meta":87,"style":87},[31,93099,93100,93104,93114,93120,93130,93140,93150,93154],{"__ignoreMap":87},[91,93101,93102],{"class":93,"line":94},[91,93103,8486],{"class":101},[91,93105,93106,93108,93110,93112],{"class":93,"line":105},[91,93107,17608],{"class":108},[91,93109,1208],{"class":101},[91,93111,17613],{"class":169},[91,93113,7560],{"class":101},[91,93115,93116,93118],{"class":93,"line":121},[91,93117,17620],{"class":108},[91,93119,17623],{"class":101},[91,93121,93122,93124,93126,93128],{"class":93,"line":134},[91,93123,17628],{"class":108},[91,93125,1208],{"class":101},[91,93127,17633],{"class":169},[91,93129,7560],{"class":101},[91,93131,93132,93134,93136,93138],{"class":93,"line":228},[91,93133,17640],{"class":108},[91,93135,1208],{"class":101},[91,93137,17645],{"class":169},[91,93139,7560],{"class":101},[91,93141,93142,93144,93146,93148],{"class":93,"line":250},[91,93143,17652],{"class":108},[91,93145,1208],{"class":101},[91,93147,17657],{"class":169},[91,93149,7560],{"class":101},[91,93151,93152],{"class":93,"line":260},[91,93153,1693],{"class":101},[91,93155,93156],{"class":93,"line":274},[91,93157,137],{"class":101},[16,93159,17670],{},[829,93161,17673],{},{"title":87,"searchDepth":105,"depth":105,"links":93163},[],{},{"title":17557,"description":17677},{"loc":17680},[4438,17685,17686],{"id":17689,"title":17690,"body":93169,"created":18076,"description":18077,"extension":843,"filename":18078,"meta":93453,"navigation":846,"path":18080,"seo":93454,"sitemap":93455,"stem":18083,"subject":18084,"tags":93456,"updated":6033,"volume":853,"__hash__":18089},{"type":8,"value":93170,"toc":93447},[93171,93175,93187,93189,93197,93201,93203,93205,93209,93211,93213,93265,93269,93277,93279,93281,93283,93291,93299,93301,93303,93419,93423,93425,93427,93429,93441,93443,93445],[16,93172,17695,93173,17699],{},[31,93174,17698],{},[4530,93176,93177,93181,93183,93185],{},[27,93178,17704,93179,17707],{},[31,93180,17698],{},[27,93182,17710],{},[27,93184,17713],{},[27,93186,17716],{},[16,93188,17719],{},[4530,93190,93191,93193,93195],{},[27,93192,17724],{},[27,93194,17727],{},[27,93196,17730],{},[16,93198,17733,93199,17737],{},[31,93200,17736],{},[1112,93202],{"description":17740,"favicon":17741,"host":17742,"title":17743,"url":17744},[1112,93204],{"description":17747,"favicon":17741,"host":17742,"title":17748,"url":17749},[16,93206,17752,93207,17755],{},[31,93208,17698],{},[49,93210,17759],{"id":17758},[16,93212,17762],{},[812,93214,93215,93225],{},[3001,93216,93217],{},[3004,93218,93219,93221,93223],{},[3007,93220,17771],{},[3007,93222,17774],{},[3007,93224,17777],{},[3017,93226,93227,93241,93253],{},[3004,93228,93229,93235,93237],{},[3022,93230,93231,64,93233],{},[31,93232,17786],{},[31,93234,17789],{},[3022,93236,17792],{},[3022,93238,93239],{},[31,93240,17797],{},[3004,93242,93243,93247,93249],{},[3022,93244,93245],{},[31,93246,17698],{},[3022,93248,17806],{},[3022,93250,93251],{},[31,93252,17811],{},[3004,93254,93255,93259,93261],{},[3022,93256,93257,17819],{},[31,93258,17818],{},[3022,93260,17822],{},[3022,93262,93263],{},[31,93264,17811],{},[16,93266,17829,93267,17832],{},[31,93268,17698],{},[16,93270,93271,17837,93273,5733,93275,17843],{},[31,93272,17811],{},[31,93274,17811],{},[31,93276,17842],{},[1112,93278],{"description":17846,"favicon":17741,"host":17742,"title":17847,"url":17848},[16,93280,17851],{},[49,93282,17855],{"id":17854},[16,93284,17858,93285,17861,93287,17864,93289,15394],{},[31,93286,17698],{},[31,93288,17818],{},[792,93290,17867],{},[16,93292,17870,93293,34,93295,17876,93297,17879],{},[31,93294,8361],{},[31,93296,17875],{},[31,93298,8361],{},[49,93300,17883],{"id":17882},[16,93302,17886],{},[82,93304,93305],{"className":6839,"code":17889,"language":6841,"meta":87,"style":87},[31,93306,93307,93311,93329,93337,93345,93353,93359,93363,93367,93385,93391,93395,93413],{"__ignoreMap":87},[91,93308,93309],{"class":93,"line":94},[91,93310,17896],{"class":1343},[91,93312,93313,93315,93317,93319,93321,93323,93325,93327],{"class":93,"line":105},[91,93314,17901],{"class":97},[91,93316,17904],{"class":169},[91,93318,17907],{"class":169},[91,93320,17910],{"class":169},[91,93322,17913],{"class":169},[91,93324,17916],{"class":101},[91,93326,2139],{"class":169},[91,93328,8442],{"class":108},[91,93330,93331,93333,93335],{"class":93,"line":121},[91,93332,17925],{"class":108},[91,93334,17928],{"class":169},[91,93336,8442],{"class":108},[91,93338,93339,93341,93343],{"class":93,"line":134},[91,93340,17925],{"class":108},[91,93342,17937],{"class":169},[91,93344,8442],{"class":108},[91,93346,93347,93349,93351],{"class":93,"line":228},[91,93348,17925],{"class":108},[91,93350,17946],{"class":169},[91,93352,8442],{"class":108},[91,93354,93355,93357],{"class":93,"line":250},[91,93356,17953],{"class":108},[91,93358,17956],{"class":169},[91,93360,93361],{"class":93,"line":260},[91,93362,1450],{"emptyLinePlaceholder":846},[91,93364,93365],{"class":93,"line":274},[91,93366,17965],{"class":1343},[91,93368,93369,93371,93373,93375,93377,93379,93381,93383],{"class":93,"line":284},[91,93370,17901],{"class":97},[91,93372,17904],{"class":169},[91,93374,17974],{"class":169},[91,93376,17977],{"class":169},[91,93378,17913],{"class":169},[91,93380,17916],{"class":101},[91,93382,17984],{"class":169},[91,93384,8442],{"class":108},[91,93386,93387,93389],{"class":93,"line":299},[91,93388,17953],{"class":108},[91,93390,17993],{"class":169},[91,93392,93393],{"class":93,"line":319},[91,93394,1450],{"emptyLinePlaceholder":846},[91,93396,93397,93399,93401,93403,93405,93407,93409,93411],{"class":93,"line":334},[91,93398,17901],{"class":97},[91,93400,17904],{"class":169},[91,93402,17974],{"class":169},[91,93404,18008],{"class":169},[91,93406,17913],{"class":169},[91,93408,17916],{"class":101},[91,93410,18015],{"class":169},[91,93412,8442],{"class":108},[91,93414,93415,93417],{"class":93,"line":355},[91,93416,17953],{"class":108},[91,93418,17993],{"class":169},[16,93420,18026,93421,18029],{},[31,93422,17736],{},[16,93424,18032],{},[49,93426,18036],{"id":18035},[16,93428,18039],{},[24,93430,93431,93433,93435,93437],{},[27,93432,18044],{},[27,93434,18047],{},[27,93436,18050],{},[27,93438,18053,93439,18056],{},[31,93440,17736],{},[1112,93442],{"description":18059,"favicon":17741,"host":17742,"title":18060,"url":18061},[1112,93444],{"description":18064,"favicon":17741,"host":17742,"title":18065,"url":18066},[829,93446,18069],{},{"title":87,"searchDepth":105,"depth":105,"links":93448},[93449,93450,93451,93452],{"id":17758,"depth":105,"text":17759},{"id":17854,"depth":105,"text":17855},{"id":17882,"depth":105,"text":17883},{"id":18035,"depth":105,"text":18036},{},{"title":17690,"description":18077},{"loc":18080},[17901,18086,18087,18088,12668,4954],{"id":18091,"title":18092,"body":93458,"created":18462,"description":18463,"extension":843,"filename":18464,"meta":93736,"navigation":846,"path":18466,"seo":93737,"sitemap":93738,"stem":18469,"subject":4438,"tags":93739,"updated":6033,"volume":853,"__hash__":18471},{"type":8,"value":93459,"toc":93729},[93460,93462,93464,93472,93516,93522,93526,93528,93530,93532,93538,93542,93546,93548,93550,93552,93554,93586,93590,93592,93594,93602,93607,93617,93725,93727],[16,93461,18097],{},[49,93463,18101],{"id":18100},[16,93465,18104,93466,15747,93468,18110,93470,18114],{},[31,93467,18107],{},[31,93469,962],{},[31,93471,18113],{},[82,93473,93474],{"className":1000,"code":18117,"language":1002,"meta":87,"style":87},[31,93475,93476,93480,93484,93488,93492,93496,93500,93504,93508,93512],{"__ignoreMap":87},[91,93477,93478],{"class":93,"line":94},[91,93479,18124],{},[91,93481,93482],{"class":93,"line":105},[91,93483,18129],{},[91,93485,93486],{"class":93,"line":121},[91,93487,18134],{},[91,93489,93490],{"class":93,"line":134},[91,93491,18139],{},[91,93493,93494],{"class":93,"line":228},[91,93495,3487],{},[91,93497,93498],{"class":93,"line":250},[91,93499,18148],{},[91,93501,93502],{"class":93,"line":260},[91,93503,1450],{"emptyLinePlaceholder":846},[91,93505,93506],{"class":93,"line":274},[91,93507,18157],{},[91,93509,93510],{"class":93,"line":284},[91,93511,18162],{},[91,93513,93514],{"class":93,"line":299},[91,93515,137],{},[16,93517,18169,93518,18173,93520,18177],{},[31,93519,18172],{},[31,93521,18176],{},[16,93523,93524],{},[19,93525],{"alt":18182,"src":18183},[16,93527,18186],{},[49,93529,18190],{"id":18189},[757,93531,18194],{"id":18193},[16,93533,18197,93534,18200,93536,18204],{},[31,93535,18172],{},[31,93537,18203],{},[16,93539,93540],{},[19,93541],{"alt":18209,"src":18210},[16,93543,93544,18216],{},[31,93545,18215],{},[1112,93547],{"description":18219,"host":1714,"image":18220,"title":18221,"url":18222},[1112,93549],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[757,93551,18232],{"id":18231},[16,93553,18235],{},[82,93555,93556],{"className":1000,"code":18238,"language":1002,"meta":87,"style":87},[31,93557,93558,93562,93566,93570,93574,93578,93582],{"__ignoreMap":87},[91,93559,93560],{"class":93,"line":94},[91,93561,18157],{},[91,93563,93564],{"class":93,"line":105},[91,93565,18162],{},[91,93567,93568],{"class":93,"line":121},[91,93569,1674],{},[91,93571,93572],{"class":93,"line":134},[91,93573,18257],{},[91,93575,93576],{"class":93,"line":228},[91,93577,18262],{},[91,93579,93580],{"class":93,"line":250},[91,93581,18267],{},[91,93583,93584],{"class":93,"line":260},[91,93585,137],{},[16,93587,18274,93588,18278],{},[31,93589,18277],{},[1112,93591],{"description":18225,"host":1317,"image":18226,"title":18227,"url":18228,"favicon":1320},[771,93593,18284],{"id":18283},[16,93595,18287,93596,18290,93598,18294,93600,18298],{},[31,93597,18277],{},[31,93599,18293],{},[31,93601,18297],{},[82,93603,93605],{"className":93604,"code":18302,"language":1099,"meta":87},[1097],[31,93606,18302],{"__ignoreMap":87},[16,93608,18307,93609,18311,93611,18315,93613,5733,93615,18322],{},[31,93610,18310],{},[31,93612,18314],{},[31,93614,18318],{},[31,93616,18321],{},[82,93618,93619],{"className":1000,"code":18325,"language":1002,"meta":87,"style":87},[31,93620,93621,93625,93629,93633,93637,93641,93645,93649,93653,93657,93661,93665,93669,93673,93677,93681,93685,93689,93693,93697,93701,93705,93709,93713,93717,93721],{"__ignoreMap":87},[91,93622,93623],{"class":93,"line":94},[91,93624,18332],{},[91,93626,93627],{"class":93,"line":105},[91,93628,1450],{"emptyLinePlaceholder":846},[91,93630,93631],{"class":93,"line":121},[91,93632,18341],{},[91,93634,93635],{"class":93,"line":134},[91,93636,18346],{},[91,93638,93639],{"class":93,"line":228},[91,93640,18351],{},[91,93642,93643],{"class":93,"line":250},[91,93644,18356],{},[91,93646,93647],{"class":93,"line":260},[91,93648,18361],{},[91,93650,93651],{"class":93,"line":274},[91,93652,18366],{},[91,93654,93655],{"class":93,"line":284},[91,93656,18371],{},[91,93658,93659],{"class":93,"line":299},[91,93660,1674],{},[91,93662,93663],{"class":93,"line":319},[91,93664,18380],{},[91,93666,93667],{"class":93,"line":334},[91,93668,18385],{},[91,93670,93671],{"class":93,"line":355},[91,93672,18390],{},[91,93674,93675],{"class":93,"line":364},[91,93676,4267],{},[91,93678,93679],{"class":93,"line":378},[91,93680,18399],{},[91,93682,93683],{"class":93,"line":387},[91,93684,18404],{},[91,93686,93687],{"class":93,"line":402},[91,93688,1693],{},[91,93690,93691],{"class":93,"line":422},[91,93692,1674],{},[91,93694,93695],{"class":93,"line":438},[91,93696,18417],{},[91,93698,93699],{"class":93,"line":458},[91,93700,18422],{},[91,93702,93703],{"class":93,"line":467},[91,93704,1693],{},[91,93706,93707],{"class":93,"line":481},[91,93708,1674],{},[91,93710,93711],{"class":93,"line":490},[91,93712,18435],{},[91,93714,93715],{"class":93,"line":3310},[91,93716,18440],{},[91,93718,93719],{"class":93,"line":3315},[91,93720,18445],{},[91,93722,93723],{"class":93,"line":3321},[91,93724,137],{},[16,93726,18452],{},[829,93728,4416],{},{"title":87,"searchDepth":105,"depth":105,"links":93730},[93731,93732],{"id":18100,"depth":105,"text":18101},{"id":18189,"depth":105,"text":18190,"children":93733},[93734,93735],{"id":18193,"depth":121,"text":18194},{"id":18231,"depth":121,"text":18232},{},{"title":18092,"description":18463},{"loc":18466},[1511,1002,4954],{"id":18473,"title":18474,"body":93741,"created":18579,"description":18580,"extension":843,"filename":18581,"meta":93825,"navigation":846,"path":18583,"seo":93826,"sitemap":93827,"stem":18586,"subject":15047,"tags":93828,"updated":18579,"volume":853,"__hash__":18590},{"type":8,"value":93742,"toc":93823},[93743,93747,93751,93817,93821],[16,93744,18479,93745,18483],{},[792,93746,18482],{},[16,93748,18486,93749,18490],{},[31,93750,18489],{},[82,93752,93753],{"className":147,"code":18493,"language":149,"meta":87,"style":87},[31,93754,93755,93769,93773,93777,93781,93785,93789,93793,93797,93801,93805,93809],{"__ignoreMap":87},[91,93756,93757,93759,93761,93763,93765,93767],{"class":93,"line":94},[91,93758,156],{"class":101},[91,93760,1945],{"class":159},[91,93762,18504],{"class":97},[91,93764,166],{"class":101},[91,93766,18509],{"class":169},[91,93768,173],{"class":101},[91,93770,93771],{"class":93,"line":105},[91,93772,8486],{"class":101},[91,93774,93775],{"class":93,"line":121},[91,93776,18520],{"class":101},[91,93778,93779],{"class":93,"line":134},[91,93780,18525],{"class":101},[91,93782,93783],{"class":93,"line":228},[91,93784,18530],{"class":101},[91,93786,93787],{"class":93,"line":250},[91,93788,18535],{"class":101},[91,93790,93791],{"class":93,"line":260},[91,93792,18540],{"class":101},[91,93794,93795],{"class":93,"line":274},[91,93796,18545],{"class":101},[91,93798,93799],{"class":93,"line":284},[91,93800,10581],{"class":101},[91,93802,93803],{"class":93,"line":299},[91,93804,18554],{"class":101},[91,93806,93807],{"class":93,"line":319},[91,93808,137],{"class":101},[91,93810,93811,93813,93815],{"class":93,"line":334},[91,93812,493],{"class":101},[91,93814,1945],{"class":159},[91,93816,173],{"class":101},[16,93818,18569,93819,18573],{},[792,93820,18572],{},[829,93822,18576],{},{"title":87,"searchDepth":105,"depth":105,"links":93824},[],{},{"title":18474,"description":18580},{"loc":18583},[18588,149,18589],{"id":18592,"title":18593,"body":93830,"created":18884,"description":18885,"extension":843,"filename":18886,"meta":94044,"navigation":846,"path":18888,"seo":94045,"sitemap":94046,"stem":18891,"subject":18892,"tags":94047,"updated":18884,"volume":853,"__hash__":18896},{"type":8,"value":93831,"toc":94038},[93832,93836,93838,93842,93844,93852,93858,93860,93862,93866,93874,93878,93884,93886,93896,93898,93900,93902,93966,93968,94024,94028,94030,94032,94034,94036],[16,93833,18598,93834,18602],{},[31,93835,18601],{},[16,93837,18605],{},[16,93839,93840],{},[19,93841],{"alt":18610,"src":18611},[49,93843,18615],{"id":18614},[16,93845,18618,93846,5321,93848,18625,93850,18628],{},[31,93847,18621],{},[31,93849,18624],{},[31,93851,18621],{},[16,93853,18631,93854,18634,93856,18638],{},[31,93855,8361],{},[31,93857,18637],{},[16,93859,18641],{},[49,93861,18645],{"id":18644},[16,93863,18648,93864,18652],{},[31,93865,18651],{},[16,93867,18655,93868,18659,93870,64,93872,18666],{},[31,93869,18658],{},[31,93871,18662],{},[31,93873,18665],{},[16,93875,93876],{},[19,93877],{"alt":18671,"src":18672},[16,93879,93880,18677,93882,18681],{},[31,93881,18658],{},[31,93883,18680],{},[16,93885,18684],{},[24,93887,93888,93892],{},[27,93889,93890,18691],{},[31,93891,18662],{},[27,93893,93894,18696],{},[31,93895,18665],{},[16,93897,18699],{},[49,93899,18703],{"id":18702},[16,93901,18706],{},[82,93903,93904],{"className":7462,"code":18709,"language":7464,"meta":87,"style":87},[31,93905,93906,93922,93926,93934,93950,93954,93958,93962],{"__ignoreMap":87},[91,93907,93908,93910,93912,93914,93916,93918,93920],{"class":93,"line":94},[91,93909,1968],{"class":566},[91,93911,18718],{"class":108},[91,93913,1366],{"class":566},[91,93915,1390],{"class":566},[91,93917,18725],{"class":101},[91,93919,18728],{"class":97},[91,93921,9313],{"class":101},[91,93923,93924],{"class":93,"line":105},[91,93925,1450],{"emptyLinePlaceholder":846},[91,93927,93928,93930,93932],{"class":93,"line":121},[91,93929,18739],{"class":101},[91,93931,812],{"class":97},[91,93933,9266],{"class":101},[91,93935,93936,93938,93940,93942,93944,93946,93948],{"class":93,"line":134},[91,93937,18748],{"class":101},[91,93939,13083],{"class":97},[91,93941,1169],{"class":101},[91,93943,18755],{"class":1172},[91,93945,1176],{"class":101},[91,93947,1179],{"class":566},[91,93949,18762],{"class":101},[91,93951,93952],{"class":93,"line":228},[91,93953,18767],{"class":101},[91,93955,93956],{"class":93,"line":250},[91,93957,18772],{"class":101},[91,93959,93960],{"class":93,"line":260},[91,93961,18777],{"class":101},[91,93963,93964],{"class":93,"line":274},[91,93965,3487],{"class":101},[16,93967,18784],{},[82,93969,93970],{"className":7462,"code":18787,"language":7464,"meta":87,"style":87},[31,93971,93972,93988,94016],{"__ignoreMap":87},[91,93973,93974,93976,93978,93980,93982,93984,93986],{"class":93,"line":94},[91,93975,1968],{"class":566},[91,93977,18718],{"class":108},[91,93979,1366],{"class":566},[91,93981,1390],{"class":566},[91,93983,18725],{"class":101},[91,93985,18728],{"class":97},[91,93987,9313],{"class":101},[91,93989,93990,93992,93994,93996,93998,94000,94002,94004,94006,94008,94010,94012,94014],{"class":93,"line":105},[91,93991,18810],{"class":566},[91,93993,1976],{"class":108},[91,93995,1235],{"class":101},[91,93997,18817],{"class":97},[91,93999,18820],{"class":101},[91,94001,13083],{"class":97},[91,94003,1169],{"class":101},[91,94005,18755],{"class":1172},[91,94007,1176],{"class":101},[91,94009,1179],{"class":566},[91,94011,18833],{"class":101},[91,94013,18836],{"class":97},[91,94015,18839],{"class":101},[91,94017,94018,94020,94022],{"class":93,"line":121},[91,94019,18844],{"class":101},[91,94021,18847],{"class":97},[91,94023,9313],{"class":101},[16,94025,18852,94026,18856],{},[31,94027,18855],{},[49,94029,6005],{"id":6004},[1112,94031],{"description":18861,"host":18862,"title":18863,"url":18864},[1112,94033],{"description":18867,"host":5541,"title":18868,"url":18869,"favicon":9248},[1112,94035],{"description":18872,"host":5541,"title":18873,"url":18874,"favicon":9248},[829,94037,18877],{},{"title":87,"searchDepth":105,"depth":105,"links":94039},[94040,94041,94042,94043],{"id":18614,"depth":105,"text":18615},{"id":18644,"depth":105,"text":18645},{"id":18702,"depth":105,"text":18703},{"id":6004,"depth":105,"text":6005},{},{"title":18593,"description":18885},{"loc":18888},[10141,18088,18894,18895,14430],{"id":18898,"title":18899,"body":94049,"created":19588,"description":19589,"extension":843,"filename":19590,"meta":94606,"navigation":846,"path":19592,"seo":94607,"sitemap":94608,"stem":19595,"subject":851,"tags":94609,"updated":19588,"volume":1863,"__hash__":19597},{"type":8,"value":94050,"toc":94601},[94051,94053,94089,94091,94093,94095,94135,94139,94141,94143,94145,94147,94183,94205,94211,94215,94217,94219,94221,94305,94313,94335,94341,94381,94387,94511,94521,94523,94525,94593,94599],[16,94052,18904],{},[812,94054,94055,94067],{},[3001,94056,94057],{},[3004,94058,94059,94063],{},[3007,94060,94061],{},[31,94062,18915],{},[3007,94064,94065],{},[31,94066,18920],{},[3017,94068,94069,94079],{},[3004,94070,94071,94075],{},[3022,94072,94073],{},[31,94074,18929],{},[3022,94076,94077],{},[31,94078,18934],{},[3004,94080,94081,94085],{},[3022,94082,94083],{},[31,94084,18941],{},[3022,94086,94087],{},[31,94088,18946],{},[16,94090,18949],{},[49,94092,18953],{"id":18952},[1112,94094],{"host":5599,"title":18956,"url":18957,"description":18958,"image":18959,"favicon":5598},[82,94096,94097],{"className":147,"code":18962,"language":149,"meta":87,"style":87},[31,94098,94099,94117],{"__ignoreMap":87},[91,94100,94101,94103,94105,94107,94109,94111,94113,94115],{"class":93,"line":94},[91,94102,156],{"class":101},[91,94104,16],{"class":159},[91,94106,163],{"class":97},[91,94108,166],{"class":101},[91,94110,18977],{"class":169},[91,94112,12566],{"class":101},[91,94114,16],{"class":159},[91,94116,173],{"class":101},[91,94118,94119,94121,94123,94125,94127,94129,94131,94133],{"class":93,"line":105},[91,94120,156],{"class":101},[91,94122,16],{"class":159},[91,94124,163],{"class":97},[91,94126,166],{"class":101},[91,94128,18996],{"class":169},[91,94130,12566],{"class":101},[91,94132,16],{"class":159},[91,94134,173],{"class":101},[16,94136,19005,94137,19009],{},[31,94138,19008],{},[49,94140,19013],{"id":19012},[16,94142,19016],{},[1112,94144],{"host":5599,"title":18956,"url":19019,"description":18958,"image":18959,"favicon":5598},[1112,94146],{"host":5599,"title":19022,"url":19023,"description":19024,"image":19025,"favicon":5598},[82,94148,94149],{"className":84,"code":19028,"language":86,"meta":87,"style":87},[31,94150,94151,94157,94163,94169,94175,94179],{"__ignoreMap":87},[91,94152,94153,94155],{"class":93,"line":94},[91,94154,19035],{"class":566},[91,94156,102],{"class":101},[91,94158,94159,94161],{"class":93,"line":105},[91,94160,19042],{"class":101},[91,94162,19045],{"class":5466},[91,94164,94165,94167],{"class":93,"line":121},[91,94166,19050],{"class":101},[91,94168,19053],{"class":5466},[91,94170,94171,94173],{"class":93,"line":134},[91,94172,19058],{"class":101},[91,94174,19061],{"class":5466},[91,94176,94177],{"class":93,"line":228},[91,94178,19066],{"class":101},[91,94180,94181],{"class":93,"line":250},[91,94182,137],{"class":101},[82,94184,94185],{"className":147,"code":19073,"language":149,"meta":87,"style":87},[31,94186,94187],{"__ignoreMap":87},[91,94188,94189,94191,94193,94195,94197,94199,94201,94203],{"class":93,"line":94},[91,94190,156],{"class":101},[91,94192,16],{"class":159},[91,94194,163],{"class":97},[91,94196,166],{"class":101},[91,94198,19088],{"class":169},[91,94200,12566],{"class":101},[91,94202,16],{"class":159},[91,94204,173],{"class":101},[16,94206,94207,19100,94209,19104],{},[31,94208,19099],{},[31,94210,19103],{},[16,94212,94213],{},[19,94214],{"alt":21,"src":19109},[16,94216,19112],{},[1112,94218],{"host":1714,"title":19115,"url":19116,"description":19117,"image":19118},[16,94220,19121],{},[82,94222,94223],{"className":84,"code":19124,"language":86,"meta":87,"style":87},[31,94224,94225,94229,94235,94241,94247,94253,94259,94263,94267,94273,94281,94289,94297,94301],{"__ignoreMap":87},[91,94226,94227],{"class":93,"line":94},[91,94228,1450],{"emptyLinePlaceholder":846},[91,94230,94231,94233],{"class":93,"line":105},[91,94232,19135],{"class":566},[91,94234,19138],{"class":101},[91,94236,94237,94239],{"class":93,"line":121},[91,94238,19035],{"class":566},[91,94240,102],{"class":101},[91,94242,94243,94245],{"class":93,"line":134},[91,94244,19149],{"class":101},[91,94246,19045],{"class":5466},[91,94248,94249,94251],{"class":93,"line":228},[91,94250,19156],{"class":101},[91,94252,19053],{"class":5466},[91,94254,94255,94257],{"class":93,"line":250},[91,94256,19163],{"class":101},[91,94258,19061],{"class":5466},[91,94260,94261],{"class":93,"line":260},[91,94262,14989],{"class":101},[91,94264,94265],{"class":93,"line":274},[91,94266,137],{"class":101},[91,94268,94269,94271],{"class":93,"line":284},[91,94270,19178],{"class":566},[91,94272,19181],{"class":101},[91,94274,94275,94277,94279],{"class":93,"line":299},[91,94276,19149],{"class":101},[91,94278,19188],{"class":5466},[91,94280,118],{"class":101},[91,94282,94283,94285,94287],{"class":93,"line":319},[91,94284,19156],{"class":101},[91,94286,19197],{"class":5466},[91,94288,118],{"class":101},[91,94290,94291,94293,94295],{"class":93,"line":334},[91,94292,19163],{"class":101},[91,94294,19206],{"class":5466},[91,94296,118],{"class":101},[91,94298,94299],{"class":93,"line":355},[91,94300,14989],{"class":101},[91,94302,94303],{"class":93,"line":364},[91,94304,137],{"class":101},[16,94306,18274,94307,19222,94309,19226,94311,19230],{},[31,94308,19221],{},[31,94310,19225],{},[31,94312,19229],{},[82,94314,94315],{"className":147,"code":19233,"language":149,"meta":87,"style":87},[31,94316,94317],{"__ignoreMap":87},[91,94318,94319,94321,94323,94325,94327,94329,94331,94333],{"class":93,"line":94},[91,94320,156],{"class":101},[91,94322,149],{"class":159},[91,94324,163],{"class":97},[91,94326,166],{"class":101},[91,94328,19248],{"class":169},[91,94330,12566],{"class":101},[91,94332,149],{"class":159},[91,94334,173],{"class":101},[16,94336,19257,94337,19260,94339,19263],{},[31,94338,149],{},[31,94340,19221],{},[82,94342,94343],{"className":147,"code":19266,"language":149,"meta":87,"style":87},[31,94344,94345,94363],{"__ignoreMap":87},[91,94346,94347,94349,94351,94353,94355,94357,94359,94361],{"class":93,"line":94},[91,94348,156],{"class":101},[91,94350,160],{"class":159},[91,94352,163],{"class":97},[91,94354,166],{"class":101},[91,94356,19281],{"class":169},[91,94358,19284],{"class":101},[91,94360,160],{"class":159},[91,94362,173],{"class":101},[91,94364,94365,94367,94369,94371,94373,94375,94377,94379],{"class":93,"line":105},[91,94366,156],{"class":101},[91,94368,160],{"class":159},[91,94370,163],{"class":97},[91,94372,166],{"class":101},[91,94374,19301],{"class":169},[91,94376,19284],{"class":101},[91,94378,160],{"class":159},[91,94380,173],{"class":101},[16,94382,19310,94383,19314,94385,19318],{},[31,94384,19313],{},[31,94386,19317],{},[82,94388,94389],{"className":1154,"code":19321,"language":1156,"meta":87,"style":87},[31,94390,94391,94395,94399,94403,94419,94439,94453,94465,94487,94499,94507],{"__ignoreMap":87},[91,94392,94393],{"class":93,"line":94},[91,94394,2559],{"class":1343},[91,94396,94397],{"class":93,"line":105},[91,94398,19332],{"class":1343},[91,94400,94401],{"class":93,"line":121},[91,94402,2569],{"class":1343},[91,94404,94405,94407,94409,94411,94413,94415,94417],{"class":93,"line":134},[91,94406,7471],{"class":566},[91,94408,19343],{"class":97},[91,94410,795],{"class":101},[91,94412,19348],{"class":1172},[91,94414,1208],{"class":566},[91,94416,19353],{"class":97},[91,94418,3866],{"class":101},[91,94420,94421,94423,94425,94427,94429,94431,94433,94435,94437],{"class":93,"line":228},[91,94422,19360],{"class":101},[91,94424,19363],{"class":97},[91,94426,795],{"class":101},[91,94428,1442],{"class":566},[91,94430,19370],{"class":101},[91,94432,19373],{"class":169},[91,94434,64],{"class":101},[91,94436,1442],{"class":566},[91,94438,19380],{"class":101},[91,94440,94441,94443,94445,94447,94449,94451],{"class":93,"line":250},[91,94442,8218],{"class":566},[91,94444,19387],{"class":101},[91,94446,9382],{"class":566},[91,94448,19392],{"class":101},[91,94450,19395],{"class":108},[91,94452,3866],{"class":101},[91,94454,94455,94457,94459,94461,94463],{"class":93,"line":260},[91,94456,19402],{"class":101},[91,94458,19405],{"class":97},[91,94460,795],{"class":101},[91,94462,19373],{"class":169},[91,94464,1594],{"class":101},[91,94466,94467,94469,94471,94473,94475,94477,94479,94481,94483,94485],{"class":93,"line":274},[91,94468,12893],{"class":101},[91,94470,5258],{"class":566},[91,94472,19420],{"class":566},[91,94474,19387],{"class":101},[91,94476,9382],{"class":566},[91,94478,19392],{"class":101},[91,94480,19429],{"class":108},[91,94482,19432],{"class":101},[91,94484,1442],{"class":566},[91,94486,1445],{"class":101},[91,94488,94489,94491,94493,94495,94497],{"class":93,"line":284},[91,94490,19441],{"class":101},[91,94492,9263],{"class":97},[91,94494,795],{"class":101},[91,94496,19448],{"class":108},[91,94498,19451],{"class":101},[91,94500,94501,94503,94505],{"class":93,"line":299},[91,94502,19456],{"class":101},[91,94504,166],{"class":566},[91,94506,19461],{"class":101},[91,94508,94509],{"class":93,"line":319},[91,94510,137],{"class":101},[16,94512,19468,94513,19471,94515,19474,94517,19478,94519,19481],{},[31,94514,7479],{},[31,94516,149],{},[31,94518,19477],{},[31,94520,19178],{},[49,94522,19485],{"id":19484},[1112,94524],{"host":10802,"title":19488,"url":19489},[82,94526,94527],{"className":1154,"code":19492,"language":1156,"meta":87,"style":87},[31,94528,94529,94547,94553,94559,94581,94585,94589],{"__ignoreMap":87},[91,94530,94531,94533,94535,94537,94539,94541,94543,94545],{"class":93,"line":94},[91,94532,1968],{"class":566},[91,94534,19501],{"class":108},[91,94536,1366],{"class":566},[91,94538,5025],{"class":101},[91,94540,19508],{"class":97},[91,94542,795],{"class":101},[91,94544,19513],{"class":169},[91,94546,1594],{"class":101},[91,94548,94549,94551],{"class":93,"line":105},[91,94550,5226],{"class":566},[91,94552,19522],{"class":101},[91,94554,94555,94557],{"class":93,"line":121},[91,94556,7717],{"class":566},[91,94558,102],{"class":101},[91,94560,94561,94563,94565,94567,94569,94571,94573,94575,94577,94579],{"class":93,"line":134},[91,94562,19533],{"class":108},[91,94564,112],{"class":101},[91,94566,19538],{"class":97},[91,94568,19541],{"class":101},[91,94570,19544],{"class":97},[91,94572,795],{"class":101},[91,94574,19549],{"class":169},[91,94576,16],{"class":101},[91,94578,19554],{"class":169},[91,94580,8037],{"class":101},[91,94582,94583],{"class":93,"line":228},[91,94584,19561],{"class":566},[91,94586,94587],{"class":93,"line":250},[91,94588,19566],{"class":101},[91,94590,94591],{"class":93,"line":260},[91,94592,137],{"class":101},[16,94594,94595,19575,94597,19579],{},[31,94596,19178],{},[31,94598,19578],{},[829,94600,19582],{},{"title":87,"searchDepth":105,"depth":105,"links":94602},[94603,94604,94605],{"id":18952,"depth":105,"text":18953},{"id":19012,"depth":105,"text":19013},{"id":19484,"depth":105,"text":19485},{},{"title":18899,"description":19589},{"loc":19592},[86,5721],{"id":19599,"title":19600,"body":94611,"created":19751,"description":19752,"extension":843,"filename":19753,"meta":94715,"navigation":846,"path":19755,"seo":94716,"sitemap":94717,"stem":19758,"subject":19759,"tags":94718,"updated":19751,"volume":853,"__hash__":19763},{"type":8,"value":94612,"toc":94710},[94613,94615,94617,94619,94629,94634,94636,94638,94640,94642,94648,94652,94656,94658,94663,94665,94671,94673,94678,94684,94706,94708],[49,94614,19606],{"id":19605},[16,94616,19609],{},[16,94618,19612],{},[24,94620,94621,94623,94625,94627],{},[27,94622,19617],{},[27,94624,19620],{},[27,94626,19623],{},[27,94628,19626],{},[82,94630,94632],{"className":94631,"code":19630,"language":1099},[1097],[31,94633,19630],{"__ignoreMap":87},[16,94635,19635],{},[1112,94637],{"description":19638,"favicon":1320,"host":1317,"image":19639,"title":19640,"url":19641},[1112,94639],{"description":19644,"favicon":1320,"host":1317,"image":19645,"title":19646,"url":19647},[16,94641,19650],{},[1722,94643,94644],{},[16,94645,94646,19658],{},[91,94647,19657],{},[16,94649,94650],{},[19,94651],{"alt":21,"src":19663},[16,94653,19666,94654,19670],{},[31,94655,19669],{},[49,94657,19674],{"id":19673},[82,94659,94661],{"className":94660,"code":19678,"language":1099},[1097],[31,94662,19678],{"__ignoreMap":87},[16,94664,19683],{},[16,94666,19686,94667,19690,94669,19694],{},[31,94668,19689],{},[31,94670,19693],{},[49,94672,19698],{"id":19697},[82,94674,94676],{"className":94675,"code":19702,"language":1099},[1097],[31,94677,19702],{"__ignoreMap":87},[16,94679,19707,94680,19711,94682,19715],{},[31,94681,19710],{},[31,94683,19714],{},[82,94685,94686],{"className":8477,"code":19718,"language":8479,"meta":87,"style":87},[31,94687,94688,94694,94702],{"__ignoreMap":87},[91,94689,94690,94692],{"class":93,"line":94},[91,94691,15360],{"class":169},[91,94693,8789],{"class":101},[91,94695,94696,94698,94700],{"class":93,"line":105},[91,94697,19731],{"class":108},[91,94699,112],{"class":101},[91,94701,19736],{"class":169},[91,94703,94704],{"class":93,"line":121},[91,94705,137],{"class":101},[16,94707,19743],{},[829,94709,15403],{},{"title":87,"searchDepth":105,"depth":105,"links":94711},[94712,94713,94714],{"id":19605,"depth":105,"text":19606},{"id":19673,"depth":105,"text":19674},{"id":19697,"depth":105,"text":19698},{},{"title":19600,"description":19752},{"loc":19755},[5721,1261,19761,16324,19762],{"id":19765,"title":19766,"body":94720,"created":19923,"description":19924,"extension":843,"filename":19925,"meta":94837,"navigation":846,"path":19927,"seo":94838,"sitemap":94839,"stem":19930,"subject":19759,"tags":94840,"updated":19923,"volume":1863,"__hash__":19933},{"type":8,"value":94721,"toc":94835},[94722,94730,94734,94814,94816,94821,94833],[16,94723,19771,94724,19775,94726,19778,94728,19782],{},[31,94725,19774],{},[31,94727,19774],{},[31,94729,19781],{},[16,94731,19785,94732,2997],{},[31,94733,19781],{},[82,94735,94736],{"className":84,"code":19790,"language":86,"meta":87,"style":87},[31,94737,94738,94748,94754,94758,94784,94788,94792,94802,94806],{"__ignoreMap":87},[91,94739,94740,94742,94744,94746],{"class":93,"line":94},[91,94741,156],{"class":101},[91,94743,829],{"class":159},[91,94745,19801],{"class":101},[91,94747,173],{"class":566},[91,94749,94750,94752],{"class":93,"line":105},[91,94751,19808],{"class":97},[91,94753,102],{"class":101},[91,94755,94756],{"class":93,"line":121},[91,94757,19815],{"class":1343},[91,94759,94760,94762,94764,94766,94768,94770,94772,94774,94776,94778,94780,94782],{"class":93,"line":134},[91,94761,19820],{"class":101},[91,94763,19823],{"class":108},[91,94765,19826],{"class":108},[91,94767,19829],{"class":101},[91,94769,18929],{"class":108},[91,94771,19834],{"class":108},[91,94773,19837],{"class":108},[91,94775,19840],{"class":101},[91,94777,19843],{"class":108},[91,94779,19846],{"class":101},[91,94781,19849],{"class":108},[91,94783,118],{"class":101},[91,94785,94786],{"class":93,"line":228},[91,94787,1629],{"class":101},[91,94789,94790],{"class":93,"line":250},[91,94791,19860],{"class":1343},[91,94793,94794,94796,94798,94800],{"class":93,"line":260},[91,94795,19865],{"class":108},[91,94797,112],{"class":101},[91,94799,19870],{"class":108},[91,94801,19873],{"class":101},[91,94803,94804],{"class":93,"line":274},[91,94805,137],{"class":101},[91,94807,94808,94810,94812],{"class":93,"line":284},[91,94809,493],{"class":101},[91,94811,829],{"class":159},[91,94813,173],{"class":566},[16,94815,19888],{},[16,94817,19891,94818,19897],{},[4306,94819,19896],{"href":19894,"rel":94820},[4310],[16,94822,19900,94823,19903,94825,19906,94827,19910,94829,19914,94831,19917],{},[31,94824,19774],{},[31,94826,19781],{},[31,94828,19909],{},[31,94830,19913],{},[31,94832,19781],{},[829,94834,19920],{},{"title":87,"searchDepth":105,"depth":105,"links":94836},[],{},{"title":19766,"description":19924},{"loc":19927},[5721,86,1936,19932],{"id":19935,"title":19936,"body":94842,"created":20877,"description":20878,"extension":843,"filename":20879,"meta":95609,"navigation":846,"path":20881,"seo":95610,"sitemap":95611,"stem":20884,"subject":17549,"tags":95612,"updated":20877,"volume":853,"__hash__":20887},{"type":8,"value":94843,"toc":95599},[94844,94852,94854,94928,94936,95026,95032,95150,95154,95165,95167,95231,95237,95246,95248,95326,95330,95334,95336,95338,95342,95347,95349,95351,95353,95355,95359,95425,95429,95431,95435,95447,95527,95533,95539,95541,95543,95597],[16,94845,19941,94846,5321,94848,19948,94850,19952],{},[31,94847,19944],{},[31,94849,19947],{},[31,94851,19951],{},[49,94853,19956],{"id":19955},[82,94855,94856],{"className":1154,"code":19959,"language":1156,"meta":87,"style":87},[31,94857,94858,94866,94876,94886,94890,94894,94904,94914,94924],{"__ignoreMap":87},[91,94859,94860,94862,94864],{"class":93,"line":94},[91,94861,19947],{"class":566},[91,94863,19968],{"class":97},[91,94865,102],{"class":101},[91,94867,94868,94870,94872,94874],{"class":93,"line":105},[91,94869,19975],{"class":1172},[91,94871,1208],{"class":566},[91,94873,1357],{"class":108},[91,94875,118],{"class":101},[91,94877,94878,94880,94882,94884],{"class":93,"line":121},[91,94879,19986],{"class":1172},[91,94881,1208],{"class":566},[91,94883,1357],{"class":108},[91,94885,118],{"class":101},[91,94887,94888],{"class":93,"line":134},[91,94889,137],{"class":101},[91,94891,94892],{"class":93,"line":228},[91,94893,1450],{"emptyLinePlaceholder":846},[91,94895,94896,94898,94900,94902],{"class":93,"line":250},[91,94897,19944],{"class":566},[91,94899,20007],{"class":97},[91,94901,1366],{"class":566},[91,94903,102],{"class":101},[91,94905,94906,94908,94910,94912],{"class":93,"line":260},[91,94907,19975],{"class":1172},[91,94909,1208],{"class":566},[91,94911,1357],{"class":108},[91,94913,118],{"class":101},[91,94915,94916,94918,94920,94922],{"class":93,"line":274},[91,94917,19986],{"class":1172},[91,94919,1208],{"class":566},[91,94921,1357],{"class":108},[91,94923,118],{"class":101},[91,94925,94926],{"class":93,"line":284},[91,94927,20036],{"class":101},[16,94929,94930,20041,94932,20044,94934,20048],{},[31,94931,19947],{},[31,94933,19944],{},[31,94935,20047],{},[82,94937,94938],{"className":1154,"code":20051,"language":1156,"meta":87,"style":87},[31,94939,94940,94948,94958,94962,94966,94974,94984,94988,94992,95006,95014,95022],{"__ignoreMap":87},[91,94941,94942,94944,94946],{"class":93,"line":94},[91,94943,19947],{"class":566},[91,94945,20060],{"class":97},[91,94947,102],{"class":101},[91,94949,94950,94952,94954,94956],{"class":93,"line":105},[91,94951,20067],{"class":1172},[91,94953,1208],{"class":566},[91,94955,1357],{"class":108},[91,94957,118],{"class":101},[91,94959,94960],{"class":93,"line":121},[91,94961,137],{"class":101},[91,94963,94964],{"class":93,"line":134},[91,94965,1450],{"emptyLinePlaceholder":846},[91,94967,94968,94970,94972],{"class":93,"line":228},[91,94969,19947],{"class":566},[91,94971,20060],{"class":97},[91,94973,102],{"class":101},[91,94975,94976,94978,94980,94982],{"class":93,"line":250},[91,94977,20094],{"class":1172},[91,94979,1208],{"class":566},[91,94981,1357],{"class":108},[91,94983,118],{"class":101},[91,94985,94986],{"class":93,"line":260},[91,94987,137],{"class":101},[91,94989,94990],{"class":93,"line":274},[91,94991,1450],{"emptyLinePlaceholder":846},[91,94993,94994,94996,94998,95000,95002,95004],{"class":93,"line":284},[91,94995,1968],{"class":566},[91,94997,20115],{"class":108},[91,94999,1208],{"class":566},[91,95001,20060],{"class":97},[91,95003,1366],{"class":566},[91,95005,102],{"class":101},[91,95007,95008,95010,95012],{"class":93,"line":299},[91,95009,20128],{"class":101},[91,95011,20131],{"class":169},[91,95013,7560],{"class":101},[91,95015,95016,95018,95020],{"class":93,"line":319},[91,95017,20138],{"class":101},[91,95019,20141],{"class":169},[91,95021,7560],{"class":101},[91,95023,95024],{"class":93,"line":334},[91,95025,20036],{"class":101},[16,95027,20150,95028,20153,95030,20157],{},[31,95029,19947],{},[31,95031,20156],{},[82,95033,95034],{"className":1154,"code":20160,"language":1156,"meta":87,"style":87},[31,95035,95036,95060,95064,95078,95100,95122,95126],{"__ignoreMap":87},[91,95037,95038,95040,95042,95044,95046,95048,95050,95052,95054,95056,95058],{"class":93,"line":94},[91,95039,19944],{"class":566},[91,95041,20169],{"class":97},[91,95043,1366],{"class":566},[91,95045,20174],{"class":169},[91,95047,1360],{"class":566},[91,95049,20179],{"class":169},[91,95051,1360],{"class":566},[91,95053,20184],{"class":169},[91,95055,1360],{"class":566},[91,95057,20189],{"class":169},[91,95059,118],{"class":101},[91,95061,95062],{"class":93,"line":105},[91,95063,1450],{"emptyLinePlaceholder":846},[91,95065,95066,95068,95070,95072,95074,95076],{"class":93,"line":121},[91,95067,19944],{"class":566},[91,95069,20202],{"class":97},[91,95071,156],{"class":101},[91,95073,20207],{"class":97},[91,95075,20210],{"class":101},[91,95077,20213],{"class":566},[91,95079,95080,95082,95084,95086,95088,95090,95092,95094,95096,95098],{"class":93,"line":134},[91,95081,20218],{"class":566},[91,95083,13969],{"class":101},[91,95085,20223],{"class":1172},[91,95087,1208],{"class":566},[91,95089,20228],{"class":108},[91,95091,20231],{"class":101},[91,95093,7901],{"class":1172},[91,95095,1208],{"class":566},[91,95097,20238],{"class":97},[91,95099,1445],{"class":101},[91,95101,95102,95104,95106,95108,95110,95112,95114,95116,95118,95120],{"class":93,"line":228},[91,95103,20218],{"class":566},[91,95105,13969],{"class":101},[91,95107,20223],{"class":1172},[91,95109,1208],{"class":566},[91,95111,20253],{"class":108},[91,95113,20231],{"class":101},[91,95115,9808],{"class":1172},[91,95117,1208],{"class":566},[91,95119,1357],{"class":108},[91,95121,20264],{"class":101},[91,95123,95124],{"class":93,"line":250},[91,95125,1450],{"emptyLinePlaceholder":846},[91,95127,95128,95130,95132,95134,95136,95138,95140,95142,95144,95146,95148],{"class":93,"line":260},[91,95129,19944],{"class":566},[91,95131,20275],{"class":97},[91,95133,1366],{"class":566},[91,95135,2662],{"class":101},[91,95137,9340],{"class":1172},[91,95139,1208],{"class":566},[91,95141,20286],{"class":97},[91,95143,1176],{"class":101},[91,95145,1179],{"class":566},[91,95147,20293],{"class":108},[91,95149,118],{"class":101},[16,95151,20298,95152,20301],{},[31,95153,19944],{},[16,95155,95156,20309,95159,20312,95161,20315,95163,20318],{},[4306,95157,20308],{"href":20306,"rel":95158},[4310],[31,95160,19947],{},[31,95162,19944],{},[31,95164,19944],{},[49,95166,20322],{"id":20321},[82,95168,95169],{"className":1154,"code":20325,"language":1156,"meta":87,"style":87},[31,95170,95171,95189,95207,95211,95227],{"__ignoreMap":87},[91,95172,95173,95175,95177,95179,95181,95183,95185,95187],{"class":93,"line":94},[91,95174,19944],{"class":566},[91,95176,20334],{"class":97},[91,95178,1366],{"class":566},[91,95180,13969],{"class":101},[91,95182,9066],{"class":1172},[91,95184,1208],{"class":566},[91,95186,1357],{"class":108},[91,95188,20264],{"class":101},[91,95190,95191,95193,95195,95197,95199,95201,95203,95205],{"class":93,"line":105},[91,95192,19944],{"class":566},[91,95194,20353],{"class":97},[91,95196,1366],{"class":566},[91,95198,13969],{"class":101},[91,95200,9066],{"class":1172},[91,95202,1208],{"class":566},[91,95204,20364],{"class":108},[91,95206,20264],{"class":101},[91,95208,95209],{"class":93,"line":121},[91,95210,1450],{"emptyLinePlaceholder":846},[91,95212,95213,95215,95217,95219,95221,95223,95225],{"class":93,"line":134},[91,95214,19944],{"class":566},[91,95216,20377],{"class":97},[91,95218,1366],{"class":566},[91,95220,20334],{"class":97},[91,95222,20384],{"class":566},[91,95224,20353],{"class":97},[91,95226,118],{"class":101},[91,95228,95229],{"class":93,"line":228},[91,95230,20393],{"class":1343},[16,95232,95233,20399,95235,20403],{},[31,95234,20398],{},[31,95236,20402],{},[16,95238,20406,95239,20409,95241,20413,95243,20419],{},[31,95240,19944],{},[31,95242,20412],{},[4306,95244,20418],{"href":20416,"rel":95245},[4310],[49,95247,20423],{"id":20422},[82,95249,95250],{"className":1154,"code":20426,"language":1156,"meta":87,"style":87},[31,95251,95252,95260,95270,95280,95290,95294,95298,95314,95322],{"__ignoreMap":87},[91,95253,95254,95256,95258],{"class":93,"line":94},[91,95255,19951],{"class":566},[91,95257,20435],{"class":97},[91,95259,102],{"class":101},[91,95261,95262,95264,95266,95268],{"class":93,"line":105},[91,95263,20442],{"class":108},[91,95265,1366],{"class":566},[91,95267,20447],{"class":169},[91,95269,7560],{"class":101},[91,95271,95272,95274,95276,95278],{"class":93,"line":121},[91,95273,20454],{"class":108},[91,95275,1366],{"class":566},[91,95277,20459],{"class":169},[91,95279,7560],{"class":101},[91,95281,95282,95284,95286,95288],{"class":93,"line":134},[91,95283,20466],{"class":108},[91,95285,1366],{"class":566},[91,95287,20471],{"class":169},[91,95289,7560],{"class":101},[91,95291,95292],{"class":93,"line":228},[91,95293,137],{"class":101},[91,95295,95296],{"class":93,"line":250},[91,95297,1450],{"emptyLinePlaceholder":846},[91,95299,95300,95302,95304,95306,95308,95310,95312],{"class":93,"line":260},[91,95301,7471],{"class":566},[91,95303,20488],{"class":97},[91,95305,795],{"class":101},[91,95307,20493],{"class":1172},[91,95309,1208],{"class":566},[91,95311,20435],{"class":97},[91,95313,3866],{"class":101},[91,95315,95316,95318,95320],{"class":93,"line":274},[91,95317,2271],{"class":101},[91,95319,1225],{"class":97},[91,95321,20508],{"class":101},[91,95323,95324],{"class":93,"line":284},[91,95325,137],{"class":101},[16,95327,95328,20517],{},[31,95329,19951],{},[16,95331,95332],{},[19,95333],{"alt":20522,"src":20523},[16,95335,20526],{},[16,95337,20529],{},[16,95339,20532,95340,20535],{},[31,95341,2499],{},[16,95343,20538,95344,20544],{},[4306,95345,20543],{"href":20541,"rel":95346},[4310],[16,95348,20547],{},[49,95350,20551],{"id":20550},[16,95352,20554],{},[757,95354,20558],{"id":20557},[16,95356,20561,95357,20564],{},[31,95358,1968],{},[82,95360,95361],{"className":1154,"code":20567,"language":1156,"meta":87,"style":87},[31,95362,95363,95373,95379,95385,95389,95393,95403,95407,95411],{"__ignoreMap":87},[91,95364,95365,95367,95369,95371],{"class":93,"line":94},[91,95366,1968],{"class":566},[91,95368,20576],{"class":566},[91,95370,20579],{"class":97},[91,95372,102],{"class":101},[91,95374,95375,95377],{"class":93,"line":105},[91,95376,20586],{"class":108},[91,95378,7560],{"class":101},[91,95380,95381,95383],{"class":93,"line":121},[91,95382,20593],{"class":108},[91,95384,7560],{"class":101},[91,95386,95387],{"class":93,"line":134},[91,95388,137],{"class":101},[91,95390,95391],{"class":93,"line":228},[91,95392,1450],{"emptyLinePlaceholder":846},[91,95394,95395,95397,95399,95401],{"class":93,"line":250},[91,95396,1349],{"class":566},[91,95398,20610],{"class":101},[91,95400,166],{"class":566},[91,95402,20615],{"class":101},[91,95404,95405],{"class":93,"line":260},[91,95406,1450],{"emptyLinePlaceholder":846},[91,95408,95409],{"class":93,"line":274},[91,95410,20624],{"class":1343},[91,95412,95413,95415,95417,95419,95421,95423],{"class":93,"line":284},[91,95414,1349],{"class":566},[91,95416,20610],{"class":101},[91,95418,166],{"class":566},[91,95420,11817],{"class":108},[91,95422,20637],{"class":1343},[91,95424,118],{"class":101},[16,95426,20642,95427,20646],{},[31,95428,20645],{},[757,95430,20650],{"id":20649},[16,95432,20653,95433,20657],{},[31,95434,20656],{},[16,95436,20660,95437,20663,95439,64,95441,20670,95443,20673,95445,20677],{},[31,95438,1968],{},[31,95440,20666],{},[31,95442,20669],{},[31,95444,20656],{},[31,95446,20676],{},[82,95448,95449],{"className":1154,"code":20680,"language":1156,"meta":87,"style":87},[31,95450,95451,95461,95469,95477,95485,95493,95503,95507,95517],{"__ignoreMap":87},[91,95452,95453,95455,95457,95459],{"class":93,"line":94},[91,95454,1968],{"class":566},[91,95456,20689],{"class":108},[91,95458,1366],{"class":566},[91,95460,102],{"class":101},[91,95462,95463,95465,95467],{"class":93,"line":105},[91,95464,20698],{"class":101},[91,95466,20701],{"class":108},[91,95468,7560],{"class":101},[91,95470,95471,95473,95475],{"class":93,"line":121},[91,95472,20708],{"class":101},[91,95474,20711],{"class":108},[91,95476,7560],{"class":101},[91,95478,95479,95481,95483],{"class":93,"line":134},[91,95480,20718],{"class":101},[91,95482,20721],{"class":108},[91,95484,7560],{"class":101},[91,95486,95487,95489,95491],{"class":93,"line":228},[91,95488,20728],{"class":101},[91,95490,8075],{"class":108},[91,95492,7560],{"class":101},[91,95494,95495,95497,95499,95501],{"class":93,"line":250},[91,95496,1434],{"class":101},[91,95498,20739],{"class":566},[91,95500,16463],{"class":566},[91,95502,118],{"class":101},[91,95504,95505],{"class":93,"line":260},[91,95506,1450],{"emptyLinePlaceholder":846},[91,95508,95509,95511,95513,95515],{"class":93,"line":274},[91,95510,2574],{"class":566},[91,95512,18504],{"class":566},[91,95514,20756],{"class":97},[91,95516,20759],{"class":566},[91,95518,95519,95521,95523,95525],{"class":93,"line":284},[91,95520,20764],{"class":566},[91,95522,20767],{"class":101},[91,95524,20770],{"class":566},[91,95526,20773],{"class":101},[16,95528,20776,95529,20780,95531,20784],{},[31,95530,20779],{},[31,95532,20783],{},[16,95534,20787,95535,5733,95537,20793],{},[31,95536,20645],{},[31,95538,20792],{},[49,95540,20797],{"id":20796},[16,95542,20800],{},[812,95544,95545,95553],{},[3001,95546,95547],{},[3004,95548,95549,95551],{},[3007,95550,9219],{},[3007,95552,20811],{},[3017,95554,95555,95563,95571,95579,95589],{},[3004,95556,95557,95559],{},[3022,95558,20818],{},[3022,95560,95561],{},[31,95562,19947],{},[3004,95564,95565,95567],{},[3022,95566,20827],{},[3022,95568,95569],{},[31,95570,19944],{},[3004,95572,95573,95575],{},[3022,95574,20836],{},[3022,95576,95577],{},[31,95578,19951],{},[3004,95580,95581,95583],{},[3022,95582,20845],{},[3022,95584,95585,20850,95587],{},[31,95586,20656],{},[31,95588,20770],{},[3004,95590,95591,95593],{},[3022,95592,20857],{},[3022,95594,20860,95595],{},[31,95596,20863],{},[829,95598,20866],{},{"title":87,"searchDepth":105,"depth":105,"links":95600},[95601,95602,95603,95604,95608],{"id":19955,"depth":105,"text":19956},{"id":20321,"depth":105,"text":20322},{"id":20422,"depth":105,"text":20423},{"id":20550,"depth":105,"text":20551,"children":95605},[95606,95607],{"id":20557,"depth":121,"text":20558},{"id":20649,"depth":121,"text":20650},{"id":20796,"depth":105,"text":20797},{},{"title":19936,"description":20878},{"loc":20881},[2864,19944,19947,19951,20886],{"id":20889,"title":20890,"body":95614,"created":18076,"description":21610,"extension":843,"filename":21611,"meta":96207,"navigation":846,"path":21613,"seo":96208,"sitemap":96209,"stem":21616,"subject":15282,"tags":96210,"updated":6033,"volume":853,"__hash__":21621},{"type":8,"value":95615,"toc":96201},[95616,95618,95620,95624,95636,95638,95644,95728,95732,95806,95810,95812,95823,95825,95981,95989,95991,96151,96155,96157,96159,96195,96197,96199],[16,95617,20895],{},[49,95619,20899],{"id":20898},[16,95621,20902,95622,20906],{},[31,95623,20905],{},[16,95625,20909,95626,20912,95628,20915,95630,5321,95633,20926],{},[31,95627,17698],{},[31,95629,17698],{},[4306,95631,20920],{"href":20918,"rel":95632},[4310],[4306,95634,20925],{"href":20923,"rel":95635},[4310],[49,95637,20930],{"id":20929},[16,95639,20933,95640,20937,95642,20941],{},[31,95641,20936],{},[31,95643,20940],{},[82,95645,95646],{"className":1154,"code":20944,"language":1156,"meta":87,"style":87},[31,95647,95648,95652,95664,95676,95684,95692,95696,95708,95712],{"__ignoreMap":87},[91,95649,95650],{"class":93,"line":94},[91,95651,20951],{"class":1343},[91,95653,95654,95656,95658,95660,95662],{"class":93,"line":105},[91,95655,2499],{"class":566},[91,95657,20958],{"class":101},[91,95659,2505],{"class":566},[91,95661,20963],{"class":169},[91,95663,118],{"class":101},[91,95665,95666,95668,95670,95672,95674],{"class":93,"line":121},[91,95667,2499],{"class":566},[91,95669,20972],{"class":101},[91,95671,2505],{"class":566},[91,95673,20977],{"class":169},[91,95675,118],{"class":101},[91,95677,95678,95680,95682],{"class":93,"line":134},[91,95679,2499],{"class":566},[91,95681,20986],{"class":169},[91,95683,118],{"class":101},[91,95685,95686,95688,95690],{"class":93,"line":228},[91,95687,2499],{"class":566},[91,95689,20995],{"class":169},[91,95691,118],{"class":101},[91,95693,95694],{"class":93,"line":250},[91,95695,1450],{"emptyLinePlaceholder":846},[91,95697,95698,95700,95702,95704,95706],{"class":93,"line":260},[91,95699,1968],{"class":566},[91,95701,14977],{"class":108},[91,95703,1366],{"class":566},[91,95705,21012],{"class":97},[91,95707,2030],{"class":101},[91,95709,95710],{"class":93,"line":274},[91,95711,1450],{"emptyLinePlaceholder":846},[91,95713,95714,95716,95718,95720,95722,95724,95726],{"class":93,"line":284},[91,95715,21023],{"class":101},[91,95717,14877],{"class":97},[91,95719,21028],{"class":101},[91,95721,14936],{"class":97},[91,95723,795],{"class":101},[91,95725,21035],{"class":169},[91,95727,1594],{"class":101},[16,95729,21040,95730,21044],{},[31,95731,21043],{},[82,95733,95734],{"className":1154,"code":21047,"language":1156,"meta":87,"style":87},[31,95735,95736,95740,95752,95764,95768,95778,95786,95794,95798,95802],{"__ignoreMap":87},[91,95737,95738],{"class":93,"line":94},[91,95739,21054],{"class":1343},[91,95741,95742,95744,95746,95748,95750],{"class":93,"line":105},[91,95743,2499],{"class":566},[91,95745,21061],{"class":101},[91,95747,2505],{"class":566},[91,95749,21066],{"class":169},[91,95751,118],{"class":101},[91,95753,95754,95756,95758,95760,95762],{"class":93,"line":121},[91,95755,2499],{"class":566},[91,95757,21075],{"class":101},[91,95759,2505],{"class":566},[91,95761,21080],{"class":169},[91,95763,118],{"class":101},[91,95765,95766],{"class":93,"line":134},[91,95767,1450],{"emptyLinePlaceholder":846},[91,95769,95770,95772,95774,95776],{"class":93,"line":228},[91,95771,2574],{"class":566},[91,95773,2001],{"class":566},[91,95775,21012],{"class":97},[91,95777,2007],{"class":101},[91,95779,95780,95782,95784],{"class":93,"line":250},[91,95781,2695],{"class":566},[91,95783,14982],{"class":97},[91,95785,7549],{"class":101},[91,95787,95788,95790,95792],{"class":93,"line":260},[91,95789,21109],{"class":101},[91,95791,21112],{"class":97},[91,95793,8275],{"class":101},[91,95795,95796],{"class":93,"line":274},[91,95797,21119],{"class":101},[91,95799,95800],{"class":93,"line":284},[91,95801,7575],{"class":101},[91,95803,95804],{"class":93,"line":299},[91,95805,137],{"class":101},[16,95807,21130,95808,21134],{},[31,95809,21133],{},[49,95811,21138],{"id":21137},[16,95813,21141,95814,21144,95816,21148,95818,21152,95820,21158],{},[31,95815,17698],{},[31,95817,21147],{},[31,95819,21151],{},[4306,95821,21157],{"href":21155,"rel":95822},[4310],[16,95824,21161],{},[82,95826,95827],{"className":1154,"code":21164,"language":1156,"meta":87,"style":87},[31,95828,95829,95833,95847,95851,95875,95881,95889,95893,95901,95911,95921,95927,95931,95935,95945,95951,95961,95965,95969,95973,95977],{"__ignoreMap":87},[91,95830,95831],{"class":93,"line":94},[91,95832,21171],{"class":1343},[91,95834,95835,95837,95839,95841,95843,95845],{"class":93,"line":105},[91,95836,2499],{"class":566},[91,95838,18504],{"class":566},[91,95840,21180],{"class":101},[91,95842,2505],{"class":566},[91,95844,21185],{"class":169},[91,95846,118],{"class":101},[91,95848,95849],{"class":93,"line":121},[91,95850,1450],{"emptyLinePlaceholder":846},[91,95852,95853,95855,95857,95859,95861,95863,95865,95867,95869,95871,95873],{"class":93,"line":134},[91,95854,2574],{"class":566},[91,95856,2001],{"class":566},[91,95858,21200],{"class":97},[91,95860,795],{"class":101},[91,95862,21205],{"class":1172},[91,95864,16037],{"class":566},[91,95866,1357],{"class":108},[91,95868,4618],{"class":101},[91,95870,1208],{"class":566},[91,95872,21216],{"class":97},[91,95874,102],{"class":101},[91,95876,95877,95879],{"class":93,"line":228},[91,95878,2695],{"class":566},[91,95880,102],{"class":101},[91,95882,95883,95885,95887],{"class":93,"line":250},[91,95884,8003],{"class":101},[91,95886,21231],{"class":169},[91,95888,7560],{"class":101},[91,95890,95891],{"class":93,"line":260},[91,95892,21238],{"class":101},[91,95894,95895,95897,95899],{"class":93,"line":274},[91,95896,21243],{"class":101},[91,95898,21246],{"class":169},[91,95900,7560],{"class":101},[91,95902,95903,95905,95907,95909],{"class":93,"line":284},[91,95904,21253],{"class":97},[91,95906,795],{"class":101},[91,95908,149],{"class":1172},[91,95910,3866],{"class":101},[91,95912,95913,95915,95917,95919],{"class":93,"line":299},[91,95914,10068],{"class":566},[91,95916,2662],{"class":101},[91,95918,2665],{"class":566},[91,95920,21270],{"class":101},[91,95922,95923,95925],{"class":93,"line":319},[91,95924,21275],{"class":566},[91,95926,14355],{"class":101},[91,95928,95929],{"class":93,"line":334},[91,95930,3307],{"class":101},[91,95932,95933],{"class":93,"line":355},[91,95934,1450],{"emptyLinePlaceholder":846},[91,95936,95937,95939,95941,95943],{"class":93,"line":364},[91,95938,11866],{"class":566},[91,95940,14292],{"class":101},[91,95942,14010],{"class":97},[91,95944,9266],{"class":101},[91,95946,95947,95949],{"class":93,"line":378},[91,95948,21300],{"class":169},[91,95950,7560],{"class":101},[91,95952,95953,95955,95957,95959],{"class":93,"line":387},[91,95954,21307],{"class":169},[91,95956,21205],{"class":101},[91,95958,21312],{"class":169},[91,95960,7560],{"class":101},[91,95962,95963],{"class":93,"line":402},[91,95964,21319],{"class":101},[91,95966,95967],{"class":93,"line":422},[91,95968,21324],{"class":101},[91,95970,95971],{"class":93,"line":438},[91,95972,3477],{"class":101},[91,95974,95975],{"class":93,"line":458},[91,95976,8083],{"class":101},[91,95978,95979],{"class":93,"line":467},[91,95980,137],{"class":101},[16,95982,21339,95983,15747,95985,3752,95987,21348],{},[31,95984,17698],{},[31,95986,21344],{},[31,95988,21347],{},[16,95990,21351],{},[82,95992,95993],{"className":1154,"code":21354,"language":1156,"meta":87,"style":87},[31,95994,95995,95999,96011,96023,96027,96045,96063,96081,96089,96093,96099,96103,96109,96113,96117,96121,96139,96143,96147],{"__ignoreMap":87},[91,95996,95997],{"class":93,"line":94},[91,95998,21361],{"class":1343},[91,96000,96001,96003,96005,96007,96009],{"class":93,"line":105},[91,96002,2499],{"class":566},[91,96004,21368],{"class":101},[91,96006,2505],{"class":566},[91,96008,21185],{"class":169},[91,96010,118],{"class":101},[91,96012,96013,96015,96017,96019,96021],{"class":93,"line":121},[91,96014,2499],{"class":566},[91,96016,21381],{"class":101},[91,96018,2505],{"class":566},[91,96020,21386],{"class":169},[91,96022,118],{"class":101},[91,96024,96025],{"class":93,"line":134},[91,96026,1450],{"emptyLinePlaceholder":846},[91,96028,96029,96031,96033,96035,96037,96039,96041,96043],{"class":93,"line":228},[91,96030,2574],{"class":566},[91,96032,12107],{"class":566},[91,96034,21401],{"class":97},[91,96036,21404],{"class":101},[91,96038,21407],{"class":1172},[91,96040,21410],{"class":101},[91,96042,1179],{"class":566},[91,96044,102],{"class":101},[91,96046,96047,96049,96051,96053,96055,96057,96059,96061],{"class":93,"line":250},[91,96048,2641],{"class":566},[91,96050,21421],{"class":108},[91,96052,1366],{"class":566},[91,96054,21426],{"class":101},[91,96056,21429],{"class":97},[91,96058,795],{"class":101},[91,96060,21434],{"class":169},[91,96062,3487],{"class":101},[91,96064,96065,96067,96069,96071,96073,96075,96077,96079],{"class":93,"line":260},[91,96066,21441],{"class":566},[91,96068,21426],{"class":101},[91,96070,14010],{"class":97},[91,96072,795],{"class":101},[91,96074,21434],{"class":169},[91,96076,64],{"class":101},[91,96078,13747],{"class":169},[91,96080,3487],{"class":101},[91,96082,96083,96085,96087],{"class":93,"line":274},[91,96084,21460],{"class":566},[91,96086,11771],{"class":108},[91,96088,118],{"class":101},[91,96090,96091],{"class":93,"line":284},[91,96092,1450],{"emptyLinePlaceholder":846},[91,96094,96095,96097],{"class":93,"line":299},[91,96096,2695],{"class":566},[91,96098,102],{"class":101},[91,96100,96101],{"class":93,"line":319},[91,96102,21479],{"class":101},[91,96104,96105,96107],{"class":93,"line":334},[91,96106,21484],{"class":97},[91,96108,21487],{"class":101},[91,96110,96111],{"class":93,"line":355},[91,96112,21492],{"class":1343},[91,96114,96115],{"class":93,"line":364},[91,96116,21497],{"class":101},[91,96118,96119],{"class":93,"line":378},[91,96120,21502],{"class":101},[91,96122,96123,96125,96127,96129,96131,96133,96135,96137],{"class":93,"line":387},[91,96124,21507],{"class":101},[91,96126,8372],{"class":566},[91,96128,21512],{"class":169},[91,96130,21205],{"class":101},[91,96132,1241],{"class":169},[91,96134,2131],{"class":566},[91,96136,21521],{"class":169},[91,96138,7560],{"class":101},[91,96140,96141],{"class":93,"line":402},[91,96142,3477],{"class":101},[91,96144,96145],{"class":93,"line":422},[91,96146,8083],{"class":101},[91,96148,96149],{"class":93,"line":438},[91,96150,1303],{"class":101},[16,96152,21538,96153,21541],{},[31,96154,17698],{},[49,96156,21545],{"id":21544},[16,96158,21548],{},[812,96160,96161,96169],{},[3001,96162,96163],{},[3004,96164,96165,96167],{},[3007,96166,21557],{},[3007,96168,21560],{"align":19870},[3017,96170,96171,96177,96183,96189],{},[3004,96172,96173,96175],{},[3022,96174,21567],{},[3022,96176,21570],{"align":19870},[3004,96178,96179,96181],{},[3022,96180,21575],{},[3022,96182,21578],{"align":19870},[3004,96184,96185,96187],{},[3022,96186,21583],{},[3022,96188,21586],{"align":19870},[3004,96190,96191,96193],{},[3022,96192,21591],{},[3022,96194,21594],{"align":19870},[16,96196,21597],{},[16,96198,21600],{},[829,96200,21603],{},{"title":87,"searchDepth":105,"depth":105,"links":96202},[96203,96204,96205,96206],{"id":20898,"depth":105,"text":20899},{"id":20929,"depth":105,"text":20930},{"id":21137,"depth":105,"text":21138},{"id":21544,"depth":105,"text":21545},{},{"title":20890,"description":21610},{"loc":21613},[16324,21618,21619,21620,15415],{"id":21623,"title":21624,"body":96212,"created":24437,"description":24438,"extension":843,"filename":24439,"meta":98609,"navigation":846,"path":24441,"seo":98610,"sitemap":98611,"stem":24444,"subject":2862,"tags":98612,"updated":24437,"volume":4441,"__hash__":24446},{"type":8,"value":96213,"toc":98586},[96214,96216,96221,96223,96228,96230,96232,96241,96243,96248,96256,96282,96284,96354,96360,96362,96371,96377,96382,96456,96460,96468,96470,96479,96481,96486,96488,96622,96626,96628,96636,96646,96648,96650,96659,96661,96665,96775,96779,96867,96873,96875,96884,96886,96891,96939,96943,96993,96997,97131,97133,97135,97144,97146,97151,97237,97245,97247,97252,97266,97302,97306,97342,97344,97402,97406,97408,97410,97419,97423,97425,97434,97438,97440,97442,97608,97612,97626,97672,97676,97678,97687,97693,97755,97759,97787,97793,97795,97800,97802,97818,97820,97825,98021,98025,98303,98305,98427,98429,98431,98433,98438,98443,98507,98515,98517,98523,98528,98532,98580,98584],[16,96215,21629],{},[16,96217,21632,96218,21637],{},[4306,96219,10845],{"href":21635,"rel":96220},[4310],[49,96222,21641],{"id":21640},[82,96224,96226],{"className":96225,"code":21645,"language":1099},[1097],[31,96227,21645],{"__ignoreMap":87},[16,96229,21650],{},[49,96231,21653],{"id":21653},[1722,96233,96234],{},[16,96235,21658,96236,96238],{},[21660,96237],{},[4306,96239,21664],{"href":21664,"rel":96240},[4310],[16,96242,21668],{},[82,96244,96246],{"className":96245,"code":21672,"language":1099},[1097],[31,96247,21672],{"__ignoreMap":87},[16,96249,21677,96250,21681,96252,21685,96254,21689],{},[31,96251,21680],{},[31,96253,21684],{},[31,96255,21688],{},[82,96257,96258],{"className":8477,"code":21692,"language":8479,"meta":87,"style":87},[31,96259,96260,96264,96270,96278],{"__ignoreMap":87},[91,96261,96262],{"class":93,"line":94},[91,96263,21699],{"class":1343},[91,96265,96266,96268],{"class":93,"line":105},[91,96267,21704],{"class":169},[91,96269,8789],{"class":101},[91,96271,96272,96274,96276],{"class":93,"line":121},[91,96273,21711],{"class":108},[91,96275,112],{"class":101},[91,96277,21716],{"class":169},[91,96279,96280],{"class":93,"line":134},[91,96281,137],{"class":101},[16,96283,21723],{},[82,96285,96286],{"className":1154,"code":21726,"filename":20905,"language":1156,"meta":87,"style":87},[31,96287,96288,96302,96306,96310,96314,96342,96346,96350],{"__ignoreMap":87},[91,96289,96290,96292,96294,96296,96298,96300],{"class":93,"line":94},[91,96291,2574],{"class":566},[91,96293,16463],{"class":566},[91,96295,14867],{"class":108},[91,96297,1366],{"class":566},[91,96299,21741],{"class":97},[91,96301,9266],{"class":101},[91,96303,96304],{"class":93,"line":105},[91,96305,21748],{"class":1343},[91,96307,96308],{"class":93,"line":121},[91,96309,21753],{"class":101},[91,96311,96312],{"class":93,"line":134},[91,96313,21758],{"class":101},[91,96315,96316,96318,96320,96322,96324,96326,96328,96330,96332,96334,96336,96338,96340],{"class":93,"line":228},[91,96317,21763],{"class":101},[91,96319,21766],{"class":1172},[91,96321,64],{"class":101},[91,96323,21771],{"class":1172},[91,96325,64],{"class":101},[91,96327,21776],{"class":1172},[91,96329,64],{"class":101},[91,96331,21781],{"class":1172},[91,96333,64],{"class":101},[91,96335,21786],{"class":1172},[91,96337,21410],{"class":101},[91,96339,1179],{"class":566},[91,96341,102],{"class":101},[91,96343,96344],{"class":93,"line":250},[91,96345,21797],{"class":1343},[91,96347,96348],{"class":93,"line":260},[91,96349,3477],{"class":101},[91,96351,96352],{"class":93,"line":274},[91,96353,3487],{"class":101},[16,96355,96356,21811,96358,21815],{},[31,96357,21810],{},[31,96359,21814],{},[49,96361,21818],{"id":21818},[1722,96363,96364],{},[16,96365,21818,96366,96368],{},[21660,96367],{},[4306,96369,21827],{"href":21827,"rel":96370},[4310],[16,96372,21831,96373,21834,96375,21838],{},[31,96374,21653],{},[31,96376,21837],{},[82,96378,96380],{"className":96379,"code":21842,"language":1099},[1097],[31,96381,21842],{"__ignoreMap":87},[82,96383,96384],{"className":1154,"code":21847,"language":1156,"meta":87,"style":87},[31,96385,96386,96396,96406,96414,96418,96422,96428,96444,96448,96452],{"__ignoreMap":87},[91,96387,96388,96390,96392,96394],{"class":93,"line":94},[91,96389,2499],{"class":566},[91,96391,21856],{"class":101},[91,96393,2505],{"class":566},[91,96395,21861],{"class":169},[91,96397,96398,96400,96402,96404],{"class":93,"line":105},[91,96399,2499],{"class":566},[91,96401,21868],{"class":101},[91,96403,2505],{"class":566},[91,96405,21873],{"class":169},[91,96407,96408,96410,96412],{"class":93,"line":121},[91,96409,2574],{"class":566},[91,96411,12107],{"class":566},[91,96413,102],{"class":101},[91,96415,96416],{"class":93,"line":134},[91,96417,21886],{"class":101},[91,96419,96420],{"class":93,"line":228},[91,96421,21891],{"class":1343},[91,96423,96424,96426],{"class":93,"line":250},[91,96425,21896],{"class":97},[91,96427,7549],{"class":101},[91,96429,96430,96432,96434,96436,96438,96440,96442],{"class":93,"line":260},[91,96431,21903],{"class":97},[91,96433,112],{"class":101},[91,96435,21776],{"class":1172},[91,96437,11859],{"class":566},[91,96439,2662],{"class":101},[91,96441,21914],{"class":97},[91,96443,21917],{"class":101},[91,96445,96446],{"class":93,"line":274},[91,96447,10100],{"class":101},[91,96449,96450],{"class":93,"line":284},[91,96451,21926],{"class":101},[91,96453,96454],{"class":93,"line":299},[91,96455,137],{"class":101},[16,96457,96458],{},[19,96459],{"alt":87,"src":21935},[16,96461,96462,21940,96464,21943,96466,21947],{},[31,96463,11295],{},[31,96465,14430],{},[31,96467,21946],{},[49,96469,21837],{"id":21837},[1722,96471,96472],{},[16,96473,21837,96474,96476],{},[21660,96475],{},[4306,96477,21958],{"href":21958,"rel":96478},[4310],[16,96480,21962],{},[82,96482,96484],{"className":96483,"code":21966,"language":1099},[1097],[31,96485,21966],{"__ignoreMap":87},[16,96487,21971],{},[82,96489,96490],{"className":1154,"code":21974,"language":1156,"meta":87,"style":87},[31,96491,96492,96496,96508,96518,96522,96528,96540,96548,96552,96556,96566,96574,96578,96588,96600,96606,96610,96614,96618],{"__ignoreMap":87},[91,96493,96494],{"class":93,"line":94},[91,96495,21361],{"class":1343},[91,96497,96498,96500,96502,96504,96506],{"class":93,"line":105},[91,96499,2499],{"class":566},[91,96501,21856],{"class":101},[91,96503,2505],{"class":566},[91,96505,21991],{"class":169},[91,96507,118],{"class":101},[91,96509,96510,96512,96514,96516],{"class":93,"line":121},[91,96511,2574],{"class":566},[91,96513,12107],{"class":566},[91,96515,21401],{"class":97},[91,96517,7549],{"class":101},[91,96519,96520],{"class":93,"line":134},[91,96521,21886],{"class":101},[91,96523,96524,96526],{"class":93,"line":228},[91,96525,21896],{"class":97},[91,96527,7549],{"class":101},[91,96529,96530,96532,96534,96536,96538],{"class":93,"line":250},[91,96531,22018],{"class":101},[91,96533,22021],{"class":169},[91,96535,64],{"class":101},[91,96537,22026],{"class":169},[91,96539,16394],{"class":101},[91,96541,96542,96544,96546],{"class":93,"line":260},[91,96543,22033],{"class":101},[91,96545,22036],{"class":169},[91,96547,7560],{"class":101},[91,96549,96550],{"class":93,"line":274},[91,96551,22043],{"class":1343},[91,96553,96554],{"class":93,"line":284},[91,96555,22048],{"class":1343},[91,96557,96558,96560,96562,96564],{"class":93,"line":299},[91,96559,22053],{"class":1343},[91,96561,22056],{"class":566},[91,96563,12259],{"class":101},[91,96565,22061],{"class":1343},[91,96567,96568,96570,96572],{"class":93,"line":319},[91,96569,22053],{"class":1343},[91,96571,22068],{"class":566},[91,96573,8723],{"class":1343},[91,96575,96576],{"class":93,"line":334},[91,96577,22075],{"class":1343},[91,96579,96580,96582,96584,96586],{"class":93,"line":355},[91,96581,22080],{"class":97},[91,96583,795],{"class":101},[91,96585,14102],{"class":1172},[91,96587,3866],{"class":101},[91,96589,96590,96592,96594,96596,96598],{"class":93,"line":364},[91,96591,22091],{"class":101},[91,96593,1225],{"class":97},[91,96595,795],{"class":101},[91,96597,22098],{"class":169},[91,96599,22101],{"class":101},[91,96601,96602,96604],{"class":93,"line":378},[91,96603,11866],{"class":566},[91,96605,22108],{"class":101},[91,96607,96608],{"class":93,"line":387},[91,96609,10095],{"class":101},[91,96611,96612],{"class":93,"line":402},[91,96613,10100],{"class":101},[91,96615,96616],{"class":93,"line":422},[91,96617,21926],{"class":101},[91,96619,96620],{"class":93,"line":438},[91,96621,9444],{"class":101},[16,96623,96624,22130],{},[31,96625,22129],{},[757,96627,22134],{"id":22133},[16,96629,96630,22139,96632,22143,96634,22147],{},[31,96631,22129],{},[31,96633,22142],{},[31,96635,22146],{},[24,96637,96638,96642],{},[27,96639,96640,22155],{},[792,96641,22154],{},[27,96643,96644,22161],{},[792,96645,22160],{},[16,96647,22164],{},[757,96649,22168],{"id":22167},[1722,96651,96652],{},[16,96653,22173,96654,96656],{},[21660,96655],{},[4306,96657,22178],{"href":22178,"rel":96658},[4310],[16,96660,22182],{},[16,96662,96663],{},[19,96664],{"alt":87,"src":22187},[82,96666,96667],{"className":1154,"code":22190,"language":1156,"meta":87,"style":87},[31,96668,96669,96673,96683,96693,96703,96709,96713,96721,96729,96737,96745,96751,96755,96759,96763,96771],{"__ignoreMap":87},[91,96670,96671],{"class":93,"line":94},[91,96672,22197],{"class":101},[91,96674,96675,96677,96679,96681],{"class":93,"line":105},[91,96676,22202],{"class":97},[91,96678,112],{"class":101},[91,96680,22207],{"class":169},[91,96682,7560],{"class":101},[91,96684,96685,96687,96689,96691],{"class":93,"line":121},[91,96686,22214],{"class":97},[91,96688,112],{"class":101},[91,96690,22219],{"class":169},[91,96692,7560],{"class":101},[91,96694,96695,96697,96699,96701],{"class":93,"line":134},[91,96696,22226],{"class":97},[91,96698,112],{"class":101},[91,96700,22231],{"class":108},[91,96702,7560],{"class":101},[91,96704,96705,96707],{"class":93,"line":228},[91,96706,22238],{"class":97},[91,96708,10596],{"class":101},[91,96710,96711],{"class":93,"line":250},[91,96712,22245],{"class":101},[91,96714,96715,96717,96719],{"class":93,"line":260},[91,96716,22250],{"class":101},[91,96718,22253],{"class":169},[91,96720,7560],{"class":101},[91,96722,96723,96725,96727],{"class":93,"line":274},[91,96724,22260],{"class":101},[91,96726,22263],{"class":169},[91,96728,7560],{"class":101},[91,96730,96731,96733,96735],{"class":93,"line":284},[91,96732,22270],{"class":101},[91,96734,22273],{"class":169},[91,96736,7560],{"class":101},[91,96738,96739,96741,96743],{"class":93,"line":299},[91,96740,22280],{"class":101},[91,96742,22231],{"class":108},[91,96744,7560],{"class":101},[91,96746,96747,96749],{"class":93,"line":319},[91,96748,22289],{"class":101},[91,96750,11269],{"class":108},[91,96752,96753],{"class":93,"line":334},[91,96754,3477],{"class":101},[91,96756,96757],{"class":93,"line":355},[91,96758,22300],{"class":1343},[91,96760,96761],{"class":93,"line":364},[91,96762,21926],{"class":101},[91,96764,96765,96767,96769],{"class":93,"line":378},[91,96766,22309],{"class":97},[91,96768,112],{"class":101},[91,96770,11269],{"class":108},[91,96772,96773],{"class":93,"line":387},[91,96774,137],{"class":101},[16,96776,22320,96777,22324],{},[31,96778,22323],{},[82,96780,96781],{"className":1934,"code":22327,"language":1936,"meta":87,"style":87},[31,96782,96783,96797,96805,96819,96831,96839,96847,96851,96859],{"__ignoreMap":87},[91,96784,96785,96787,96789,96791,96793,96795],{"class":93,"line":94},[91,96786,156],{"class":101},[91,96788,1945],{"class":159},[91,96790,1948],{"class":97},[91,96792,12566],{"class":101},[91,96794,1945],{"class":159},[91,96796,173],{"class":101},[91,96798,96799,96801,96803],{"class":93,"line":105},[91,96800,156],{"class":101},[91,96802,2118],{"class":159},[91,96804,173],{"class":101},[91,96806,96807,96809,96811,96813,96815,96817],{"class":93,"line":121},[91,96808,2125],{"class":101},[91,96810,160],{"class":159},[91,96812,163],{"class":97},[91,96814,166],{"class":101},[91,96816,22364],{"class":169},[91,96818,173],{"class":101},[91,96820,96821,96823,96825,96827,96829],{"class":93,"line":134},[91,96822,178],{"class":101},[91,96824,22373],{"class":159},[91,96826,12566],{"class":101},[91,96828,22373],{"class":159},[91,96830,173],{"class":101},[91,96832,96833,96835,96837],{"class":93,"line":228},[91,96834,15729],{"class":101},[91,96836,160],{"class":159},[91,96838,173],{"class":101},[91,96840,96841,96843,96845],{"class":93,"line":250},[91,96842,493],{"class":101},[91,96844,2118],{"class":159},[91,96846,173],{"class":101},[91,96848,96849],{"class":93,"line":260},[91,96850,1450],{"emptyLinePlaceholder":846},[91,96852,96853,96855,96857],{"class":93,"line":274},[91,96854,156],{"class":101},[91,96856,829],{"class":159},[91,96858,173],{"class":101},[91,96860,96861,96863,96865],{"class":93,"line":284},[91,96862,493],{"class":101},[91,96864,829],{"class":159},[91,96866,173],{"class":101},[16,96868,96869,22421,96871,22424],{},[31,96870,22420],{},[31,96872,22373],{},[49,96874,22427],{"id":22427},[1722,96876,96877],{},[16,96878,22427,96879,96881],{},[21660,96880],{},[4306,96882,22436],{"href":22436,"rel":96883},[4310],[16,96885,22440],{},[82,96887,96889],{"className":96888,"code":22444,"language":1099},[1097],[31,96890,22444],{"__ignoreMap":87},[82,96892,96893],{"className":1154,"code":22449,"language":1156,"meta":87,"style":87},[31,96894,96895,96899,96911,96921,96925,96931,96935],{"__ignoreMap":87},[91,96896,96897],{"class":93,"line":94},[91,96898,21361],{"class":1343},[91,96900,96901,96903,96905,96907,96909],{"class":93,"line":105},[91,96902,2499],{"class":566},[91,96904,22462],{"class":101},[91,96906,2505],{"class":566},[91,96908,22467],{"class":169},[91,96910,118],{"class":101},[91,96912,96913,96915,96917,96919],{"class":93,"line":121},[91,96914,2574],{"class":566},[91,96916,12107],{"class":566},[91,96918,21401],{"class":97},[91,96920,7549],{"class":101},[91,96922,96923],{"class":93,"line":134},[91,96924,21886],{"class":101},[91,96926,96927,96929],{"class":93,"line":228},[91,96928,22488],{"class":97},[91,96930,8275],{"class":101},[91,96932,96933],{"class":93,"line":250},[91,96934,22495],{"class":101},[91,96936,96937],{"class":93,"line":260},[91,96938,9444],{"class":101},[16,96940,22502,96941,22506],{},[31,96942,22505],{},[82,96944,96945],{"className":8477,"code":22509,"language":8479,"meta":87,"style":87},[31,96946,96947,96951,96957,96963,96969,96975,96981,96985,96989],{"__ignoreMap":87},[91,96948,96949],{"class":93,"line":94},[91,96950,22516],{"class":1343},[91,96952,96953,96955],{"class":93,"line":105},[91,96954,22521],{"class":169},[91,96956,8789],{"class":101},[91,96958,96959,96961],{"class":93,"line":121},[91,96960,22528],{"class":108},[91,96962,10596],{"class":101},[91,96964,96965,96967],{"class":93,"line":134},[91,96966,22535],{"class":169},[91,96968,10624],{"class":101},[91,96970,96971,96973],{"class":93,"line":228},[91,96972,22542],{"class":169},[91,96974,10624],{"class":101},[91,96976,96977,96979],{"class":93,"line":250},[91,96978,22549],{"class":169},[91,96980,10624],{"class":101},[91,96982,96983],{"class":93,"line":260},[91,96984,22556],{"class":169},[91,96986,96987],{"class":93,"line":274},[91,96988,21497],{"class":101},[91,96990,96991],{"class":93,"line":284},[91,96992,137],{"class":101},[16,96994,96995,22570],{},[31,96996,22569],{},[82,96998,96999],{"className":1154,"code":22573,"language":1156,"meta":87,"style":87},[31,97000,97001,97005,97009,97013,97017,97027,97031,97035,97039,97049,97053,97065,97079,97083,97087,97091,97119,97123,97127],{"__ignoreMap":87},[91,97002,97003],{"class":93,"line":94},[91,97004,14780],{"class":1343},[91,97006,97007],{"class":93,"line":105},[91,97008,22584],{"class":1343},[91,97010,97011],{"class":93,"line":121},[91,97012,22589],{"class":1343},[91,97014,97015],{"class":93,"line":134},[91,97016,22594],{"class":1343},[91,97018,97019,97021,97023,97025],{"class":93,"line":228},[91,97020,2499],{"class":566},[91,97022,22601],{"class":101},[91,97024,2505],{"class":566},[91,97026,22606],{"class":169},[91,97028,97029],{"class":93,"line":250},[91,97030,22611],{"class":1343},[91,97032,97033],{"class":93,"line":260},[91,97034,22589],{"class":1343},[91,97036,97037],{"class":93,"line":274},[91,97038,22620],{"class":1343},[91,97040,97041,97043,97045,97047],{"class":93,"line":284},[91,97042,2499],{"class":566},[91,97044,22627],{"class":101},[91,97046,2505],{"class":566},[91,97048,22632],{"class":169},[91,97050,97051],{"class":93,"line":299},[91,97052,1450],{"emptyLinePlaceholder":846},[91,97054,97055,97057,97059,97061,97063],{"class":93,"line":319},[91,97056,1968],{"class":566},[91,97058,13075],{"class":108},[91,97060,1366],{"class":566},[91,97062,22647],{"class":97},[91,97064,22650],{"class":101},[91,97066,97067,97069,97071,97073,97075,97077],{"class":93,"line":334},[91,97068,2574],{"class":566},[91,97070,16463],{"class":566},[91,97072,14867],{"class":108},[91,97074,1366],{"class":566},[91,97076,21741],{"class":97},[91,97078,9266],{"class":101},[91,97080,97081],{"class":93,"line":355},[91,97082,21748],{"class":1343},[91,97084,97085],{"class":93,"line":364},[91,97086,21753],{"class":101},[91,97088,97089],{"class":93,"line":378},[91,97090,22677],{"class":101},[91,97092,97093,97095,97097,97099,97101,97103,97105,97107,97109,97111,97113,97115,97117],{"class":93,"line":387},[91,97094,21763],{"class":101},[91,97096,21766],{"class":1172},[91,97098,64],{"class":101},[91,97100,21771],{"class":1172},[91,97102,64],{"class":101},[91,97104,21776],{"class":1172},[91,97106,64],{"class":101},[91,97108,21781],{"class":1172},[91,97110,64],{"class":101},[91,97112,21786],{"class":1172},[91,97114,21410],{"class":101},[91,97116,1179],{"class":566},[91,97118,102],{"class":101},[91,97120,97121],{"class":93,"line":402},[91,97122,21797],{"class":1343},[91,97124,97125],{"class":93,"line":422},[91,97126,3477],{"class":101},[91,97128,97129],{"class":93,"line":438},[91,97130,3487],{"class":101},[16,97132,22720],{},[49,97134,22723],{"id":22723},[1722,97136,97137],{},[16,97138,22723,97139,97141],{},[21660,97140],{},[4306,97142,22732],{"href":22732,"rel":97143},[4310],[16,97145,22736],{},[82,97147,97149],{"className":97148,"code":22740,"language":1099},[1097],[31,97150,22740],{"__ignoreMap":87},[82,97152,97153],{"className":1154,"code":22745,"language":1156,"meta":87,"style":87},[31,97154,97155,97165,97169,97179,97183,97189,97219,97223,97229,97233],{"__ignoreMap":87},[91,97156,97157,97159,97161,97163],{"class":93,"line":94},[91,97158,2499],{"class":566},[91,97160,22754],{"class":101},[91,97162,2505],{"class":566},[91,97164,22759],{"class":169},[91,97166,97167],{"class":93,"line":105},[91,97168,1450],{"emptyLinePlaceholder":846},[91,97170,97171,97173,97175,97177],{"class":93,"line":121},[91,97172,2574],{"class":566},[91,97174,12107],{"class":566},[91,97176,21401],{"class":97},[91,97178,7549],{"class":101},[91,97180,97181],{"class":93,"line":134},[91,97182,21886],{"class":101},[91,97184,97185,97187],{"class":93,"line":228},[91,97186,22782],{"class":97},[91,97188,7549],{"class":101},[91,97190,97191,97193,97195,97197,97199,97201,97203,97205,97207,97209,97211,97213,97215,97217],{"class":93,"line":250},[91,97192,22789],{"class":101},[91,97194,8361],{"class":169},[91,97196,22795],{"class":22794},[91,97198,1936],{"class":14017},[91,97200,22800],{"class":566},[91,97202,8361],{"class":169},[91,97204,6373],{"class":101},[91,97206,8352],{"class":169},[91,97208,22795],{"class":22794},[91,97210,843],{"class":14017},[91,97212,22800],{"class":566},[91,97214,8361],{"class":169},[91,97216,22817],{"class":101},[91,97218,22820],{"class":1343},[91,97220,97221],{"class":93,"line":260},[91,97222,10100],{"class":101},[91,97224,97225,97227],{"class":93,"line":274},[91,97226,22829],{"class":97},[91,97228,8275],{"class":101},[91,97230,97231],{"class":93,"line":284},[91,97232,21926],{"class":101},[91,97234,97235],{"class":93,"line":299},[91,97236,9444],{"class":101},[16,97238,22842,97239,22845,97241,22848,97243,22851],{},[31,97240,1936],{},[31,97242,843],{},[31,97244,15046],{},[757,97246,22855],{"id":22854},[16,97248,97249],{},[4306,97250,22862],{"href":22860,"rel":97251},[4310],[16,97253,22865,97254,22868,97256,22871,97258,22874,97260,22878,97262,22882,97264,22885],{},[31,97255,22146],{},[31,97257,21653],{},[31,97259,22723],{},[31,97261,22877],{},[31,97263,22881],{},[31,97265,22877],{},[82,97267,97268],{"className":15447,"code":22888,"language":843,"meta":87,"style":87},[31,97269,97270,97274,97280,97290,97298],{"__ignoreMap":87},[91,97271,97272],{"class":93,"line":94},[91,97273,15943],{"class":101},[91,97275,97276,97278],{"class":93,"line":105},[91,97277,13765],{"class":159},[91,97279,7265],{"class":101},[91,97281,97282,97284,97286,97288],{"class":93,"line":121},[91,97283,22905],{"class":101},[91,97285,1238],{"class":159},[91,97287,112],{"class":101},[91,97289,22912],{"class":169},[91,97291,97292,97294,97296],{"class":93,"line":134},[91,97293,11634],{"class":159},[91,97295,112],{"class":101},[91,97297,22921],{"class":169},[91,97299,97300],{"class":93,"line":228},[91,97301,15943],{"class":101},[16,97303,22928,97304,22932],{},[31,97305,22931],{},[82,97307,97308],{"className":15447,"code":22935,"language":843,"meta":87,"style":87},[31,97309,97310,97314,97320,97330,97338],{"__ignoreMap":87},[91,97311,97312],{"class":93,"line":94},[91,97313,15943],{"class":101},[91,97315,97316,97318],{"class":93,"line":105},[91,97317,13765],{"class":159},[91,97319,7265],{"class":101},[91,97321,97322,97324,97326,97328],{"class":93,"line":121},[91,97323,22905],{"class":101},[91,97325,1238],{"class":159},[91,97327,112],{"class":101},[91,97329,22958],{"class":169},[91,97331,97332,97334,97336],{"class":93,"line":134},[91,97333,22963],{"class":159},[91,97335,112],{"class":101},[91,97337,22968],{"class":169},[91,97339,97340],{"class":93,"line":228},[91,97341,15943],{"class":101},[16,97343,22975],{},[82,97345,97346],{"className":147,"code":22978,"language":149,"meta":87,"style":87},[31,97347,97348,97360,97372,97382],{"__ignoreMap":87},[91,97349,97350,97352,97354,97356,97358],{"class":93,"line":94},[91,97351,156],{"class":101},[91,97353,13972],{"class":159},[91,97355,22989],{"class":101},[91,97357,13972],{"class":159},[91,97359,173],{"class":101},[91,97361,97362,97364,97366,97368,97370],{"class":93,"line":105},[91,97363,156],{"class":101},[91,97365,13765],{"class":159},[91,97367,13768],{"class":97},[91,97369,166],{"class":101},[91,97371,23006],{"class":169},[91,97373,97374,97376,97378,97380],{"class":93,"line":121},[91,97375,808],{"class":97},[91,97377,166],{"class":101},[91,97379,23015],{"class":169},[91,97381,173],{"class":101},[91,97383,97384,97386,97388,97390,97392,97394,97396,97398,97400],{"class":93,"line":134},[91,97385,156],{"class":101},[91,97387,13765],{"class":159},[91,97389,23026],{"class":97},[91,97391,166],{"class":101},[91,97393,23031],{"class":169},[91,97395,13776],{"class":97},[91,97397,166],{"class":101},[91,97399,23038],{"class":169},[91,97401,173],{"class":101},[16,97403,23043,97404,23046],{},[31,97405,13765],{},[49,97407,23050],{"id":23049},[757,97409,23053],{"id":23053},[1722,97411,97412],{},[16,97413,23053,97414,97416],{},[21660,97415],{},[4306,97417,23062],{"href":23062,"rel":97418},[4310],[16,97420,97421,23069],{},[31,97422,23068],{},[757,97424,23072],{"id":23072},[1722,97426,97427],{},[16,97428,23072,97429,97431],{},[21660,97430],{},[4306,97432,23081],{"href":23081,"rel":97433},[4310],[16,97435,97436,23088],{},[31,97437,23087],{},[771,97439,23092],{"id":23091},[16,97441,23095],{},[82,97443,97444],{"className":1154,"code":23098,"language":1156,"meta":87,"style":87},[31,97445,97446,97456,97460,97464,97482,97500,97518,97536,97540,97558,97570,97574,97578,97600,97604],{"__ignoreMap":87},[91,97447,97448,97450,97452,97454],{"class":93,"line":94},[91,97449,2085],{"class":97},[91,97451,2088],{"class":101},[91,97453,1179],{"class":566},[91,97455,102],{"class":101},[91,97457,97458],{"class":93,"line":105},[91,97459,23115],{"class":1343},[91,97461,97462],{"class":93,"line":121},[91,97463,23120],{"class":1343},[91,97465,97466,97468,97470,97472,97474,97476,97478,97480],{"class":93,"line":134},[91,97467,2641],{"class":566},[91,97469,23127],{"class":108},[91,97471,1366],{"class":566},[91,97473,5025],{"class":101},[91,97475,19508],{"class":97},[91,97477,795],{"class":101},[91,97479,23138],{"class":169},[91,97481,1594],{"class":101},[91,97483,97484,97486,97488,97490,97492,97494,97496,97498],{"class":93,"line":228},[91,97485,2641],{"class":566},[91,97487,23147],{"class":108},[91,97489,1366],{"class":566},[91,97491,5025],{"class":101},[91,97493,19508],{"class":97},[91,97495,795],{"class":101},[91,97497,23158],{"class":169},[91,97499,1594],{"class":101},[91,97501,97502,97504,97506,97508,97510,97512,97514,97516],{"class":93,"line":250},[91,97503,2641],{"class":566},[91,97505,23167],{"class":108},[91,97507,1366],{"class":566},[91,97509,5025],{"class":101},[91,97511,19508],{"class":97},[91,97513,795],{"class":101},[91,97515,23178],{"class":169},[91,97517,1594],{"class":101},[91,97519,97520,97522,97524,97526,97528,97530,97532,97534],{"class":93,"line":260},[91,97521,2641],{"class":566},[91,97523,23187],{"class":108},[91,97525,1366],{"class":566},[91,97527,5025],{"class":101},[91,97529,19508],{"class":97},[91,97531,795],{"class":101},[91,97533,23198],{"class":169},[91,97535,1594],{"class":101},[91,97537,97538],{"class":93,"line":274},[91,97539,1450],{"emptyLinePlaceholder":846},[91,97541,97542,97544,97546,97548,97550,97552,97554,97556],{"class":93,"line":284},[91,97543,2439],{"class":566},[91,97545,23211],{"class":101},[91,97547,5232],{"class":566},[91,97549,23216],{"class":101},[91,97551,5232],{"class":566},[91,97553,23221],{"class":101},[91,97555,5232],{"class":566},[91,97557,23226],{"class":101},[91,97559,97560,97562,97564,97566,97568],{"class":93,"line":299},[91,97561,23231],{"class":101},[91,97563,166],{"class":566},[91,97565,23236],{"class":101},[91,97567,2665],{"class":566},[91,97569,118],{"class":101},[91,97571,97572],{"class":93,"line":319},[91,97573,23245],{"class":1343},[91,97575,97576],{"class":93,"line":334},[91,97577,23250],{"class":1343},[91,97579,97580,97582,97584,97586,97588,97590,97592,97594,97596,97598],{"class":93,"line":355},[91,97581,23255],{"class":101},[91,97583,20739],{"class":566},[91,97585,23260],{"class":97},[91,97587,23263],{"class":101},[91,97589,23266],{"class":97},[91,97591,795],{"class":101},[91,97593,23271],{"class":169},[91,97595,64],{"class":101},[91,97597,23276],{"class":169},[91,97599,1594],{"class":101},[91,97601,97602],{"class":93,"line":364},[91,97603,1698],{"class":101},[91,97605,97606],{"class":93,"line":378},[91,97607,9444],{"class":101},[16,97609,23289,97610,23293],{},[31,97611,23292],{},[1722,97613,97614],{},[16,97615,97616,23301,97618,23305,97620,23309,97622,23312,97624,23316],{},[91,97617,23300],{},[31,97619,23304],{},[31,97621,23308],{},[31,97623,22231],{},[31,97625,23315],{},[82,97627,97628],{"className":1154,"code":23319,"language":1156,"meta":87,"style":87},[31,97629,97630,97644,97648,97658,97664,97668],{"__ignoreMap":87},[91,97631,97632,97634,97636,97638,97640,97642],{"class":93,"line":94},[91,97633,1884],{"class":97},[91,97635,2088],{"class":101},[91,97637,1179],{"class":566},[91,97639,23332],{"class":101},[91,97641,1179],{"class":566},[91,97643,102],{"class":101},[91,97645,97646],{"class":93,"line":105},[91,97647,23341],{"class":1343},[91,97649,97650,97652,97654,97656],{"class":93,"line":121},[91,97651,23346],{"class":97},[91,97653,2088],{"class":101},[91,97655,1179],{"class":566},[91,97657,102],{"class":101},[91,97659,97660,97662],{"class":93,"line":134},[91,97661,23357],{"class":97},[91,97663,2030],{"class":101},[91,97665,97666],{"class":93,"line":228},[91,97667,7745],{"class":101},[91,97669,97670],{"class":93,"line":250},[91,97671,1303],{"class":101},[16,97673,23370,97674,23373],{},[31,97675,1884],{},[757,97677,23376],{"id":23376},[1722,97679,97680],{},[16,97681,23376,97682,97684],{},[21660,97683],{},[4306,97685,23385],{"href":23385,"rel":97686},[4310],[16,97688,97689,23392,97691,23395],{},[31,97690,23391],{},[31,97692,82],{},[82,97694,97695],{"className":1154,"code":23398,"language":1156,"meta":87,"style":87},[31,97696,97697,97707,97711,97717,97727,97731,97739,97743,97747,97751],{"__ignoreMap":87},[91,97698,97699,97701,97703,97705],{"class":93,"line":94},[91,97700,2574],{"class":566},[91,97702,12107],{"class":566},[91,97704,21401],{"class":97},[91,97706,7549],{"class":101},[91,97708,97709],{"class":93,"line":105},[91,97710,21886],{"class":101},[91,97712,97713,97715],{"class":93,"line":121},[91,97714,22829],{"class":97},[91,97716,7549],{"class":101},[91,97718,97719,97721,97723,97725],{"class":93,"line":134},[91,97720,23425],{"class":97},[91,97722,795],{"class":101},[91,97724,843],{"class":1172},[91,97726,3866],{"class":101},[91,97728,97729],{"class":93,"line":228},[91,97730,23436],{"class":1343},[91,97732,97733,97735,97737],{"class":93,"line":250},[91,97734,23441],{"class":101},[91,97736,14877],{"class":97},[91,97738,23446],{"class":101},[91,97740,97741],{"class":93,"line":260},[91,97742,21324],{"class":101},[91,97744,97745],{"class":93,"line":274},[91,97746,10100],{"class":101},[91,97748,97749],{"class":93,"line":284},[91,97750,21926],{"class":101},[91,97752,97753],{"class":93,"line":299},[91,97754,9444],{"class":101},[16,97756,97757,23468],{},[31,97758,23467],{},[82,97760,97761],{"className":23471,"code":23472,"language":23473,"meta":87,"style":87},[31,97762,97763,97771,97779],{"__ignoreMap":87},[91,97764,97765,97767,97769],{"class":93,"line":94},[91,97766,156],{"class":101},[91,97768,829],{"class":159},[91,97770,173],{"class":101},[91,97772,97773,97775,97777],{"class":93,"line":105},[91,97774,23488],{"class":566},[91,97776,23491],{"class":169},[91,97778,19873],{"class":101},[91,97780,97781,97783,97785],{"class":93,"line":121},[91,97782,493],{"class":101},[91,97784,829],{"class":159},[91,97786,173],{"class":101},[16,97788,23504,97789,23508,97791,23512],{},[31,97790,23507],{},[31,97792,23511],{},[771,97794,23515],{"id":23515},[16,97796,97797,23523],{},[4306,97798,23522],{"href":23520,"rel":97799},[4310],[49,97801,23526],{"id":23526},[1722,97803,97804],{},[16,97805,23526,97806,97808,97811,23539,97813,97815],{},[21660,97807],{},[4306,97809,23535],{"href":23535,"rel":97810},[4310],[21660,97812],{},[21660,97814],{},[4306,97816,23544],{"href":23544,"rel":97817},[4310],[16,97819,23548],{},[82,97821,97823],{"className":97822,"code":23552,"language":1099},[1097],[31,97824,23552],{"__ignoreMap":87},[82,97826,97827],{"className":1154,"code":23557,"language":1156,"meta":87,"style":87},[31,97828,97829,97833,97847,97851,97855,97875,97887,97895,97899,97917,97925,97929,97941,97945,97969,97981,97991,97995,98003,98009,98013,98017],{"__ignoreMap":87},[91,97830,97831],{"class":93,"line":94},[91,97832,14780],{"class":1343},[91,97834,97835,97837,97839,97841,97843,97845],{"class":93,"line":105},[91,97836,2574],{"class":566},[91,97838,16463],{"class":566},[91,97840,14867],{"class":108},[91,97842,1366],{"class":566},[91,97844,21741],{"class":97},[91,97846,9266],{"class":101},[91,97848,97849],{"class":93,"line":121},[91,97850,23582],{"class":101},[91,97852,97853],{"class":93,"line":134},[91,97854,23587],{"class":101},[91,97856,97857,97859,97861,97863,97865,97867,97869,97871,97873],{"class":93,"line":228},[91,97858,23592],{"class":101},[91,97860,21766],{"class":1172},[91,97862,64],{"class":101},[91,97864,21771],{"class":1172},[91,97866,64],{"class":101},[91,97868,21786],{"class":1172},[91,97870,21410],{"class":101},[91,97872,1179],{"class":566},[91,97874,102],{"class":101},[91,97876,97877,97879,97881,97883,97885],{"class":93,"line":250},[91,97878,1382],{"class":566},[91,97880,17032],{"class":108},[91,97882,1366],{"class":566},[91,97884,17037],{"class":97},[91,97886,9313],{"class":101},[91,97888,97889,97891,97893],{"class":93,"line":260},[91,97890,23625],{"class":101},[91,97892,14877],{"class":97},[91,97894,17049],{"class":101},[91,97896,97897],{"class":93,"line":274},[91,97898,1450],{"emptyLinePlaceholder":846},[91,97900,97901,97903,97905,97907,97909,97911,97913,97915],{"class":93,"line":284},[91,97902,8218],{"class":566},[91,97904,2662],{"class":101},[91,97906,2499],{"class":566},[91,97908,1235],{"class":101},[91,97910,13765],{"class":108},[91,97912,23648],{"class":101},[91,97914,23651],{"class":108},[91,97916,3487],{"class":101},[91,97918,97919,97921,97923],{"class":93,"line":299},[91,97920,23658],{"class":101},[91,97922,166],{"class":566},[91,97924,23663],{"class":101},[91,97926,97927],{"class":93,"line":319},[91,97928,23668],{"class":566},[91,97930,97931,97933,97935,97937,97939],{"class":93,"line":334},[91,97932,23673],{"class":101},[91,97934,166],{"class":566},[91,97936,23678],{"class":101},[91,97938,7829],{"class":566},[91,97940,23683],{"class":101},[91,97942,97943],{"class":93,"line":355},[91,97944,1450],{"emptyLinePlaceholder":846},[91,97946,97947,97949,97951,97953,97955,97957,97959,97961,97963,97965,97967],{"class":93,"line":364},[91,97948,23692],{"class":101},[91,97950,23695],{"class":97},[91,97952,1169],{"class":101},[91,97954,23700],{"class":1172},[91,97956,64],{"class":101},[91,97958,2505],{"class":1172},[91,97960,64],{"class":101},[91,97962,23709],{"class":1172},[91,97964,1176],{"class":101},[91,97966,1179],{"class":566},[91,97968,102],{"class":101},[91,97970,97971,97973,97975,97977,97979],{"class":93,"line":378},[91,97972,13915],{"class":566},[91,97974,12158],{"class":108},[91,97976,1366],{"class":566},[91,97978,23726],{"class":97},[91,97980,17049],{"class":101},[91,97982,97983,97985,97987,97989],{"class":93,"line":387},[91,97984,13326],{"class":566},[91,97986,2662],{"class":101},[91,97988,2665],{"class":566},[91,97990,23739],{"class":101},[91,97992,97993],{"class":93,"line":402},[91,97994,23744],{"class":1343},[91,97996,97997,97999,98001],{"class":93,"line":422},[91,97998,23749],{"class":101},[91,98000,23752],{"class":97},[91,98002,9313],{"class":101},[91,98004,98005,98007],{"class":93,"line":438},[91,98006,23759],{"class":97},[91,98008,9313],{"class":101},[91,98010,98011],{"class":93,"line":458},[91,98012,23766],{"class":101},[91,98014,98015],{"class":93,"line":467},[91,98016,10581],{"class":101},[91,98018,98019],{"class":93,"line":481},[91,98020,3487],{"class":101},[16,98022,23777,98023,23781],{},[31,98024,23780],{},[82,98026,98027],{"className":1154,"code":23784,"language":1156,"meta":87,"style":87},[31,98028,98029,98033,98045,98055,98067,98071,98081,98091,98101,98111,98121,98131,98141,98145,98149,98171,98187,98207,98211,98221,98225,98251,98259,98265,98269,98273,98277,98283,98287,98291,98295,98299],{"__ignoreMap":87},[91,98030,98031],{"class":93,"line":94},[91,98032,12391],{"class":1343},[91,98034,98035,98037,98039,98041,98043],{"class":93,"line":105},[91,98036,2499],{"class":566},[91,98038,11584],{"class":101},[91,98040,2505],{"class":566},[91,98042,23801],{"class":169},[91,98044,118],{"class":101},[91,98046,98047,98049,98051,98053],{"class":93,"line":121},[91,98048,2499],{"class":566},[91,98050,16435],{"class":101},[91,98052,2505],{"class":566},[91,98054,16440],{"class":169},[91,98056,98057,98059,98061,98063,98065],{"class":93,"line":134},[91,98058,2499],{"class":566},[91,98060,16447],{"class":101},[91,98062,2505],{"class":566},[91,98064,2508],{"class":169},[91,98066,118],{"class":101},[91,98068,98069],{"class":93,"line":228},[91,98070,1450],{"emptyLinePlaceholder":846},[91,98072,98073,98075,98077,98079],{"class":93,"line":250},[91,98074,2574],{"class":566},[91,98076,11602],{"class":566},[91,98078,11605],{"class":97},[91,98080,102],{"class":101},[91,98082,98083,98085,98087,98089],{"class":93,"line":260},[91,98084,11612],{"class":1172},[91,98086,1208],{"class":566},[91,98088,1357],{"class":108},[91,98090,118],{"class":101},[91,98092,98093,98095,98097,98099],{"class":93,"line":274},[91,98094,11623],{"class":1172},[91,98096,1208],{"class":566},[91,98098,1357],{"class":108},[91,98100,118],{"class":101},[91,98102,98103,98105,98107,98109],{"class":93,"line":284},[91,98104,11645],{"class":1172},[91,98106,1208],{"class":566},[91,98108,1357],{"class":108},[91,98110,118],{"class":101},[91,98112,98113,98115,98117,98119],{"class":93,"line":299},[91,98114,16034],{"class":1172},[91,98116,1208],{"class":566},[91,98118,1357],{"class":108},[91,98120,118],{"class":101},[91,98122,98123,98125,98127,98129],{"class":93,"line":319},[91,98124,11656],{"class":1172},[91,98126,1208],{"class":566},[91,98128,1357],{"class":108},[91,98130,11663],{"class":101},[91,98132,98133,98135,98137,98139],{"class":93,"line":334},[91,98134,11668],{"class":1172},[91,98136,1208],{"class":566},[91,98138,1357],{"class":108},[91,98140,118],{"class":101},[91,98142,98143],{"class":93,"line":355},[91,98144,137],{"class":101},[91,98146,98147],{"class":93,"line":364},[91,98148,1450],{"emptyLinePlaceholder":846},[91,98150,98151,98153,98155,98157,98159,98161,98163,98165,98167,98169],{"class":93,"line":378},[91,98152,2574],{"class":566},[91,98154,16463],{"class":566},[91,98156,23916],{"class":108},[91,98158,1366],{"class":566},[91,98160,16471],{"class":97},[91,98162,795],{"class":101},[91,98164,23925],{"class":169},[91,98166,9612],{"class":101},[91,98168,1179],{"class":566},[91,98170,102],{"class":101},[91,98172,98173,98175,98177,98179,98181,98183,98185],{"class":93,"line":387},[91,98174,2641],{"class":566},[91,98176,11721],{"class":108},[91,98178,1366],{"class":566},[91,98180,16494],{"class":97},[91,98182,156],{"class":101},[91,98184,11726],{"class":97},[91,98186,23948],{"class":101},[91,98188,98189,98191,98193,98195,98197,98199,98201,98203,98205],{"class":93,"line":402},[91,98190,2641],{"class":566},[91,98192,11741],{"class":108},[91,98194,1366],{"class":566},[91,98196,16494],{"class":97},[91,98198,156],{"class":101},[91,98200,20666],{"class":108},[91,98202,23965],{"class":101},[91,98204,14028],{"class":169},[91,98206,1594],{"class":101},[91,98208,98209],{"class":93,"line":422},[91,98210,1450],{"emptyLinePlaceholder":846},[91,98212,98213,98215,98217,98219],{"class":93,"line":438},[91,98214,23978],{"class":566},[91,98216,2001],{"class":566},[91,98218,23983],{"class":97},[91,98220,9266],{"class":101},[91,98222,98223],{"class":93,"line":458},[91,98224,3866],{"class":101},[91,98226,98227,98229,98231,98233,98235,98237,98239,98241,98243,98245,98247,98249],{"class":93,"line":467},[91,98228,11994],{"class":101},[91,98230,5938],{"class":97},[91,98232,156],{"class":101},[91,98234,11726],{"class":97},[91,98236,24002],{"class":101},[91,98238,24005],{"class":169},[91,98240,8017],{"class":101},[91,98242,1200],{"class":97},[91,98244,795],{"class":101},[91,98246,12010],{"class":1172},[91,98248,11859],{"class":566},[91,98250,102],{"class":101},[91,98252,98253,98255,98257],{"class":93,"line":481},[91,98254,24022],{"class":101},[91,98256,166],{"class":566},[91,98258,12451],{"class":101},[91,98260,98261,98263],{"class":93,"line":490},[91,98262,11825],{"class":566},[91,98264,12451],{"class":101},[91,98266,98267],{"class":93,"line":3310},[91,98268,7745],{"class":101},[91,98270,98271],{"class":93,"line":3315},[91,98272,1698],{"class":101},[91,98274,98275],{"class":93,"line":3321},[91,98276,1450],{"emptyLinePlaceholder":846},[91,98278,98279,98281],{"class":93,"line":3327},[91,98280,2695],{"class":566},[91,98282,102],{"class":101},[91,98284,98285],{"class":93,"line":3333},[91,98286,24055],{"class":101},[91,98288,98289],{"class":93,"line":3338},[91,98290,24060],{"class":101},[91,98292,98293],{"class":93,"line":3343},[91,98294,24065],{"class":101},[91,98296,98297],{"class":93,"line":7882},[91,98298,1698],{"class":101},[91,98300,98301],{"class":93,"line":7887},[91,98302,9444],{"class":101},[16,98304,24076],{},[82,98306,98307],{"className":1154,"code":24079,"language":1156,"meta":87,"style":87},[31,98308,98309,98313,98317,98321,98331,98341,98351,98361,98371,98381,98415,98419,98423],{"__ignoreMap":87},[91,98310,98311],{"class":93,"line":94},[91,98312,24086],{"class":1343},[91,98314,98315],{"class":93,"line":105},[91,98316,11369],{"class":101},[91,98318,98319],{"class":93,"line":121},[91,98320,11374],{"class":101},[91,98322,98323,98325,98327,98329],{"class":93,"line":134},[91,98324,24099],{"class":169},[91,98326,112],{"class":101},[91,98328,24104],{"class":169},[91,98330,7560],{"class":101},[91,98332,98333,98335,98337,98339],{"class":93,"line":228},[91,98334,24111],{"class":169},[91,98336,112],{"class":101},[91,98338,24104],{"class":169},[91,98340,7560],{"class":101},[91,98342,98343,98345,98347,98349],{"class":93,"line":250},[91,98344,17628],{"class":169},[91,98346,112],{"class":101},[91,98348,24126],{"class":169},[91,98350,7560],{"class":101},[91,98352,98353,98355,98357,98359],{"class":93,"line":260},[91,98354,24133],{"class":169},[91,98356,112],{"class":101},[91,98358,24138],{"class":169},[91,98360,7560],{"class":101},[91,98362,98363,98365,98367,98369],{"class":93,"line":274},[91,98364,24145],{"class":169},[91,98366,112],{"class":101},[91,98368,24150],{"class":169},[91,98370,7560],{"class":101},[91,98372,98373,98375,98377,98379],{"class":93,"line":284},[91,98374,24157],{"class":169},[91,98376,112],{"class":101},[91,98378,24150],{"class":169},[91,98380,7560],{"class":101},[91,98382,98383,98385,98387,98389,98391,98393,98395,98397,98399,98401,98403,98405,98407,98409,98411,98413],{"class":93,"line":299},[91,98384,24168],{"class":169},[91,98386,11454],{"class":101},[91,98388,24173],{"class":169},[91,98390,64],{"class":101},[91,98392,24178],{"class":169},[91,98394,64],{"class":101},[91,98396,24183],{"class":169},[91,98398,64],{"class":101},[91,98400,24188],{"class":169},[91,98402,64],{"class":101},[91,98404,24193],{"class":169},[91,98406,64],{"class":101},[91,98408,24198],{"class":169},[91,98410,64],{"class":101},[91,98412,24203],{"class":169},[91,98414,11460],{"class":101},[91,98416,98417],{"class":93,"line":319},[91,98418,10581],{"class":101},[91,98420,98421],{"class":93,"line":334},[91,98422,24214],{"class":1343},[91,98424,98425],{"class":93,"line":355},[91,98426,11460],{"class":101},[16,98428,24221],{},[49,98430,15123],{"id":15123},[757,98432,24227],{"id":24226},[82,98434,98436],{"className":98435,"code":24231,"language":1099},[1097],[31,98437,24231],{"__ignoreMap":87},[16,98439,98440],{},[4306,98441,24240],{"href":24238,"rel":98442},[4310],[82,98444,98445],{"className":1154,"code":24243,"language":1156,"meta":87,"style":87},[31,98446,98447,98459,98471,98475,98491,98499],{"__ignoreMap":87},[91,98448,98449,98451,98453,98455,98457],{"class":93,"line":94},[91,98450,2499],{"class":566},[91,98452,24252],{"class":101},[91,98454,2505],{"class":566},[91,98456,24257],{"class":169},[91,98458,118],{"class":101},[91,98460,98461,98463,98465,98467,98469],{"class":93,"line":105},[91,98462,2499],{"class":566},[91,98464,24266],{"class":101},[91,98466,2505],{"class":566},[91,98468,24271],{"class":169},[91,98470,118],{"class":101},[91,98472,98473],{"class":93,"line":121},[91,98474,1450],{"emptyLinePlaceholder":846},[91,98476,98477,98479,98481,98483,98485,98487,98489],{"class":93,"line":134},[91,98478,1968],{"class":566},[91,98480,13969],{"class":101},[91,98482,24286],{"class":108},[91,98484,13985],{"class":101},[91,98486,166],{"class":566},[91,98488,24293],{"class":108},[91,98490,118],{"class":101},[91,98492,98493,98495,98497],{"class":93,"line":228},[91,98494,24300],{"class":101},[91,98496,24303],{"class":97},[91,98498,24306],{"class":101},[91,98500,98501,98503,98505],{"class":93,"line":250},[91,98502,24300],{"class":101},[91,98504,24303],{"class":97},[91,98506,24315],{"class":101},[16,98508,24318,98509,24321,98511,24325,98513,24329],{},[31,98510,21653],{},[31,98512,24324],{},[31,98514,24328],{},[757,98516,5310],{"id":5310},[16,98518,98519,24336,98521,24340],{},[31,98520,21653],{},[31,98522,24339],{},[82,98524,98526],{"className":98525,"code":24344,"language":1099},[1097],[31,98527,24344],{"__ignoreMap":87},[16,98529,98530,24352],{},[31,98531,24351],{},[82,98533,98534],{"className":1154,"code":24355,"language":1156,"meta":87,"style":87},[31,98535,98536,98548,98552,98562,98568,98576],{"__ignoreMap":87},[91,98537,98538,98540,98542,98544,98546],{"class":93,"line":94},[91,98539,1968],{"class":566},[91,98541,13057],{"class":108},[91,98543,1366],{"class":566},[91,98545,23916],{"class":97},[91,98547,2030],{"class":101},[91,98549,98550],{"class":93,"line":105},[91,98551,1450],{"emptyLinePlaceholder":846},[91,98553,98554,98556,98558,98560],{"class":93,"line":121},[91,98555,2085],{"class":97},[91,98557,2088],{"class":101},[91,98559,1179],{"class":566},[91,98561,102],{"class":101},[91,98563,98564,98566],{"class":93,"line":134},[91,98565,24388],{"class":97},[91,98567,2030],{"class":101},[91,98569,98570,98572,98574],{"class":93,"line":228},[91,98571,24395],{"class":101},[91,98573,24398],{"class":97},[91,98575,2030],{"class":101},[91,98577,98578],{"class":93,"line":250},[91,98579,9444],{"class":101},[16,98581,24407,98582,24410],{},[31,98583,24339],{},[829,98585,24413],{},{"title":87,"searchDepth":105,"depth":105,"links":98587},[98588,98589,98590,98591,98595,98596,98599,98604,98605],{"id":21640,"depth":105,"text":21641},{"id":21653,"depth":105,"text":21653},{"id":21818,"depth":105,"text":21818},{"id":21837,"depth":105,"text":21837,"children":98592},[98593,98594],{"id":22133,"depth":121,"text":22134},{"id":22167,"depth":121,"text":22168},{"id":22427,"depth":105,"text":22427},{"id":22723,"depth":105,"text":22723,"children":98597},[98598],{"id":22854,"depth":121,"text":22855},{"id":23049,"depth":105,"text":23050,"children":98600},[98601,98602,98603],{"id":23053,"depth":121,"text":23053},{"id":23072,"depth":121,"text":23072},{"id":23376,"depth":121,"text":23376},{"id":23526,"depth":105,"text":23526},{"id":15123,"depth":105,"text":15123,"children":98606},[98607,98608],{"id":24226,"depth":121,"text":24227},{"id":5310,"depth":121,"text":5310},{},{"title":21624,"description":24438},{"loc":24441},[19761,15042,15043,15044,15045,15046],{"id":24448,"title":24449,"body":98614,"created":24632,"description":24633,"extension":843,"filename":24634,"meta":98766,"navigation":846,"path":24636,"seo":98767,"sitemap":98768,"stem":24639,"subject":2862,"tags":98769,"updated":24632,"volume":1863,"__hash__":24645},{"type":8,"value":98615,"toc":98763},[98616,98621,98623,98691,98693,98757,98761],[16,98617,98618],{},[4306,98619,24458],{"href":24456,"rel":98620},[4310],[16,98622,24461],{},[82,98624,98625],{"className":1154,"code":24464,"language":1156,"meta":87,"style":87},[31,98626,98627,98637,98659,98663,98675,98679,98683,98687],{"__ignoreMap":87},[91,98628,98629,98631,98633,98635],{"class":93,"line":94},[91,98630,1349],{"class":566},[91,98632,17223],{"class":101},[91,98634,166],{"class":566},[91,98636,24477],{"class":108},[91,98638,98639,98641,98643,98645,98647,98649,98651,98653,98655,98657],{"class":93,"line":105},[91,98640,24482],{"class":97},[91,98642,2088],{"class":101},[91,98644,1179],{"class":566},[91,98646,24489],{"class":101},[91,98648,1225],{"class":97},[91,98650,795],{"class":101},[91,98652,17243],{"class":566},[91,98654,24498],{"class":101},[91,98656,5637],{"class":108},[91,98658,3487],{"class":101},[91,98660,98661],{"class":93,"line":121},[91,98662,1450],{"emptyLinePlaceholder":846},[91,98664,98665,98667,98669,98671,98673],{"class":93,"line":134},[91,98666,24511],{"class":101},[91,98668,24514],{"class":97},[91,98670,795],{"class":101},[91,98672,24519],{"class":108},[91,98674,3487],{"class":101},[91,98676,98677],{"class":93,"line":228},[91,98678,1450],{"emptyLinePlaceholder":846},[91,98680,98681],{"class":93,"line":250},[91,98682,24530],{"class":1343},[91,98684,98685],{"class":93,"line":260},[91,98686,24535],{"class":1343},[91,98688,98689],{"class":93,"line":274},[91,98690,24540],{"class":1343},[49,98692,24544],{"id":24543},[82,98694,98695],{"className":1154,"code":24547,"language":1156,"meta":87,"style":87},[31,98696,98697,98707,98715,98719,98723,98727,98735,98753],{"__ignoreMap":87},[91,98698,98699,98701,98703,98705],{"class":93,"line":94},[91,98700,1998],{"class":566},[91,98702,2001],{"class":566},[91,98704,24558],{"class":97},[91,98706,2007],{"class":101},[91,98708,98709,98711,98713],{"class":93,"line":105},[91,98710,2254],{"class":566},[91,98712,24567],{"class":97},[91,98714,2030],{"class":101},[91,98716,98717],{"class":93,"line":121},[91,98718,21891],{"class":1343},[91,98720,98721],{"class":93,"line":134},[91,98722,137],{"class":101},[91,98724,98725],{"class":93,"line":228},[91,98726,1450],{"emptyLinePlaceholder":846},[91,98728,98729,98731,98733],{"class":93,"line":250},[91,98730,7471],{"class":566},[91,98732,24588],{"class":97},[91,98734,2007],{"class":101},[91,98736,98737,98739,98741,98743,98745,98747,98749,98751],{"class":93,"line":260},[91,98738,24595],{"class":101},[91,98740,166],{"class":566},[91,98742,24600],{"class":97},[91,98744,24603],{"class":101},[91,98746,24606],{"class":108},[91,98748,24609],{"class":566},[91,98750,24612],{"class":108},[91,98752,1594],{"class":101},[91,98754,98755],{"class":93,"line":274},[91,98756,137],{"class":101},[16,98758,24621,98759,24625],{},[31,98760,24624],{},[829,98762,24628],{},{"title":87,"searchDepth":105,"depth":105,"links":98764},[98765],{"id":24543,"depth":105,"text":24544},{},{"title":24449,"description":24633},{"loc":24636},[24641,24642,24643,24644],{"id":24647,"title":24648,"body":98771,"created":25157,"description":25158,"extension":843,"filename":25159,"meta":99201,"navigation":846,"path":25161,"seo":99202,"sitemap":99203,"stem":25164,"subject":2862,"tags":99204,"updated":25157,"volume":1863,"__hash__":25170},{"type":8,"value":98772,"toc":99193},[98773,98775,98779,98781,98867,98873,98875,98971,98973,98981,98985,99003,99005,99011,99071,99073,99075,99123,99131,99181,99185,99187,99189,99191],[49,98774,24654],{"id":24653},[16,98776,24657,98777,24661],{},[792,98778,24660],{},[757,98780,24665],{"id":24664},[82,98782,98783],{"className":11559,"code":24668,"language":11561,"meta":87,"style":87},[31,98784,98785,98795,98799,98809,98819,98825,98829,98837,98845,98863],{"__ignoreMap":87},[91,98786,98787,98789,98791,98793],{"class":93,"line":94},[91,98788,2499],{"class":566},[91,98790,24677],{"class":101},[91,98792,2505],{"class":566},[91,98794,24682],{"class":169},[91,98796,98797],{"class":93,"line":105},[91,98798,8486],{"class":101},[91,98800,98801,98803,98805,98807],{"class":93,"line":121},[91,98802,22202],{"class":97},[91,98804,112],{"class":101},[91,98806,24695],{"class":169},[91,98808,7560],{"class":101},[91,98810,98811,98813,98815,98817],{"class":93,"line":134},[91,98812,19986],{"class":97},[91,98814,112],{"class":101},[91,98816,24706],{"class":169},[91,98818,7560],{"class":101},[91,98820,98821,98823],{"class":93,"line":228},[91,98822,22214],{"class":97},[91,98824,24715],{"class":101},[91,98826,98827],{"class":93,"line":250},[91,98828,24720],{"class":101},[91,98830,98831,98833,98835],{"class":93,"line":260},[91,98832,24725],{"class":101},[91,98834,24728],{"class":169},[91,98836,7560],{"class":101},[91,98838,98839,98841,98843],{"class":93,"line":274},[91,98840,24735],{"class":101},[91,98842,24738],{"class":169},[91,98844,7560],{"class":101},[91,98846,98847,98849,98851,98853,98855,98857,98859,98861],{"class":93,"line":284},[91,98848,22214],{"class":97},[91,98850,24747],{"class":101},[91,98852,1179],{"class":566},[91,98854,24752],{"class":97},[91,98856,795],{"class":101},[91,98858,24757],{"class":1343},[91,98860,24760],{"class":169},[91,98862,3487],{"class":101},[91,98864,98865],{"class":93,"line":299},[91,98866,137],{"class":101},[16,98868,24769,98869,24773,98871,24776],{},[31,98870,24772],{},[31,98872,24772],{},[771,98874,24780],{"id":24779},[82,98876,98877],{"className":11559,"code":24783,"language":11561,"meta":87,"style":87},[31,98878,98879,98883,98887,98897,98907,98925,98929,98933,98941,98949,98967],{"__ignoreMap":87},[91,98880,98881],{"class":93,"line":94},[91,98882,8486],{"class":101},[91,98884,98885],{"class":93,"line":105},[91,98886,24794],{"class":1343},[91,98888,98889,98891,98893,98895],{"class":93,"line":121},[91,98890,22202],{"class":97},[91,98892,112],{"class":101},[91,98894,24695],{"class":169},[91,98896,7560],{"class":101},[91,98898,98899,98901,98903,98905],{"class":93,"line":134},[91,98900,19986],{"class":97},[91,98902,112],{"class":101},[91,98904,24706],{"class":169},[91,98906,7560],{"class":101},[91,98908,98909,98911,98913,98915,98917,98919,98921,98923],{"class":93,"line":228},[91,98910,24819],{"class":97},[91,98912,24747],{"class":101},[91,98914,1179],{"class":566},[91,98916,24752],{"class":97},[91,98918,795],{"class":101},[91,98920,24830],{"class":1343},[91,98922,24833],{"class":169},[91,98924,3487],{"class":101},[91,98926,98927],{"class":93,"line":250},[91,98928,24720],{"class":101},[91,98930,98931],{"class":93,"line":260},[91,98932,24844],{"class":1343},[91,98934,98935,98937,98939],{"class":93,"line":274},[91,98936,24725],{"class":101},[91,98938,24728],{"class":169},[91,98940,7560],{"class":101},[91,98942,98943,98945,98947],{"class":93,"line":284},[91,98944,24735],{"class":101},[91,98946,24738],{"class":169},[91,98948,7560],{"class":101},[91,98950,98951,98953,98955,98957,98959,98961,98963,98965],{"class":93,"line":299},[91,98952,22214],{"class":97},[91,98954,24747],{"class":101},[91,98956,1179],{"class":566},[91,98958,24752],{"class":97},[91,98960,795],{"class":101},[91,98962,24757],{"class":1343},[91,98964,24760],{"class":169},[91,98966,3487],{"class":101},[91,98968,98969],{"class":93,"line":319},[91,98970,137],{"class":101},[16,98972,24885],{},[24,98974,98975,98977,98979],{},[27,98976,24890],{},[27,98978,24893],{},[27,98980,24896],{},[16,98982,24899,98983,24902],{},[792,98984,24896],{},[24,98986,98987,98995],{},[27,98988,24907,98989,22871,98991,24912,98993,24915],{},[792,98990,24890],{},[792,98992,24896],{},[792,98994,24893],{},[27,98996,24918,98997,22871,98999,24912,99001,24915],{},[792,98998,24893],{},[792,99000,24896],{},[792,99002,24890],{},[49,99004,24928],{"id":24927},[16,99006,24931,99007,24934,99009,24937],{},[31,99008,24927],{},[31,99010,17698],{},[82,99012,99013],{"className":11559,"code":24940,"language":11561,"meta":87,"style":87},[31,99014,99015,99023,99043,99063],{"__ignoreMap":87},[91,99016,99017,99019,99021],{"class":93,"line":94},[91,99018,156],{"class":101},[91,99020,13756],{"class":159},[91,99022,173],{"class":101},[91,99024,99025,99027,99029,99031,99033,99035,99037,99039,99041],{"class":93,"line":105},[91,99026,178],{"class":101},[91,99028,24957],{"class":159},[91,99030,24960],{"class":97},[91,99032,166],{"class":566},[91,99034,24965],{"class":169},[91,99036,16123],{"class":97},[91,99038,166],{"class":566},[91,99040,24972],{"class":169},[91,99042,173],{"class":101},[91,99044,99045,99047,99049,99051,99053,99055,99057,99059,99061],{"class":93,"line":121},[91,99046,178],{"class":101},[91,99048,24957],{"class":159},[91,99050,24960],{"class":97},[91,99052,166],{"class":566},[91,99054,24987],{"class":169},[91,99056,16123],{"class":97},[91,99058,166],{"class":566},[91,99060,24972],{"class":169},[91,99062,173],{"class":101},[91,99064,99065,99067,99069],{"class":93,"line":134},[91,99066,156],{"class":101},[91,99068,13756],{"class":159},[91,99070,173],{"class":101},[16,99072,25006],{},[49,99074,25010],{"id":25009},[82,99076,99077],{"className":11559,"code":25013,"language":11561,"meta":87,"style":87},[31,99078,99079,99091,99103,99115,99119],{"__ignoreMap":87},[91,99080,99081,99083,99085,99087,99089],{"class":93,"line":94},[91,99082,10966],{"class":108},[91,99084,1235],{"class":101},[91,99086,10971],{"class":108},[91,99088,1366],{"class":566},[91,99090,102],{"class":101},[91,99092,99093,99095,99097,99099,99101],{"class":93,"line":105},[91,99094,25032],{"class":97},[91,99096,112],{"class":101},[91,99098,13315],{"class":1172},[91,99100,11859],{"class":566},[91,99102,102],{"class":101},[91,99104,99105,99107,99109,99111,99113],{"class":93,"line":121},[91,99106,13345],{"class":101},[91,99108,25047],{"class":97},[91,99110,795],{"class":101},[91,99112,25052],{"class":169},[91,99114,1594],{"class":101},[91,99116,99117],{"class":93,"line":134},[91,99118,1693],{"class":101},[91,99120,99121],{"class":93,"line":228},[91,99122,137],{"class":101},[16,99124,99125,25067,99127,25071,99129,25074],{},[792,99126,25009],{},[31,99128,25070],{},[31,99130,24927],{},[82,99132,99133],{"className":11559,"code":25077,"language":11561,"meta":87,"style":87},[31,99134,99135,99139,99149,99159,99177],{"__ignoreMap":87},[91,99136,99137],{"class":93,"line":94},[91,99138,8486],{"class":101},[91,99140,99141,99143,99145,99147],{"class":93,"line":105},[91,99142,25088],{"class":97},[91,99144,112],{"class":101},[91,99146,25093],{"class":169},[91,99148,7560],{"class":101},[91,99150,99151,99153,99155,99157],{"class":93,"line":121},[91,99152,25100],{"class":97},[91,99154,112],{"class":101},[91,99156,25105],{"class":169},[91,99158,7560],{"class":101},[91,99160,99161,99163,99165,99167,99169,99171,99173,99175],{"class":93,"line":134},[91,99162,24819],{"class":97},[91,99164,24747],{"class":101},[91,99166,1179],{"class":566},[91,99168,24752],{"class":97},[91,99170,795],{"class":101},[91,99172,25122],{"class":1343},[91,99174,25125],{"class":169},[91,99176,8037],{"class":101},[91,99178,99179],{"class":93,"line":228},[91,99180,137],{"class":101},[16,99182,25134,99183,25137],{},[792,99184,21680],{},[49,99186,19761],{"id":21618},[16,99188,25142],{},[16,99190,25145],{},[829,99192,25148],{},{"title":87,"searchDepth":105,"depth":105,"links":99194},[99195,99198,99199,99200],{"id":24653,"depth":105,"text":24654,"children":99196},[99197],{"id":24664,"depth":121,"text":24665},{"id":24927,"depth":105,"text":24928},{"id":25009,"depth":105,"text":25010},{"id":21618,"depth":105,"text":19761},{},{"title":24648,"description":25158},{"loc":25161},[15042,25166,15043,24654,25167,25168,25169],{"id":25172,"title":25173,"body":99206,"created":29552,"description":29553,"extension":843,"filename":29554,"meta":102962,"navigation":846,"path":29556,"seo":102963,"sitemap":102964,"stem":29559,"subject":2862,"tags":102965,"updated":29552,"volume":4441,"__hash__":29563},{"type":8,"value":99207,"toc":102948},[99208,99210,99212,99214,99216,99218,99222,99230,99232,99234,99238,99724,99736,99764,99768,99770,99788,99790,99944,99956,100266,100268,100276,100284,100294,100300,100512,100518,100524,100732,100738,101288,101292,101306,101314,101330,101332,101338,101560,101566,101568,101574,101576,101614,101620,101646,101650,101652,101664,101716,101718,101720,101722,101728,101796,101798,101808,101830,101834,101836,101922,101924,101944,101946,101950,101952,101956,101958,101962,101968,102088,102090,102092,102272,102274,102432,102434,102438,102442,102446,102542,102550,102552,102554,102558,102674,102682,102684,102686,102824,102830,102944,102946],[49,99209,25179],{"id":25178},[16,99211,25182],{},[16,99213,25185],{},[16,99215,25188],{},[49,99217,25192],{"id":25191},[16,99219,99220],{},[19,99221],{"alt":21,"src":25197},[16,99223,25200,99224,22871,99226,25207,99228,25210],{},[31,99225,25203],{},[31,99227,25206],{},[31,99229,25206],{},[757,99231,25214],{"id":25213},[16,99233,25217],{},[16,99235,25220,99236,25224],{},[31,99237,25223],{},[82,99239,99240],{"className":10952,"code":25227,"language":10954,"meta":87,"style":87},[31,99241,99242,99250,99258,99266,99278,99300,99306,99320,99328,99332,99342,99346,99350,99354,99360,99368,99372,99378,99386,99396,99402,99406,99410,99414,99436,99440,99456,99478,99490,99496,99500,99516,99522,99526,99532,99540,99544,99552,99556,99562,99566,99586,99594,99600,99604,99610,99618,99622,99642,99656,99664,99674,99678,99682,99686,99690,99694,99698,99704,99712,99716,99720],{"__ignoreMap":87},[91,99243,99244,99246,99248],{"class":93,"line":94},[91,99245,17283],{"class":101},[91,99247,25236],{"class":97},[91,99249,25239],{"class":101},[91,99251,99252,99254,99256],{"class":93,"line":105},[91,99253,25244],{"class":101},[91,99255,7557],{"class":108},[91,99257,7560],{"class":101},[91,99259,99260,99262,99264],{"class":93,"line":121},[91,99261,25253],{"class":101},[91,99263,7557],{"class":108},[91,99265,7560],{"class":101},[91,99267,99268,99270,99272,99274,99276],{"class":93,"line":134},[91,99269,11756],{"class":97},[91,99271,112],{"class":101},[91,99273,7471],{"class":566},[91,99275,25268],{"class":97},[91,99277,2007],{"class":101},[91,99279,99280,99282,99284,99286,99288,99290,99292,99294,99296,99298],{"class":93,"line":228},[91,99281,25275],{"class":566},[91,99283,25278],{"class":101},[91,99285,166],{"class":566},[91,99287,25283],{"class":101},[91,99289,8372],{"class":566},[91,99291,25288],{"class":101},[91,99293,17399],{"class":97},[91,99295,25293],{"class":101},[91,99297,1208],{"class":566},[91,99299,25298],{"class":101},[91,99301,99302,99304],{"class":93,"line":250},[91,99303,13326],{"class":566},[91,99305,25305],{"class":101},[91,99307,99308,99310,99312,99314,99316,99318],{"class":93,"line":260},[91,99309,25310],{"class":566},[91,99311,13329],{"class":101},[91,99313,13332],{"class":108},[91,99315,25317],{"class":566},[91,99317,13338],{"class":169},[91,99319,3866],{"class":101},[91,99321,99322,99324,99326],{"class":93,"line":274},[91,99323,25326],{"class":101},[91,99325,25329],{"class":97},[91,99327,7549],{"class":101},[91,99329,99330],{"class":93,"line":284},[91,99331,25336],{"class":101},[91,99333,99334,99336,99338,99340],{"class":93,"line":299},[91,99335,25341],{"class":101},[91,99337,25344],{"class":169},[91,99339,25347],{"class":1343},[91,99341,7560],{"class":101},[91,99343,99344],{"class":93,"line":319},[91,99345,25354],{"class":101},[91,99347,99348],{"class":93,"line":334},[91,99349,25359],{"class":101},[91,99351,99352],{"class":93,"line":355},[91,99353,25364],{"class":101},[91,99355,99356,99358],{"class":93,"line":364},[91,99357,25369],{"class":566},[91,99359,102],{"class":101},[91,99361,99362,99364,99366],{"class":93,"line":378},[91,99363,25326],{"class":101},[91,99365,25329],{"class":97},[91,99367,2030],{"class":101},[91,99369,99370],{"class":93,"line":387},[91,99371,25364],{"class":101},[91,99373,99374,99376],{"class":93,"line":402},[91,99375,25310],{"class":566},[91,99377,25390],{"class":101},[91,99379,99380,99382,99384],{"class":93,"line":422},[91,99381,25395],{"class":101},[91,99383,25329],{"class":97},[91,99385,2030],{"class":101},[91,99387,99388,99390,99392,99394],{"class":93,"line":438},[91,99389,25404],{"class":566},[91,99391,2662],{"class":101},[91,99393,25409],{"class":97},[91,99395,25412],{"class":101},[91,99397,99398,99400],{"class":93,"line":458},[91,99399,25417],{"class":97},[91,99401,17413],{"class":101},[91,99403,99404],{"class":93,"line":467},[91,99405,25424],{"class":101},[91,99407,99408],{"class":93,"line":481},[91,99409,25364],{"class":101},[91,99411,99412],{"class":93,"line":490},[91,99413,10095],{"class":101},[91,99415,99416,99418,99420,99422,99424,99426,99428,99430,99432,99434],{"class":93,"line":3310},[91,99417,11825],{"class":566},[91,99419,25439],{"class":97},[91,99421,8369],{"class":101},[91,99423,5232],{"class":566},[91,99425,7832],{"class":566},[91,99427,25448],{"class":101},[91,99429,8372],{"class":566},[91,99431,25453],{"class":101},[91,99433,1208],{"class":566},[91,99435,8384],{"class":101},[91,99437,99438],{"class":93,"line":3315},[91,99439,10581],{"class":101},[91,99441,99442,99444,99446,99448,99450,99452,99454],{"class":93,"line":3321},[91,99443,25466],{"class":97},[91,99445,112],{"class":101},[91,99447,7471],{"class":566},[91,99449,25473],{"class":97},[91,99451,795],{"class":101},[91,99453,25478],{"class":1172},[91,99455,3866],{"class":101},[91,99457,99458,99460,99462,99464,99466,99468,99470,99472,99474,99476],{"class":93,"line":3327},[91,99459,25275],{"class":566},[91,99461,25278],{"class":101},[91,99463,166],{"class":566},[91,99465,25283],{"class":101},[91,99467,8372],{"class":566},[91,99469,25288],{"class":101},[91,99471,17399],{"class":97},[91,99473,25293],{"class":101},[91,99475,1208],{"class":566},[91,99477,25298],{"class":101},[91,99479,99480,99482,99484,99486,99488],{"class":93,"line":3333},[91,99481,13326],{"class":566},[91,99483,2662],{"class":101},[91,99485,2665],{"class":566},[91,99487,25513],{"class":97},[91,99489,25516],{"class":101},[91,99491,99492,99494],{"class":93,"line":3338},[91,99493,21275],{"class":566},[91,99495,118],{"class":101},[91,99497,99498],{"class":93,"line":3343},[91,99499,10095],{"class":101},[91,99501,99502,99504,99506,99508,99510,99512,99514],{"class":93,"line":7882},[91,99503,13326],{"class":566},[91,99505,13329],{"class":101},[91,99507,13332],{"class":108},[91,99509,25317],{"class":566},[91,99511,13338],{"class":169},[91,99513,25541],{"class":566},[91,99515,25544],{"class":101},[91,99517,99518,99520],{"class":93,"line":7887},[91,99519,25549],{"class":97},[91,99521,2030],{"class":101},[91,99523,99524],{"class":93,"line":7892},[91,99525,10095],{"class":101},[91,99527,99528,99530],{"class":93,"line":7906},[91,99529,13326],{"class":566},[91,99531,25562],{"class":101},[91,99533,99534,99536,99538],{"class":93,"line":7922},[91,99535,25567],{"class":101},[91,99537,17399],{"class":97},[91,99539,25572],{"class":101},[91,99541,99542],{"class":93,"line":7927},[91,99543,10095],{"class":101},[91,99545,99546,99548,99550],{"class":93,"line":7967},[91,99547,25581],{"class":566},[91,99549,19420],{"class":566},[91,99551,25586],{"class":101},[91,99553,99554],{"class":93,"line":7983},[91,99555,25591],{"class":1343},[91,99557,99558,99560],{"class":93,"line":7988},[91,99559,21275],{"class":566},[91,99561,118],{"class":101},[91,99563,99564],{"class":93,"line":7993},[91,99565,10095],{"class":101},[91,99567,99568,99570,99572,99574,99576,99578,99580,99582,99584],{"class":93,"line":8000},[91,99569,25581],{"class":566},[91,99571,19420],{"class":566},[91,99573,2662],{"class":101},[91,99575,25612],{"class":97},[91,99577,8369],{"class":101},[91,99579,5232],{"class":566},[91,99581,7832],{"class":566},[91,99583,25612],{"class":97},[91,99585,25623],{"class":101},[91,99587,99588,99590,99592],{"class":93,"line":8040},[91,99589,25628],{"class":101},[91,99591,166],{"class":566},[91,99593,25633],{"class":101},[91,99595,99596,99598],{"class":93,"line":8046},[91,99597,21275],{"class":566},[91,99599,118],{"class":101},[91,99601,99602],{"class":93,"line":8080},[91,99603,10095],{"class":101},[91,99605,99606,99608],{"class":93,"line":8086},[91,99607,25581],{"class":566},[91,99609,102],{"class":101},[91,99611,99612,99614,99616],{"class":93,"line":12052},[91,99613,25654],{"class":101},[91,99615,166],{"class":566},[91,99617,25633],{"class":101},[91,99619,99620],{"class":93,"line":12070},[91,99621,10095],{"class":101},[91,99623,99624,99626,99628,99630,99632,99634,99636,99638,99640],{"class":93,"line":12087},[91,99625,25667],{"class":101},[91,99627,166],{"class":566},[91,99629,7832],{"class":566},[91,99631,25448],{"class":101},[91,99633,5232],{"class":566},[91,99635,25678],{"class":97},[91,99637,25681],{"class":101},[91,99639,7780],{"class":108},[91,99641,25686],{"class":101},[91,99643,99644,99646,99648,99650,99652,99654],{"class":93,"line":12092},[91,99645,13326],{"class":566},[91,99647,13329],{"class":101},[91,99649,13332],{"class":108},[91,99651,25317],{"class":566},[91,99653,13338],{"class":169},[91,99655,3866],{"class":101},[91,99657,99658,99660,99662],{"class":93,"line":12097},[91,99659,25705],{"class":101},[91,99661,25708],{"class":97},[91,99663,7549],{"class":101},[91,99665,99666,99668,99670,99672],{"class":93,"line":12102},[91,99667,25715],{"class":101},[91,99669,25718],{"class":169},[91,99671,25721],{"class":1343},[91,99673,7560],{"class":101},[91,99675,99676],{"class":93,"line":25726},[91,99677,25729],{"class":101},[91,99679,99680],{"class":93,"line":25732},[91,99681,25735],{"class":101},[91,99683,99684],{"class":93,"line":25738},[91,99685,25741],{"class":101},[91,99687,99688],{"class":93,"line":25744},[91,99689,25747],{"class":101},[91,99691,99692],{"class":93,"line":25750},[91,99693,25753],{"class":101},[91,99695,99696],{"class":93,"line":25756},[91,99697,10095],{"class":101},[91,99699,99700,99702],{"class":93,"line":25761},[91,99701,25581],{"class":566},[91,99703,102],{"class":101},[91,99705,99706,99708,99710],{"class":93,"line":25768},[91,99707,25705],{"class":101},[91,99709,25708],{"class":97},[91,99711,2030],{"class":101},[91,99713,99714],{"class":93,"line":25777},[91,99715,10095],{"class":101},[91,99717,99718],{"class":93,"line":25782},[91,99719,1698],{"class":101},[91,99721,99722],{"class":93,"line":25787},[91,99723,1303],{"class":101},[16,99725,25792,99726,14382,99728,25799,99730,14382,99732,25805,99734,25809],{},[31,99727,25795],{},[31,99729,25798],{},[31,99731,5938],{},[31,99733,25804],{},[31,99735,25808],{},[4530,99737,99738,99742,99744,99746,99750,99754,99758],{},[27,99739,99740,25816],{},[31,99741,25804],{},[27,99743,25819],{},[27,99745,25822],{},[27,99747,99748,25828],{},[31,99749,25827],{},[27,99751,99752,25834],{},[31,99753,25833],{},[27,99755,25837,99756,25841],{},[31,99757,25840],{},[27,99759,25844,99760,25848,99762,25852],{},[31,99761,25847],{},[31,99763,25851],{},[16,99765,99766],{},[19,99767],{"alt":21,"src":25857},[16,99769,25860],{},[24,99771,99772,99774,99776,99778,99780,99784,99786],{},[27,99773,25865],{},[27,99775,25868],{},[27,99777,25871],{},[27,99779,25874],{},[27,99781,25877,99782,25881],{},[792,99783,25880],{},[27,99785,25884],{},[27,99787,25887],{},[757,99789,25891],{"id":25890},[82,99791,99792],{"className":10952,"code":25894,"language":10954,"meta":87,"style":87},[31,99793,99794,99814,99836,99854,99864,99876,99880,99892,99902,99906,99912,99922,99926,99930,99934,99940],{"__ignoreMap":87},[91,99795,99796,99798,99800,99802,99804,99806,99808,99810,99812],{"class":93,"line":94},[91,99797,5626],{"class":566},[91,99799,25903],{"class":101},[91,99801,166],{"class":566},[91,99803,25908],{"class":1343},[91,99805,25911],{"class":566},[91,99807,25914],{"class":1343},[91,99809,2662],{"class":101},[91,99811,7471],{"class":566},[91,99813,25921],{"class":101},[91,99815,99816,99818,99820,99822,99824,99826,99828,99830,99832,99834],{"class":93,"line":105},[91,99817,25926],{"class":108},[91,99819,1235],{"class":101},[91,99821,17514],{"class":108},[91,99823,1235],{"class":101},[91,99825,25935],{"class":97},[91,99827,1366],{"class":566},[91,99829,2001],{"class":566},[91,99831,2662],{"class":101},[91,99833,25944],{"class":1172},[91,99835,25947],{"class":101},[91,99837,99838,99840,99842,99844,99846,99848,99850,99852],{"class":93,"line":121},[91,99839,25926],{"class":108},[91,99841,1235],{"class":101},[91,99843,17514],{"class":108},[91,99845,1235],{"class":101},[91,99847,25960],{"class":97},[91,99849,1366],{"class":566},[91,99851,2001],{"class":566},[91,99853,25921],{"class":101},[91,99855,99856,99858,99860,99862],{"class":93,"line":134},[91,99857,10068],{"class":566},[91,99859,2662],{"class":101},[91,99861,11782],{"class":108},[91,99863,25977],{"class":101},[91,99865,99866,99868,99870,99872,99874],{"class":93,"line":228},[91,99867,25982],{"class":108},[91,99869,25985],{"class":101},[91,99871,166],{"class":566},[91,99873,20228],{"class":108},[91,99875,118],{"class":101},[91,99877,99878],{"class":93,"line":250},[91,99879,3307],{"class":101},[91,99881,99882,99884,99886,99888,99890],{"class":93,"line":260},[91,99883,26000],{"class":566},[91,99885,19420],{"class":566},[91,99887,2662],{"class":101},[91,99889,11782],{"class":108},[91,99891,26009],{"class":101},[91,99893,99894,99896,99898,99900],{"class":93,"line":274},[91,99895,25982],{"class":108},[91,99897,1235],{"class":101},[91,99899,25847],{"class":97},[91,99901,2030],{"class":101},[91,99903,99904],{"class":93,"line":284},[91,99905,3307],{"class":101},[91,99907,99908,99910],{"class":93,"line":299},[91,99909,26000],{"class":566},[91,99911,102],{"class":101},[91,99913,99914,99916,99918,99920],{"class":93,"line":319},[91,99915,26034],{"class":97},[91,99917,795],{"class":101},[91,99919,11782],{"class":108},[91,99921,1594],{"class":101},[91,99923,99924],{"class":93,"line":334},[91,99925,3307],{"class":101},[91,99927,99928],{"class":93,"line":355},[91,99929,19566],{"class":101},[91,99931,99932],{"class":93,"line":364},[91,99933,26053],{"class":1343},[91,99935,99936,99938],{"class":93,"line":378},[91,99937,2695],{"class":566},[91,99939,26060],{"class":101},[91,99941,99942],{"class":93,"line":387},[91,99943,26065],{"class":101},[16,99945,26068,99946,26071,99948,26074,99950,26078,99952,26082,99954,26085],{},[31,99947,25804],{},[31,99949,25708],{},[31,99951,26077],{},[31,99953,26081],{},[31,99955,25847],{},[82,99957,99958],{"className":10952,"code":26088,"language":10954,"meta":87,"style":87},[31,99959,99960,99968,99978,99988,99994,100022,100046,100054,100060,100068,100072,100080,100090,100098,100120,100140,100152,100162,100166,100190,100198,100204,100208,100212,100216,100230,100244,100250,100256,100262],{"__ignoreMap":87},[91,99961,99962,99964,99966],{"class":93,"line":94},[91,99963,7471],{"class":566},[91,99965,26097],{"class":97},[91,99967,2007],{"class":101},[91,99969,99970,99972,99974,99976],{"class":93,"line":105},[91,99971,26104],{"class":101},[91,99973,166],{"class":566},[91,99975,26109],{"class":97},[91,99977,2030],{"class":101},[91,99979,99980,99982,99984,99986],{"class":93,"line":121},[91,99981,26116],{"class":101},[91,99983,166],{"class":566},[91,99985,20228],{"class":108},[91,99987,118],{"class":101},[91,99989,99990,99992],{"class":93,"line":134},[91,99991,26127],{"class":566},[91,99993,26130],{"class":101},[91,99995,99996,99998,100000,100002,100004,100006,100008,100010,100012,100014,100016,100018,100020],{"class":93,"line":228},[91,99997,26135],{"class":101},[91,99999,26138],{"class":97},[91,100001,795],{"class":101},[91,100003,7471],{"class":566},[91,100005,2662],{"class":101},[91,100007,4306],{"class":1172},[91,100009,64],{"class":101},[91,100011,26151],{"class":1172},[91,100013,19432],{"class":101},[91,100015,12966],{"class":566},[91,100017,26158],{"class":101},[91,100019,8409],{"class":566},[91,100021,26163],{"class":101},[91,100023,100024,100026,100028,100030,100032,100034,100036,100038,100040,100042,100044],{"class":93,"line":250},[91,100025,26168],{"class":566},[91,100027,26171],{"class":101},[91,100029,166],{"class":566},[91,100031,11817],{"class":108},[91,100033,26178],{"class":101},[91,100035,156],{"class":566},[91,100037,26183],{"class":101},[91,100039,11811],{"class":108},[91,100041,26188],{"class":101},[91,100043,17243],{"class":566},[91,100045,3866],{"class":101},[91,100047,100048,100050,100052],{"class":93,"line":260},[91,100049,26197],{"class":101},[91,100051,166],{"class":566},[91,100053,26202],{"class":101},[91,100055,100056,100058],{"class":93,"line":274},[91,100057,10068],{"class":566},[91,100059,26209],{"class":101},[91,100061,100062,100064,100066],{"class":93,"line":284},[91,100063,26214],{"class":101},[91,100065,26217],{"class":97},[91,100067,2030],{"class":101},[91,100069,100070],{"class":93,"line":299},[91,100071,3307],{"class":101},[91,100073,100074,100076,100078],{"class":93,"line":319},[91,100075,26228],{"class":101},[91,100077,166],{"class":566},[91,100079,26233],{"class":101},[91,100081,100082,100084,100086,100088],{"class":93,"line":334},[91,100083,26238],{"class":101},[91,100085,166],{"class":566},[91,100087,1363],{"class":108},[91,100089,118],{"class":101},[91,100091,100092,100094,100096],{"class":93,"line":355},[91,100093,26249],{"class":101},[91,100095,25847],{"class":97},[91,100097,2030],{"class":101},[91,100099,100100,100102,100104,100106,100108,100110,100112,100114,100116,100118],{"class":93,"line":364},[91,100101,10068],{"class":566},[91,100103,13329],{"class":101},[91,100105,13332],{"class":108},[91,100107,25317],{"class":566},[91,100109,13338],{"class":169},[91,100111,25541],{"class":566},[91,100113,26270],{"class":101},[91,100115,26273],{"class":566},[91,100117,1363],{"class":108},[91,100119,3866],{"class":101},[91,100121,100122,100124,100126,100128,100130,100132,100134,100136,100138],{"class":93,"line":378},[91,100123,26282],{"class":101},[91,100125,166],{"class":566},[91,100127,26287],{"class":101},[91,100129,7829],{"class":566},[91,100131,11817],{"class":108},[91,100133,1176],{"class":101},[91,100135,8406],{"class":566},[91,100137,6594],{"class":108},[91,100139,118],{"class":101},[91,100141,100142,100144,100146,100148,100150],{"class":93,"line":387},[91,100143,26304],{"class":566},[91,100145,26287],{"class":101},[91,100147,7959],{"class":566},[91,100149,26311],{"class":108},[91,100151,3866],{"class":101},[91,100153,100154,100156,100158,100160],{"class":93,"line":402},[91,100155,26318],{"class":97},[91,100157,795],{"class":101},[91,100159,26323],{"class":169},[91,100161,26326],{"class":566},[91,100163,100164],{"class":93,"line":422},[91,100165,26331],{"class":101},[91,100167,100168,100170,100172,100174,100176,100178,100180,100182,100184,100186,100188],{"class":93,"line":438},[91,100169,26336],{"class":566},[91,100171,26339],{"class":169},[91,100173,26342],{"class":108},[91,100175,2139],{"class":169},[91,100177,1235],{"class":101},[91,100179,26349],{"class":97},[91,100181,26352],{"class":101},[91,100183,2139],{"class":169},[91,100185,26342],{"class":108},[91,100187,2139],{"class":169},[91,100189,3487],{"class":101},[91,100191,100192,100194,100196],{"class":93,"line":458},[91,100193,26365],{"class":566},[91,100195,26368],{"class":169},[91,100197,26371],{"class":101},[91,100199,100200,100202],{"class":93,"line":467},[91,100201,26376],{"class":566},[91,100203,118],{"class":101},[91,100205,100206],{"class":93,"line":481},[91,100207,26383],{"class":101},[91,100209,100210],{"class":93,"line":490},[91,100211,3307],{"class":101},[91,100213,100214],{"class":93,"line":3310},[91,100215,1693],{"class":101},[91,100217,100218,100220,100222,100224,100226,100228],{"class":93,"line":3315},[91,100219,26127],{"class":566},[91,100221,26398],{"class":101},[91,100223,166],{"class":566},[91,100225,26403],{"class":101},[91,100227,8026],{"class":97},[91,100229,2030],{"class":101},[91,100231,100232,100234,100236,100238,100240,100242],{"class":93,"line":3321},[91,100233,26127],{"class":566},[91,100235,26414],{"class":101},[91,100237,166],{"class":566},[91,100239,26183],{"class":101},[91,100241,8026],{"class":97},[91,100243,2030],{"class":101},[91,100245,100246,100248],{"class":93,"line":3327},[91,100247,26427],{"class":97},[91,100249,2030],{"class":101},[91,100251,100252,100254],{"class":93,"line":3333},[91,100253,26434],{"class":97},[91,100255,26437],{"class":101},[91,100257,100258,100260],{"class":93,"line":3338},[91,100259,26442],{"class":97},[91,100261,26445],{"class":101},[91,100263,100264],{"class":93,"line":3343},[91,100265,137],{"class":101},[16,100267,26452],{},[4530,100269,100270,100272,100274],{},[27,100271,26457],{},[27,100273,26460],{},[27,100275,26463],{},[16,100277,26466,100278,25799,100280,26471,100282,26475],{},[31,100279,26217],{},[31,100281,25847],{},[31,100283,26474],{},[16,100285,26478,100286,26482,100288,26486,100290,26490,100292,26494],{},[31,100287,26481],{},[31,100289,26485],{},[792,100291,26489],{},[31,100293,26493],{},[16,100295,26497,100296,26501,100298,26475],{},[31,100297,26500],{},[31,100299,25851],{},[82,100301,100302],{"className":10952,"code":26506,"language":10954,"meta":87,"style":87},[31,100303,100304,100322,100332,100348,100362,100366,100370,100374,100386,100390,100402,100412,100422,100454,100472,100476,100482,100496,100500,100504,100508],{"__ignoreMap":87},[91,100305,100306,100308,100310,100312,100314,100316,100318,100320],{"class":93,"line":94},[91,100307,25891],{"class":108},[91,100309,1235],{"class":101},[91,100311,17514],{"class":108},[91,100313,1235],{"class":101},[91,100315,25847],{"class":97},[91,100317,1366],{"class":566},[91,100319,2001],{"class":566},[91,100321,25921],{"class":101},[91,100323,100324,100326,100328,100330],{"class":93,"line":105},[91,100325,8218],{"class":566},[91,100327,2662],{"class":101},[91,100329,11782],{"class":108},[91,100331,26537],{"class":101},[91,100333,100334,100336,100338,100340,100342,100344,100346],{"class":93,"line":121},[91,100335,26127],{"class":566},[91,100337,25278],{"class":101},[91,100339,166],{"class":566},[91,100341,11795],{"class":108},[91,100343,1235],{"class":101},[91,100345,5938],{"class":97},[91,100347,2030],{"class":101},[91,100349,100350,100352,100354,100356,100358,100360],{"class":93,"line":134},[91,100351,8218],{"class":566},[91,100353,26560],{"class":101},[91,100355,9356],{"class":566},[91,100357,11795],{"class":108},[91,100359,26567],{"class":101},[91,100361,26570],{"class":566},[91,100363,100364],{"class":93,"line":228},[91,100365,26575],{"class":1343},[91,100367,100368],{"class":93,"line":250},[91,100369,26580],{"class":1343},[91,100371,100372],{"class":93,"line":260},[91,100373,26585],{"class":1343},[91,100375,100376,100378,100380,100382,100384],{"class":93,"line":274},[91,100377,26590],{"class":97},[91,100379,8369],{"class":101},[91,100381,7829],{"class":566},[91,100383,11795],{"class":108},[91,100385,26599],{"class":101},[91,100387,100388],{"class":93,"line":284},[91,100389,26604],{"class":1343},[91,100391,100392,100394,100396,100398,100400],{"class":93,"line":299},[91,100393,25275],{"class":566},[91,100395,26611],{"class":101},[91,100397,166],{"class":566},[91,100399,11795],{"class":108},[91,100401,26618],{"class":101},[91,100403,100404,100406,100408,100410],{"class":93,"line":319},[91,100405,12019],{"class":108},[91,100407,26567],{"class":101},[91,100409,166],{"class":566},[91,100411,8384],{"class":101},[91,100413,100414,100416,100418,100420],{"class":93,"line":334},[91,100415,13326],{"class":566},[91,100417,2662],{"class":101},[91,100419,11782],{"class":108},[91,100421,26639],{"class":101},[91,100423,100424,100426,100428,100430,100432,100434,100436,100438,100440,100442,100444,100446,100448,100450,100452],{"class":93,"line":355},[91,100425,26644],{"class":566},[91,100427,26647],{"class":101},[91,100429,166],{"class":566},[91,100431,26652],{"class":169},[91,100433,26342],{"class":108},[91,100435,2139],{"class":169},[91,100437,1235],{"class":101},[91,100439,26349],{"class":97},[91,100441,795],{"class":101},[91,100443,11782],{"class":108},[91,100445,26667],{"class":101},[91,100447,2139],{"class":169},[91,100449,26342],{"class":108},[91,100451,2139],{"class":169},[91,100453,1594],{"class":101},[91,100455,100456,100458,100460,100462,100464,100466,100468,100470],{"class":93,"line":364},[91,100457,26680],{"class":97},[91,100459,795],{"class":101},[91,100461,11782],{"class":108},[91,100463,26687],{"class":101},[91,100465,11782],{"class":108},[91,100467,26692],{"class":101},[91,100469,11782],{"class":108},[91,100471,26697],{"class":101},[91,100473,100474],{"class":93,"line":378},[91,100475,10095],{"class":101},[91,100477,100478,100480],{"class":93,"line":387},[91,100479,25581],{"class":566},[91,100481,102],{"class":101},[91,100483,100484,100486,100488,100490,100492,100494],{"class":93,"line":402},[91,100485,26712],{"class":108},[91,100487,26715],{"class":101},[91,100489,17399],{"class":97},[91,100491,795],{"class":101},[91,100493,11782],{"class":108},[91,100495,26724],{"class":101},[91,100497,100498],{"class":93,"line":422},[91,100499,10095],{"class":101},[91,100501,100502],{"class":93,"line":438},[91,100503,1693],{"class":101},[91,100505,100506],{"class":93,"line":458},[91,100507,1693],{"class":101},[91,100509,100510],{"class":93,"line":467},[91,100511,20036],{"class":101},[16,100513,26743,100514,26746,100516,26749],{},[31,100515,25847],{},[31,100517,25847],{},[16,100519,26752,100520,26756,100522,26759],{},[31,100521,26755],{},[31,100523,5938],{},[82,100525,100526],{"className":10952,"code":26762,"language":10954,"meta":87,"style":87},[31,100527,100528,100546,100556,100562,100574,100580,100594,100598,100604,100614,100644,100648,100654,100660,100664,100668,100674,100678,100682,100692,100698,100702,100708,100718,100722,100728],{"__ignoreMap":87},[91,100529,100530,100532,100534,100536,100538,100540,100542,100544],{"class":93,"line":94},[91,100531,25891],{"class":108},[91,100533,1235],{"class":101},[91,100535,17514],{"class":108},[91,100537,1235],{"class":101},[91,100539,5938],{"class":97},[91,100541,1366],{"class":566},[91,100543,2001],{"class":566},[91,100545,25921],{"class":101},[91,100547,100548,100550,100552,100554],{"class":93,"line":105},[91,100549,26787],{"class":97},[91,100551,795],{"class":101},[91,100553,11782],{"class":108},[91,100555,1594],{"class":101},[91,100557,100558,100560],{"class":93,"line":121},[91,100559,26798],{"class":566},[91,100561,8384],{"class":101},[91,100563,100564,100566,100568,100570,100572],{"class":93,"line":134},[91,100565,26798],{"class":566},[91,100567,26807],{"class":101},[91,100569,166],{"class":566},[91,100571,11795],{"class":108},[91,100573,26814],{"class":101},[91,100575,100576,100578],{"class":93,"line":228},[91,100577,2012],{"class":566},[91,100579,102],{"class":101},[91,100581,100582,100584,100586,100588,100590,100592],{"class":93,"line":250},[91,100583,26825],{"class":101},[91,100585,166],{"class":566},[91,100587,11795],{"class":108},[91,100589,26832],{"class":101},[91,100591,17399],{"class":97},[91,100593,26837],{"class":101},[91,100595,100596],{"class":93,"line":260},[91,100597,1698],{"class":101},[91,100599,100600,100602],{"class":93,"line":274},[91,100601,26846],{"class":566},[91,100603,26849],{"class":101},[91,100605,100606,100608,100610,100612],{"class":93,"line":284},[91,100607,8218],{"class":566},[91,100609,2662],{"class":101},[91,100611,11782],{"class":108},[91,100613,26639],{"class":101},[91,100615,100616,100618,100620,100622,100624,100626,100628,100630,100632,100634,100636,100638,100640,100642],{"class":93,"line":299},[91,100617,26864],{"class":97},[91,100619,26867],{"class":101},[91,100621,26870],{"class":169},[91,100623,26342],{"class":108},[91,100625,2139],{"class":169},[91,100627,1235],{"class":101},[91,100629,26349],{"class":97},[91,100631,795],{"class":101},[91,100633,11782],{"class":108},[91,100635,26667],{"class":101},[91,100637,2139],{"class":169},[91,100639,26342],{"class":108},[91,100641,2139],{"class":169},[91,100643,6568],{"class":101},[91,100645,100646],{"class":93,"line":319},[91,100647,1693],{"class":101},[91,100649,100650,100652],{"class":93,"line":334},[91,100651,11838],{"class":566},[91,100653,102],{"class":101},[91,100655,100656,100658],{"class":93,"line":355},[91,100657,8230],{"class":566},[91,100659,26909],{"class":101},[91,100661,100662],{"class":93,"line":364},[91,100663,1693],{"class":101},[91,100665,100666],{"class":93,"line":378},[91,100667,1698],{"class":101},[91,100669,100670,100672],{"class":93,"line":387},[91,100671,26922],{"class":566},[91,100673,102],{"class":101},[91,100675,100676],{"class":93,"line":402},[91,100677,26929],{"class":1343},[91,100679,100680],{"class":93,"line":422},[91,100681,26934],{"class":1343},[91,100683,100684,100686,100688,100690],{"class":93,"line":438},[91,100685,8218],{"class":566},[91,100687,2662],{"class":101},[91,100689,11782],{"class":108},[91,100691,26599],{"class":101},[91,100693,100694,100696],{"class":93,"line":458},[91,100695,26949],{"class":97},[91,100697,17413],{"class":101},[91,100699,100700],{"class":93,"line":467},[91,100701,1693],{"class":101},[91,100703,100704,100706],{"class":93,"line":481},[91,100705,26960],{"class":97},[91,100707,2030],{"class":101},[91,100709,100710,100712,100714,100716],{"class":93,"line":490},[91,100711,11922],{"class":108},[91,100713,1235],{"class":101},[91,100715,26971],{"class":97},[91,100717,2030],{"class":101},[91,100719,100720],{"class":93,"line":3310},[91,100721,1698],{"class":101},[91,100723,100724,100726],{"class":93,"line":3315},[91,100725,2695],{"class":566},[91,100727,8384],{"class":101},[91,100729,100730],{"class":93,"line":3321},[91,100731,20036],{"class":101},[16,100733,26990,100734,26994,100736,26997],{},[31,100735,26993],{},[31,100737,25203],{},[82,100739,100740],{"className":10952,"code":27000,"language":10954,"meta":87,"style":87},[31,100741,100742,100762,100770,100780,100788,100792,100802,100808,100828,100838,100848,100858,100874,100890,100896,100912,100918,100936,100942,100950,100956,100974,100978,100982,100988,100998,101010,101014,101018,101028,101038,101050,101060,101064,101068,101072,101086,101112,101138,101142,101146,101150,101154,101168,101178,101182,101192,101198,101226,101234,101238,101242,101254,101264,101274,101278,101284],{"__ignoreMap":87},[91,100743,100744,100746,100748,100750,100752,100754,100756,100758,100760],{"class":93,"line":94},[91,100745,7471],{"class":566},[91,100747,27009],{"class":97},[91,100749,795],{"class":101},[91,100751,27014],{"class":1172},[91,100753,64],{"class":101},[91,100755,27019],{"class":1172},[91,100757,64],{"class":101},[91,100759,27024],{"class":1172},[91,100761,3866],{"class":101},[91,100763,100764,100766,100768],{"class":93,"line":105},[91,100765,27031],{"class":101},[91,100767,166],{"class":566},[91,100769,27036],{"class":101},[91,100771,100772,100774,100776,100778],{"class":93,"line":121},[91,100773,2439],{"class":566},[91,100775,2662],{"class":101},[91,100777,2665],{"class":566},[91,100779,27047],{"class":101},[91,100781,100782,100784,100786],{"class":93,"line":134},[91,100783,27052],{"class":101},[91,100785,166],{"class":566},[91,100787,27057],{"class":101},[91,100789,100790],{"class":93,"line":228},[91,100791,1698],{"class":101},[91,100793,100794,100796,100798,100800],{"class":93,"line":250},[91,100795,27066],{"class":97},[91,100797,27069],{"class":101},[91,100799,27072],{"class":169},[91,100801,1594],{"class":101},[91,100803,100804,100806],{"class":93,"line":260},[91,100805,26798],{"class":566},[91,100807,27081],{"class":101},[91,100809,100810,100812,100814,100816,100818,100820,100822,100824,100826],{"class":93,"line":274},[91,100811,2439],{"class":566},[91,100813,13329],{"class":101},[91,100815,13332],{"class":108},[91,100817,25317],{"class":566},[91,100819,13338],{"class":169},[91,100821,25541],{"class":566},[91,100823,27098],{"class":101},[91,100825,5232],{"class":566},[91,100827,27103],{"class":101},[91,100829,100830,100832,100834,100836],{"class":93,"line":284},[91,100831,27108],{"class":97},[91,100833,1366],{"class":566},[91,100835,2001],{"class":566},[91,100837,25921],{"class":101},[91,100839,100840,100842,100844,100846],{"class":93,"line":299},[91,100841,25275],{"class":566},[91,100843,27121],{"class":101},[91,100845,166],{"class":566},[91,100847,27126],{"class":101},[91,100849,100850,100852,100854,100856],{"class":93,"line":319},[91,100851,25275],{"class":566},[91,100853,27133],{"class":101},[91,100855,166],{"class":566},[91,100857,27138],{"class":101},[91,100859,100860,100862,100864,100866,100868,100870,100872],{"class":93,"line":334},[91,100861,25275],{"class":566},[91,100863,27145],{"class":101},[91,100865,166],{"class":566},[91,100867,27150],{"class":169},[91,100869,1235],{"class":101},[91,100871,26349],{"class":97},[91,100873,27157],{"class":101},[91,100875,100876,100878,100880,100882,100884,100886,100888],{"class":93,"line":355},[91,100877,25275],{"class":566},[91,100879,27164],{"class":101},[91,100881,166],{"class":566},[91,100883,27169],{"class":169},[91,100885,1235],{"class":101},[91,100887,26349],{"class":97},[91,100889,27157],{"class":101},[91,100891,100892,100894],{"class":93,"line":364},[91,100893,27180],{"class":97},[91,100895,27183],{"class":101},[91,100897,100898,100900,100902,100904,100906,100908,100910],{"class":93,"line":378},[91,100899,27188],{"class":566},[91,100901,27191],{"class":101},[91,100903,166],{"class":566},[91,100905,27196],{"class":101},[91,100907,27199],{"class":97},[91,100909,27202],{"class":101},[91,100911,12474],{"class":566},[91,100913,100914,100916],{"class":93,"line":387},[91,100915,27180],{"class":97},[91,100917,27211],{"class":101},[91,100919,100920,100922,100924,100926,100928,100930,100932,100934],{"class":93,"line":402},[91,100921,27216],{"class":97},[91,100923,795],{"class":101},[91,100925,27221],{"class":169},[91,100927,1235],{"class":101},[91,100929,26349],{"class":97},[91,100931,27228],{"class":101},[91,100933,27231],{"class":169},[91,100935,27234],{"class":101},[91,100937,100938,100940],{"class":93,"line":422},[91,100939,27180],{"class":97},[91,100941,27183],{"class":101},[91,100943,100944,100946,100948],{"class":93,"line":438},[91,100945,27245],{"class":101},[91,100947,27248],{"class":97},[91,100949,27251],{"class":101},[91,100951,100952,100954],{"class":93,"line":458},[91,100953,27180],{"class":97},[91,100955,27211],{"class":101},[91,100957,100958,100960,100962,100964,100966,100968,100970,100972],{"class":93,"line":467},[91,100959,27216],{"class":97},[91,100961,795],{"class":101},[91,100963,27221],{"class":169},[91,100965,1235],{"class":101},[91,100967,26349],{"class":97},[91,100969,27228],{"class":101},[91,100971,27274],{"class":169},[91,100973,27234],{"class":101},[91,100975,100976],{"class":93,"line":481},[91,100977,19566],{"class":101},[91,100979,100980],{"class":93,"line":490},[91,100981,1698],{"class":101},[91,100983,100984,100986],{"class":93,"line":3310},[91,100985,27289],{"class":566},[91,100987,102],{"class":101},[91,100989,100990,100992,100994,100996],{"class":93,"line":3315},[91,100991,27108],{"class":97},[91,100993,1366],{"class":566},[91,100995,2001],{"class":566},[91,100997,25921],{"class":101},[91,100999,101000,101002,101004,101006,101008],{"class":93,"line":3321},[91,101001,27245],{"class":101},[91,101003,27248],{"class":97},[91,101005,27310],{"class":101},[91,101007,27199],{"class":97},[91,101009,27315],{"class":101},[91,101011,101012],{"class":93,"line":3327},[91,101013,19566],{"class":101},[91,101015,101016],{"class":93,"line":3333},[91,101017,1698],{"class":101},[91,101019,101020,101022,101024,101026],{"class":93,"line":3338},[91,101021,26798],{"class":566},[91,101023,27330],{"class":101},[91,101025,166],{"class":566},[91,101027,102],{"class":101},[91,101029,101030,101032,101034,101036],{"class":93,"line":3343},[91,101031,27339],{"class":97},[91,101033,112],{"class":101},[91,101035,7471],{"class":566},[91,101037,25921],{"class":101},[91,101039,101040,101042,101044,101046,101048],{"class":93,"line":7882},[91,101041,13326],{"class":566},[91,101043,27352],{"class":101},[91,101045,5232],{"class":566},[91,101047,7832],{"class":566},[91,101049,27359],{"class":101},[91,101051,101052,101054,101056,101058],{"class":93,"line":7887},[91,101053,27364],{"class":97},[91,101055,27069],{"class":101},[91,101057,27369],{"class":169},[91,101059,1594],{"class":101},[91,101061,101062],{"class":93,"line":7892},[91,101063,10095],{"class":101},[91,101065,101066],{"class":93,"line":7906},[91,101067,1693],{"class":101},[91,101069,101070],{"class":93,"line":7922},[91,101071,8083],{"class":101},[91,101073,101074,101076,101078,101080,101082,101084],{"class":93,"line":7927},[91,101075,2439],{"class":566},[91,101077,13329],{"class":101},[91,101079,13332],{"class":108},[91,101081,25317],{"class":566},[91,101083,13338],{"class":169},[91,101085,3866],{"class":101},[91,101087,101088,101090,101092,101094,101096,101098,101100,101102,101104,101106,101108,101110],{"class":93,"line":7967},[91,101089,27402],{"class":101},[91,101091,27405],{"class":97},[91,101093,1366],{"class":566},[91,101095,2001],{"class":566},[91,101097,2662],{"class":101},[91,101099,7658],{"class":1172},[91,101101,19432],{"class":101},[91,101103,12966],{"class":566},[91,101105,27420],{"class":97},[91,101107,27069],{"class":101},[91,101109,27425],{"class":169},[91,101111,27428],{"class":101},[91,101113,101114,101116,101118,101120,101122,101124,101126,101128,101130,101132,101134,101136],{"class":93,"line":7983},[91,101115,27402],{"class":101},[91,101117,27435],{"class":97},[91,101119,1366],{"class":566},[91,101121,2001],{"class":566},[91,101123,2662],{"class":101},[91,101125,7658],{"class":1172},[91,101127,19432],{"class":101},[91,101129,12966],{"class":566},[91,101131,27420],{"class":97},[91,101133,27069],{"class":101},[91,101135,27454],{"class":169},[91,101137,27428],{"class":101},[91,101139,101140],{"class":93,"line":7988},[91,101141,1698],{"class":101},[91,101143,101144],{"class":93,"line":7993},[91,101145,27465],{"class":1343},[91,101147,101148],{"class":93,"line":8000},[91,101149,27470],{"class":1343},[91,101151,101152],{"class":93,"line":8040},[91,101153,27475],{"class":1343},[91,101155,101156,101158,101160,101162,101164,101166],{"class":93,"line":8046},[91,101157,13197],{"class":566},[91,101159,27482],{"class":97},[91,101161,27485],{"class":101},[91,101163,7557],{"class":108},[91,101165,27490],{"class":1343},[91,101167,1594],{"class":101},[91,101169,101170,101172,101174,101176],{"class":93,"line":8080},[91,101171,27497],{"class":101},[91,101173,166],{"class":566},[91,101175,20253],{"class":108},[91,101177,118],{"class":101},[91,101179,101180],{"class":93,"line":8086},[91,101181,27508],{"class":1343},[91,101183,101184,101186,101188,101190],{"class":93,"line":12052},[91,101185,26798],{"class":566},[91,101187,27515],{"class":101},[91,101189,166],{"class":566},[91,101191,27520],{"class":101},[91,101193,101194,101196],{"class":93,"line":12070},[91,101195,2439],{"class":566},[91,101197,27527],{"class":101},[91,101199,101200,101202,101204,101206,101208,101210,101212,101214,101216,101218,101220,101222,101224],{"class":93,"line":12087},[91,101201,26168],{"class":566},[91,101203,2662],{"class":101},[91,101205,5626],{"class":566},[91,101207,17223],{"class":101},[91,101209,166],{"class":566},[91,101211,11817],{"class":108},[91,101213,17230],{"class":101},[91,101215,156],{"class":566},[91,101217,27548],{"class":101},[91,101219,11811],{"class":108},[91,101221,17240],{"class":101},[91,101223,17243],{"class":566},[91,101225,3866],{"class":101},[91,101227,101228,101230,101232],{"class":93,"line":12092},[91,101229,27561],{"class":101},[91,101231,25847],{"class":97},[91,101233,2030],{"class":101},[91,101235,101236],{"class":93,"line":12097},[91,101237,1693],{"class":101},[91,101239,101240],{"class":93,"line":12102},[91,101241,1698],{"class":101},[91,101243,101244,101246,101248,101250,101252],{"class":93,"line":25726},[91,101245,2439],{"class":566},[91,101247,27580],{"class":101},[91,101249,11788],{"class":566},[91,101251,1363],{"class":108},[91,101253,3866],{"class":101},[91,101255,101256,101258,101260,101262],{"class":93,"line":25732},[91,101257,27591],{"class":101},[91,101259,166],{"class":566},[91,101261,20228],{"class":108},[91,101263,118],{"class":101},[91,101265,101266,101268,101270,101272],{"class":93,"line":25738},[91,101267,27602],{"class":97},[91,101269,27069],{"class":101},[91,101271,27607],{"class":169},[91,101273,1594],{"class":101},[91,101275,101276],{"class":93,"line":25744},[91,101277,1698],{"class":101},[91,101279,101280,101282],{"class":93,"line":25750},[91,101281,2695],{"class":566},[91,101283,27620],{"class":101},[91,101285,101286],{"class":93,"line":25756},[91,101287,137],{"class":101},[16,101289,101290,27630],{},[31,101291,27629],{},[4530,101293,101294,101296,101298,101304],{},[27,101295,27635],{},[27,101297,27638],{},[27,101299,101300,27644,101302,27648],{},[31,101301,27643],{},[31,101303,27647],{},[27,101305,27651],{},[16,101307,27654,101308,27657,101310,27660,101312,27663],{},[31,101309,25203],{},[31,101311,27643],{},[31,101313,25203],{},[82,101315,101316],{"className":10952,"code":27666,"language":10954,"meta":87,"style":87},[31,101317,101318],{"__ignoreMap":87},[91,101319,101320,101322,101324,101326,101328],{"class":93,"line":94},[91,101321,27673],{"class":101},[91,101323,166],{"class":566},[91,101325,27678],{"class":101},[91,101327,17399],{"class":97},[91,101329,27683],{"class":101},[16,101331,27686],{},[16,101333,27689,101334,27693,101336,27696],{},[31,101335,27692],{},[31,101337,27647],{},[82,101339,101340],{"className":11559,"code":27699,"language":11561,"meta":87,"style":87},[31,101341,101342,101368,101380,101390,101400,101412,101420,101424,101434,101438,101454,101462,101466,101478,101482,101488,101494,101504,101508,101514,101522,101526,101544,101552,101556],{"__ignoreMap":87},[91,101343,101344,101346,101348,101350,101352,101354,101356,101358,101360,101362,101364,101366],{"class":93,"line":94},[91,101345,15042],{"class":108},[91,101347,1235],{"class":101},[91,101349,17514],{"class":108},[91,101351,1235],{"class":101},[91,101353,27248],{"class":97},[91,101355,1366],{"class":566},[91,101357,2001],{"class":566},[91,101359,2662],{"class":101},[91,101361,27692],{"class":1172},[91,101363,64],{"class":101},[91,101365,27024],{"class":1172},[91,101367,3866],{"class":101},[91,101369,101370,101372,101374,101376,101378],{"class":93,"line":105},[91,101371,26127],{"class":566},[91,101373,26807],{"class":101},[91,101375,166],{"class":566},[91,101377,11795],{"class":108},[91,101379,118],{"class":101},[91,101381,101382,101384,101386,101388],{"class":93,"line":121},[91,101383,26127],{"class":566},[91,101385,27746],{"class":101},[91,101387,166],{"class":566},[91,101389,27751],{"class":101},[91,101391,101392,101394,101396,101398],{"class":93,"line":134},[91,101393,26127],{"class":566},[91,101395,27758],{"class":101},[91,101397,166],{"class":566},[91,101399,27763],{"class":101},[91,101401,101402,101404,101406,101408,101410],{"class":93,"line":228},[91,101403,26127],{"class":566},[91,101405,27770],{"class":101},[91,101407,166],{"class":566},[91,101409,27775],{"class":97},[91,101411,27778],{"class":101},[91,101413,101414,101416,101418],{"class":93,"line":250},[91,101415,27783],{"class":101},[91,101417,166],{"class":566},[91,101419,27788],{"class":101},[91,101421,101422],{"class":93,"line":260},[91,101423,1450],{"emptyLinePlaceholder":846},[91,101425,101426,101428,101430,101432],{"class":93,"line":274},[91,101427,8218],{"class":566},[91,101429,2662],{"class":101},[91,101431,2665],{"class":566},[91,101433,27803],{"class":101},[91,101435,101436],{"class":93,"line":284},[91,101437,27808],{"class":1343},[91,101439,101440,101442,101444,101446,101448,101450,101452],{"class":93,"line":299},[91,101441,27813],{"class":101},[91,101443,166],{"class":566},[91,101445,27196],{"class":101},[91,101447,27820],{"class":97},[91,101449,27823],{"class":101},[91,101451,7780],{"class":108},[91,101453,1594],{"class":101},[91,101455,101456,101458,101460],{"class":93,"line":319},[91,101457,12893],{"class":101},[91,101459,5258],{"class":566},[91,101461,102],{"class":101},[91,101463,101464],{"class":93,"line":334},[91,101465,27840],{"class":1343},[91,101467,101468,101470,101472,101474,101476],{"class":93,"line":355},[91,101469,27813],{"class":101},[91,101471,166],{"class":566},[91,101473,27196],{"class":101},[91,101475,27820],{"class":97},[91,101477,27853],{"class":101},[91,101479,101480],{"class":93,"line":364},[91,101481,1693],{"class":101},[91,101483,101484,101486],{"class":93,"line":378},[91,101485,27862],{"class":97},[91,101487,2030],{"class":101},[91,101489,101490,101492],{"class":93,"line":387},[91,101491,8218],{"class":566},[91,101493,27871],{"class":101},[91,101495,101496,101498,101500,101502],{"class":93,"line":402},[91,101497,27876],{"class":101},[91,101499,166],{"class":566},[91,101501,1363],{"class":108},[91,101503,118],{"class":101},[91,101505,101506],{"class":93,"line":422},[91,101507,1693],{"class":101},[91,101509,101510,101512],{"class":93,"line":438},[91,101511,8218],{"class":566},[91,101513,27893],{"class":101},[91,101515,101516,101518,101520],{"class":93,"line":458},[91,101517,27898],{"class":101},[91,101519,166],{"class":566},[91,101521,27620],{"class":101},[91,101523,101524],{"class":93,"line":467},[91,101525,1693],{"class":101},[91,101527,101528,101530,101532,101534,101536,101538,101540,101542],{"class":93,"line":481},[91,101529,8218],{"class":566},[91,101531,27580],{"class":101},[91,101533,5232],{"class":566},[91,101535,27917],{"class":101},[91,101537,5232],{"class":566},[91,101539,27922],{"class":101},[91,101541,9382],{"class":566},[91,101543,27927],{"class":101},[91,101545,101546,101548,101550],{"class":93,"line":490},[91,101547,27932],{"class":101},[91,101549,166],{"class":566},[91,101551,27751],{"class":101},[91,101553,101554],{"class":93,"line":3310},[91,101555,1693],{"class":101},[91,101557,101558],{"class":93,"line":3315},[91,101559,8083],{"class":101},[16,101561,101562,27950,101564,27954],{},[31,101563,27949],{},[31,101565,27953],{},[49,101567,27958],{"id":27957},[16,101569,27961,101570,22871,101572,27966],{},[31,101571,25203],{},[31,101573,25206],{},[757,101575,27970],{"id":27969},[82,101577,101578],{"className":10952,"code":27973,"language":10954,"meta":87,"style":87},[31,101579,101580,101586,101594,101598,101602],{"__ignoreMap":87},[91,101581,101582,101584],{"class":93,"line":94},[91,101583,7901],{"class":97},[91,101585,8789],{"class":101},[91,101587,101588,101590,101592],{"class":93,"line":105},[91,101589,27986],{"class":97},[91,101591,112],{"class":101},[91,101593,27991],{"class":108},[91,101595,101596],{"class":93,"line":121},[91,101597,137],{"class":101},[91,101599,101600],{"class":93,"line":134},[91,101601,1450],{"emptyLinePlaceholder":846},[91,101603,101604,101606,101608,101610,101612],{"class":93,"line":228},[91,101605,11782],{"class":108},[91,101607,28006],{"class":101},[91,101609,166],{"class":566},[91,101611,16523],{"class":108},[91,101613,118],{"class":101},[16,101615,28015,101616,28019,101618,28023],{},[31,101617,28018],{},[31,101619,28022],{},[82,101621,101622],{"className":10952,"code":28026,"language":10954,"meta":87,"style":87},[31,101623,101624],{"__ignoreMap":87},[91,101625,101626,101628,101630,101632,101634,101636,101638,101640,101642,101644],{"class":93,"line":94},[91,101627,11782],{"class":108},[91,101629,1235],{"class":101},[91,101631,28037],{"class":97},[91,101633,795],{"class":101},[91,101635,11782],{"class":108},[91,101637,64],{"class":101},[91,101639,28046],{"class":169},[91,101641,64],{"class":101},[91,101643,591],{"class":108},[91,101645,1594],{"class":101},[16,101647,28055,101648,28058],{},[31,101649,28037],{},[757,101651,28062],{"id":28061},[16,101653,101654,14431,101656,28071,101658,28075,101660,28079,101662,28083],{},[31,101655,28067],{},[31,101657,28070],{},[31,101659,28074],{},[31,101661,28078],{},[31,101663,28082],{},[82,101665,101666],{"className":10952,"code":28086,"language":10954,"meta":87,"style":87},[31,101667,101668,101690],{"__ignoreMap":87},[91,101669,101670,101672,101674,101676,101678,101680,101682,101684,101686,101688],{"class":93,"line":94},[91,101671,17283],{"class":101},[91,101673,28095],{"class":97},[91,101675,795],{"class":101},[91,101677,11782],{"class":108},[91,101679,28102],{"class":101},[91,101681,1583],{"class":108},[91,101683,28107],{"class":101},[91,101685,591],{"class":108},[91,101687,21410],{"class":101},[91,101689,28114],{"class":1343},[91,101691,101692,101694,101696,101698,101700,101702,101704,101706,101708,101710,101712,101714],{"class":93,"line":105},[91,101693,11782],{"class":108},[91,101695,28121],{"class":101},[91,101697,166],{"class":566},[91,101699,28126],{"class":101},[91,101701,28095],{"class":97},[91,101703,28131],{"class":101},[91,101705,11782],{"class":108},[91,101707,28102],{"class":101},[91,101709,1583],{"class":108},[91,101711,28107],{"class":101},[91,101713,591],{"class":108},[91,101715,9590],{"class":101},[16,101717,28146],{},[757,101719,28150],{"id":28149},[16,101721,28153],{},[4530,101723,101724,101726],{},[27,101725,28158],{},[27,101727,28161],{},[82,101729,101730],{"className":10952,"code":28164,"language":10954,"meta":87,"style":87},[31,101731,101732,101746,101750,101766,101770,101774,101786],{"__ignoreMap":87},[91,101733,101734,101736,101738,101740,101742,101744],{"class":93,"line":94},[91,101735,5626],{"class":566},[91,101737,26807],{"class":101},[91,101739,166],{"class":566},[91,101741,2676],{"class":566},[91,101743,28179],{"class":97},[91,101745,7549],{"class":101},[91,101747,101748],{"class":93,"line":105},[91,101749,28186],{"class":101},[91,101751,101752,101754,101756,101758,101760,101762,101764],{"class":93,"line":121},[91,101753,28191],{"class":101},[91,101755,5033],{"class":169},[91,101757,64],{"class":101},[91,101759,28198],{"class":169},[91,101761,64],{"class":101},[91,101763,28203],{"class":169},[91,101765,11460],{"class":101},[91,101767,101768],{"class":93,"line":134},[91,101769,1698],{"class":101},[91,101771,101772],{"class":93,"line":228},[91,101773,9444],{"class":101},[91,101775,101776,101778,101780,101782,101784],{"class":93,"line":250},[91,101777,28218],{"class":101},[91,101779,1583],{"class":108},[91,101781,28223],{"class":101},[91,101783,166],{"class":566},[91,101785,28228],{"class":169},[91,101787,101788,101790,101792,101794],{"class":93,"line":260},[91,101789,28233],{"class":101},[91,101791,11811],{"class":108},[91,101793,1366],{"class":566},[91,101795,28240],{"class":108},[16,101797,28243],{},[24,101799,101800,101802,101804,101806],{},[27,101801,28248],{},[27,101803,28251],{},[27,101805,28254],{},[27,101807,28257],{},[82,101809,101810],{"className":10952,"code":28260,"language":10954,"meta":87,"style":87},[31,101811,101812],{"__ignoreMap":87},[91,101813,101814,101816,101818,101820,101822,101824,101826,101828],{"class":93,"line":94},[91,101815,11782],{"class":108},[91,101817,1235],{"class":101},[91,101819,28037],{"class":97},[91,101821,795],{"class":101},[91,101823,11782],{"class":108},[91,101825,28277],{"class":101},[91,101827,1583],{"class":108},[91,101829,28282],{"class":101},[16,101831,28285,101832,28288],{},[31,101833,28037],{},[771,101835,28292],{"id":28291},[82,101837,101838],{"className":10952,"code":28295,"language":10954,"meta":87,"style":87},[31,101839,101840,101846,101858,101870,101882,101886,101890,101896,101918],{"__ignoreMap":87},[91,101841,101842,101844],{"class":93,"line":94},[91,101843,28302],{"class":97},[91,101845,10596],{"class":101},[91,101847,101848,101850,101852,101854,101856],{"class":93,"line":105},[91,101849,28309],{"class":101},[91,101851,1583],{"class":108},[91,101853,28314],{"class":101},[91,101855,28317],{"class":169},[91,101857,28320],{"class":101},[91,101859,101860,101862,101864,101866,101868],{"class":93,"line":121},[91,101861,28309],{"class":101},[91,101863,591],{"class":108},[91,101865,28314],{"class":101},[91,101867,28331],{"class":169},[91,101869,28320],{"class":101},[91,101871,101872,101874,101876,101878,101880],{"class":93,"line":134},[91,101873,28309],{"class":101},[91,101875,28340],{"class":108},[91,101877,28314],{"class":101},[91,101879,28345],{"class":169},[91,101881,28320],{"class":101},[91,101883,101884],{"class":93,"line":228},[91,101885,11460],{"class":101},[91,101887,101888],{"class":93,"line":250},[91,101889,1450],{"emptyLinePlaceholder":846},[91,101891,101892,101894],{"class":93,"line":260},[91,101893,28360],{"class":97},[91,101895,2007],{"class":101},[91,101897,101898,101900,101902,101904,101906,101908,101910,101912,101914,101916],{"class":93,"line":274},[91,101899,11922],{"class":108},[91,101901,28369],{"class":101},[91,101903,28340],{"class":108},[91,101905,28223],{"class":101},[91,101907,166],{"class":566},[91,101909,28378],{"class":101},[91,101911,28381],{"class":108},[91,101913,28314],{"class":101},[91,101915,28386],{"class":169},[91,101917,20036],{"class":101},[91,101919,101920],{"class":93,"line":284},[91,101921,137],{"class":101},[16,101923,28395],{},[82,101925,101926],{"className":10952,"code":28398,"language":10954,"meta":87,"style":87},[31,101927,101928],{"__ignoreMap":87},[91,101929,101930,101932,101934,101936,101938,101940,101942],{"class":93,"line":94},[91,101931,11782],{"class":108},[91,101933,28369],{"class":101},[91,101935,1583],{"class":108},[91,101937,28411],{"class":101},[91,101939,166],{"class":566},[91,101941,28416],{"class":169},[91,101943,118],{"class":101},[16,101945,28421],{},[16,101947,101948],{},[19,101949],{"alt":21,"src":28426},[16,101951,28429],{},[16,101953,101954],{},[19,101955],{"alt":21,"src":28434},[16,101957,28437],{},[16,101959,101960],{},[19,101961],{"alt":21,"src":28442},[16,101963,28445,101964,28448,101966,28452],{},[31,101965,28360],{},[31,101967,28451],{},[82,101969,101970],{"className":10952,"code":28455,"language":10954,"meta":87,"style":87},[31,101971,101972,101982,101992,102002,102006,102022,102042,102060],{"__ignoreMap":87},[91,101973,101974,101976,101978,101980],{"class":93,"line":94},[91,101975,1968],{"class":566},[91,101977,28464],{"class":108},[91,101979,1366],{"class":566},[91,101981,13130],{"class":101},[91,101983,101984,101986,101988,101990],{"class":93,"line":105},[91,101985,28473],{"class":169},[91,101987,112],{"class":101},[91,101989,1583],{"class":108},[91,101991,10624],{"class":101},[91,101993,101994,101996,101998,102000],{"class":93,"line":121},[91,101995,28484],{"class":169},[91,101997,112],{"class":101},[91,101999,28489],{"class":169},[91,102001,10624],{"class":101},[91,102003,102004],{"class":93,"line":134},[91,102005,20036],{"class":101},[91,102007,102008,102010,102012,102014,102016,102018,102020],{"class":93,"line":228},[91,102009,11782],{"class":108},[91,102011,28369],{"class":101},[91,102013,1583],{"class":108},[91,102015,28223],{"class":101},[91,102017,166],{"class":566},[91,102019,28510],{"class":101},[91,102021,28513],{"class":1343},[91,102023,102024,102026,102028,102030,102032,102034,102036,102038,102040],{"class":93,"line":250},[91,102025,11782],{"class":108},[91,102027,1235],{"class":101},[91,102029,28037],{"class":97},[91,102031,795],{"class":101},[91,102033,11782],{"class":108},[91,102035,28528],{"class":101},[91,102037,1583],{"class":108},[91,102039,28533],{"class":101},[91,102041,28536],{"class":1343},[91,102043,102044,102046,102048,102050,102052,102054,102056,102058],{"class":93,"line":260},[91,102045,11782],{"class":108},[91,102047,28369],{"class":101},[91,102049,1583],{"class":108},[91,102051,28411],{"class":101},[91,102053,166],{"class":566},[91,102055,28551],{"class":169},[91,102057,20231],{"class":101},[91,102059,28536],{"class":1343},[91,102061,102062,102064,102066,102068,102070,102072,102074,102076,102078,102080,102082,102084,102086],{"class":93,"line":274},[91,102063,11782],{"class":108},[91,102065,1235],{"class":101},[91,102067,28037],{"class":97},[91,102069,795],{"class":101},[91,102071,11782],{"class":108},[91,102073,28369],{"class":101},[91,102075,1583],{"class":108},[91,102077,22817],{"class":101},[91,102079,28576],{"class":169},[91,102081,64],{"class":101},[91,102083,28581],{"class":169},[91,102085,28584],{"class":101},[91,102087,28536],{"class":1343},[16,102089,28589],{},[771,102091,28593],{"id":28592},[82,102093,102094],{"className":10952,"code":28596,"language":10954,"meta":87,"style":87},[31,102095,102096,102102,102106,102118,102130,102134,102138,102150,102162,102166,102170,102174,102178,102184,102198,102210,102222,102226,102240,102252,102264,102268],{"__ignoreMap":87},[91,102097,102098,102100],{"class":93,"line":94},[91,102099,28603],{"class":97},[91,102101,10596],{"class":101},[91,102103,102104],{"class":93,"line":105},[91,102105,28610],{"class":101},[91,102107,102108,102110,102112,102114,102116],{"class":93,"line":121},[91,102109,28309],{"class":101},[91,102111,1583],{"class":108},[91,102113,28619],{"class":101},[91,102115,28622],{"class":169},[91,102117,15376],{"class":101},[91,102119,102120,102122,102124,102126,102128],{"class":93,"line":134},[91,102121,28309],{"class":101},[91,102123,591],{"class":108},[91,102125,28619],{"class":101},[91,102127,28622],{"class":169},[91,102129,15376],{"class":101},[91,102131,102132],{"class":93,"line":228},[91,102133,21926],{"class":101},[91,102135,102136],{"class":93,"line":250},[91,102137,28610],{"class":101},[91,102139,102140,102142,102144,102146,102148],{"class":93,"line":260},[91,102141,28309],{"class":101},[91,102143,1583],{"class":108},[91,102145,28619],{"class":101},[91,102147,28655],{"class":169},[91,102149,15376],{"class":101},[91,102151,102152,102154,102156,102158,102160],{"class":93,"line":274},[91,102153,28309],{"class":101},[91,102155,591],{"class":108},[91,102157,28619],{"class":101},[91,102159,28655],{"class":169},[91,102161,15376],{"class":101},[91,102163,102164],{"class":93,"line":284},[91,102165,21926],{"class":101},[91,102167,102168],{"class":93,"line":299},[91,102169,28678],{"class":101},[91,102171,102172],{"class":93,"line":319},[91,102173,11460],{"class":101},[91,102175,102176],{"class":93,"line":334},[91,102177,1450],{"emptyLinePlaceholder":846},[91,102179,102180,102182],{"class":93,"line":355},[91,102181,28360],{"class":97},[91,102183,2007],{"class":101},[91,102185,102186,102188,102190,102192,102194,102196],{"class":93,"line":364},[91,102187,11922],{"class":108},[91,102189,28699],{"class":101},[91,102191,591],{"class":108},[91,102193,28223],{"class":101},[91,102195,166],{"class":566},[91,102197,13192],{"class":101},[91,102199,102200,102202,102204,102206,102208],{"class":93,"line":378},[91,102201,28309],{"class":101},[91,102203,1583],{"class":108},[91,102205,28619],{"class":101},[91,102207,28718],{"class":169},[91,102209,15376],{"class":101},[91,102211,102212,102214,102216,102218,102220],{"class":93,"line":387},[91,102213,28309],{"class":101},[91,102215,591],{"class":108},[91,102217,28619],{"class":101},[91,102219,28718],{"class":169},[91,102221,15376],{"class":101},[91,102223,102224],{"class":93,"line":402},[91,102225,22495],{"class":101},[91,102227,102228,102230,102232,102234,102236,102238],{"class":93,"line":422},[91,102229,28741],{"class":108},[91,102231,28699],{"class":101},[91,102233,28340],{"class":108},[91,102235,28223],{"class":101},[91,102237,166],{"class":566},[91,102239,13192],{"class":101},[91,102241,102242,102244,102246,102248,102250],{"class":93,"line":438},[91,102243,28309],{"class":101},[91,102245,1583],{"class":108},[91,102247,28619],{"class":101},[91,102249,28762],{"class":169},[91,102251,15376],{"class":101},[91,102253,102254,102256,102258,102260,102262],{"class":93,"line":458},[91,102255,28309],{"class":101},[91,102257,591],{"class":108},[91,102259,28619],{"class":101},[91,102261,28762],{"class":169},[91,102263,15376],{"class":101},[91,102265,102266],{"class":93,"line":467},[91,102267,22495],{"class":101},[91,102269,102270],{"class":93,"line":481},[91,102271,137],{"class":101},[16,102273,28787],{},[82,102275,102276],{"className":10952,"code":28790,"language":10954,"meta":87,"style":87},[31,102277,102278,102288,102298,102308,102312,102332,102356,102378,102400],{"__ignoreMap":87},[91,102279,102280,102282,102284,102286],{"class":93,"line":94},[91,102281,1968],{"class":566},[91,102283,28464],{"class":108},[91,102285,1366],{"class":566},[91,102287,13130],{"class":101},[91,102289,102290,102292,102294,102296],{"class":93,"line":105},[91,102291,28473],{"class":169},[91,102293,112],{"class":101},[91,102295,1583],{"class":108},[91,102297,10624],{"class":101},[91,102299,102300,102302,102304,102306],{"class":93,"line":121},[91,102301,28484],{"class":169},[91,102303,112],{"class":101},[91,102305,28489],{"class":169},[91,102307,10624],{"class":101},[91,102309,102310],{"class":93,"line":134},[91,102311,20036],{"class":101},[91,102313,102314,102316,102318,102320,102322,102324,102326,102328,102330],{"class":93,"line":228},[91,102315,11782],{"class":108},[91,102317,28699],{"class":101},[91,102319,1583],{"class":108},[91,102321,28837],{"class":101},[91,102323,1583],{"class":108},[91,102325,28223],{"class":101},[91,102327,166],{"class":566},[91,102329,28846],{"class":101},[91,102331,28513],{"class":1343},[91,102333,102334,102336,102338,102340,102342,102344,102346,102348,102350,102352,102354],{"class":93,"line":250},[91,102335,11782],{"class":108},[91,102337,1235],{"class":101},[91,102339,28037],{"class":97},[91,102341,795],{"class":101},[91,102343,11782],{"class":108},[91,102345,28699],{"class":101},[91,102347,1583],{"class":108},[91,102349,22817],{"class":101},[91,102351,1583],{"class":108},[91,102353,28533],{"class":101},[91,102355,28536],{"class":1343},[91,102357,102358,102360,102362,102364,102366,102368,102370,102372,102374,102376],{"class":93,"line":260},[91,102359,11782],{"class":108},[91,102361,28699],{"class":101},[91,102363,1578],{"class":108},[91,102365,28837],{"class":101},[91,102367,1578],{"class":108},[91,102369,28887],{"class":101},[91,102371,166],{"class":566},[91,102373,28551],{"class":169},[91,102375,20231],{"class":101},[91,102377,28536],{"class":1343},[91,102379,102380,102382,102384,102386,102388,102390,102392,102394,102396,102398],{"class":93,"line":274},[91,102381,11782],{"class":108},[91,102383,28699],{"class":101},[91,102385,591],{"class":108},[91,102387,28837],{"class":101},[91,102389,1578],{"class":108},[91,102391,28887],{"class":101},[91,102393,166],{"class":566},[91,102395,28914],{"class":169},[91,102397,20231],{"class":101},[91,102399,28513],{"class":1343},[91,102401,102402,102404,102406,102408,102410,102412,102414,102416,102418,102420,102422,102424,102426,102428,102430],{"class":93,"line":284},[91,102403,11782],{"class":108},[91,102405,1235],{"class":101},[91,102407,28037],{"class":97},[91,102409,795],{"class":101},[91,102411,11782],{"class":108},[91,102413,28699],{"class":101},[91,102415,28340],{"class":108},[91,102417,28837],{"class":101},[91,102419,1583],{"class":108},[91,102421,22817],{"class":101},[91,102423,28576],{"class":169},[91,102425,64],{"class":101},[91,102427,28581],{"class":169},[91,102429,28584],{"class":101},[91,102431,28513],{"class":1343},[16,102433,28953],{},[16,102435,28956,102436,28959],{},[31,102437,13348],{},[16,102439,28962,102440,28965],{},[31,102441,28037],{},[16,102443,28968,102444,28971],{},[31,102445,13348],{},[82,102447,102448],{"className":10952,"code":28974,"language":10954,"meta":87,"style":87},[31,102449,102450,102468,102480,102492,102496,102514,102526,102538],{"__ignoreMap":87},[91,102451,102452,102454,102456,102458,102460,102462,102464,102466],{"class":93,"line":94},[91,102453,11782],{"class":108},[91,102455,28699],{"class":101},[91,102457,591],{"class":108},[91,102459,28987],{"class":101},[91,102461,13348],{"class":97},[91,102463,795],{"class":101},[91,102465,1442],{"class":566},[91,102467,11369],{"class":101},[91,102469,102470,102472,102474,102476,102478],{"class":93,"line":105},[91,102471,29000],{"class":101},[91,102473,1583],{"class":108},[91,102475,28619],{"class":101},[91,102477,28718],{"class":169},[91,102479,15376],{"class":101},[91,102481,102482,102484,102486,102488,102490],{"class":93,"line":121},[91,102483,29000],{"class":101},[91,102485,591],{"class":108},[91,102487,28619],{"class":101},[91,102489,28718],{"class":169},[91,102491,15376],{"class":101},[91,102493,102494],{"class":93,"line":134},[91,102495,29025],{"class":101},[91,102497,102498,102500,102502,102504,102506,102508,102510,102512],{"class":93,"line":228},[91,102499,11782],{"class":108},[91,102501,29032],{"class":101},[91,102503,29035],{"class":97},[91,102505,795],{"class":101},[91,102507,591],{"class":108},[91,102509,64],{"class":101},[91,102511,1583],{"class":108},[91,102513,29046],{"class":101},[91,102515,102516,102518,102520,102522,102524],{"class":93,"line":250},[91,102517,29000],{"class":101},[91,102519,1583],{"class":108},[91,102521,28619],{"class":101},[91,102523,28718],{"class":169},[91,102525,15376],{"class":101},[91,102527,102528,102530,102532,102534,102536],{"class":93,"line":260},[91,102529,29000],{"class":101},[91,102531,591],{"class":108},[91,102533,28619],{"class":101},[91,102535,28718],{"class":169},[91,102537,15376],{"class":101},[91,102539,102540],{"class":93,"line":274},[91,102541,19380],{"class":101},[24,102543,102544,102546],{},[27,102545,29079],{},[27,102547,102548,29084],{},[31,102549,29035],{},[16,102551,29087],{},[757,102553,29091],{"id":29090},[16,102555,29094,102556,29098],{},[792,102557,29097],{},[82,102559,102560],{"className":11559,"code":29101,"language":11561,"meta":87,"style":87},[31,102561,102562,102572,102578,102588,102592,102598,102608,102620,102634,102648,102662,102666,102670],{"__ignoreMap":87},[91,102563,102564,102566,102568,102570],{"class":93,"line":94},[91,102565,2118],{"class":97},[91,102567,112],{"class":101},[91,102569,29112],{"class":169},[91,102571,7560],{"class":101},[91,102573,102574,102576],{"class":93,"line":105},[91,102575,29119],{"class":97},[91,102577,8789],{"class":101},[91,102579,102580,102582,102584,102586],{"class":93,"line":121},[91,102581,29126],{"class":97},[91,102583,112],{"class":101},[91,102585,29131],{"class":169},[91,102587,7560],{"class":101},[91,102589,102590],{"class":93,"line":134},[91,102591,137],{"class":101},[91,102593,102594,102596],{"class":93,"line":228},[91,102595,29142],{"class":97},[91,102597,8789],{"class":101},[91,102599,102600,102602,102604,102606],{"class":93,"line":250},[91,102601,29149],{"class":97},[91,102603,24747],{"class":101},[91,102605,1179],{"class":566},[91,102607,102],{"class":101},[91,102609,102610,102612,102614,102616,102618],{"class":93,"line":260},[91,102611,26712],{"class":108},[91,102613,29162],{"class":101},[91,102615,166],{"class":566},[91,102617,29167],{"class":169},[91,102619,118],{"class":101},[91,102621,102622,102624,102626,102628,102630,102632],{"class":93,"line":274},[91,102623,2454],{"class":101},[91,102625,1225],{"class":97},[91,102627,795],{"class":101},[91,102629,11782],{"class":108},[91,102631,29182],{"class":101},[91,102633,29185],{"class":1343},[91,102635,102636,102638,102640,102642,102644,102646],{"class":93,"line":284},[91,102637,11922],{"class":108},[91,102639,1235],{"class":101},[91,102641,29194],{"class":97},[91,102643,795],{"class":101},[91,102645,7471],{"class":566},[91,102647,25921],{"class":101},[91,102649,102650,102652,102654,102656,102658,102660],{"class":93,"line":299},[91,102651,13900],{"class":101},[91,102653,1225],{"class":97},[91,102655,795],{"class":101},[91,102657,11782],{"class":108},[91,102659,29182],{"class":101},[91,102661,29215],{"class":1343},[91,102663,102664],{"class":93,"line":319},[91,102665,23766],{"class":101},[91,102667,102668],{"class":93,"line":334},[91,102669,1693],{"class":101},[91,102671,102672],{"class":93,"line":355},[91,102673,137],{"class":101},[16,102675,29230,102676,29234,102678,29238,102680,29241],{},[31,102677,29233],{},[31,102679,29237],{},[792,102681,29097],{},[757,102683,29245],{"id":29244},[16,102685,29248],{},[82,102687,102688],{"className":11559,"code":29251,"language":11561,"meta":87,"style":87},[31,102689,102690,102698,102702,102706,102710,102716,102722,102744,102748,102754,102776,102780,102790,102796,102800,102812,102816,102820],{"__ignoreMap":87},[91,102691,102692,102694,102696],{"class":93,"line":94},[91,102693,2118],{"class":97},[91,102695,112],{"class":101},[91,102697,29262],{"class":169},[91,102699,102700],{"class":93,"line":105},[91,102701,29267],{"class":169},[91,102703,102704],{"class":93,"line":121},[91,102705,29272],{"class":169},[91,102707,102708],{"class":93,"line":134},[91,102709,29277],{"class":169},[91,102711,102712,102714],{"class":93,"line":228},[91,102713,29282],{"class":169},[91,102715,7560],{"class":101},[91,102717,102718,102720],{"class":93,"line":250},[91,102719,28360],{"class":97},[91,102721,2007],{"class":101},[91,102723,102724,102726,102728,102730,102732,102734,102736,102738,102740,102742],{"class":93,"line":260},[91,102725,28741],{"class":108},[91,102727,29297],{"class":101},[91,102729,1583],{"class":108},[91,102731,28223],{"class":101},[91,102733,166],{"class":566},[91,102735,28378],{"class":101},[91,102737,591],{"class":108},[91,102739,28619],{"class":101},[91,102741,29312],{"class":169},[91,102743,20036],{"class":101},[91,102745,102746],{"class":93,"line":274},[91,102747,15376],{"class":101},[91,102749,102750,102752],{"class":93,"line":284},[91,102751,29323],{"class":97},[91,102753,2007],{"class":101},[91,102755,102756,102758,102760,102762,102764,102766,102768,102770,102772,102774],{"class":93,"line":299},[91,102757,28741],{"class":108},[91,102759,29297],{"class":101},[91,102761,591],{"class":108},[91,102763,28223],{"class":101},[91,102765,166],{"class":566},[91,102767,28378],{"class":101},[91,102769,28340],{"class":108},[91,102771,28619],{"class":101},[91,102773,29346],{"class":169},[91,102775,20036],{"class":101},[91,102777,102778],{"class":93,"line":319},[91,102779,15376],{"class":101},[91,102781,102782,102784,102786,102788],{"class":93,"line":334},[91,102783,7901],{"class":97},[91,102785,24747],{"class":101},[91,102787,1179],{"class":566},[91,102789,102],{"class":101},[91,102791,102792,102794],{"class":93,"line":355},[91,102793,2695],{"class":566},[91,102795,102],{"class":101},[91,102797,102798],{"class":93,"line":364},[91,102799,29373],{"class":101},[91,102801,102802,102804,102806,102808,102810],{"class":93,"line":378},[91,102803,29378],{"class":101},[91,102805,1583],{"class":108},[91,102807,28619],{"class":101},[91,102809,29385],{"class":169},[91,102811,15376],{"class":101},[91,102813,102814],{"class":93,"line":387},[91,102815,10681],{"class":101},[91,102817,102818],{"class":93,"line":402},[91,102819,1698],{"class":101},[91,102821,102822],{"class":93,"line":422},[91,102823,137],{"class":101},[16,102825,29402,102826,29406,102828,29410],{},[31,102827,29405],{},[31,102829,29409],{},[82,102831,102832],{"className":11559,"code":29413,"language":11561,"meta":87,"style":87},[31,102833,102834,102840,102846,102850,102854,102872,102900,102918,102936,102940],{"__ignoreMap":87},[91,102835,102836,102838],{"class":93,"line":94},[91,102837,29142],{"class":97},[91,102839,8789],{"class":101},[91,102841,102842,102844],{"class":93,"line":105},[91,102843,29426],{"class":97},[91,102845,2007],{"class":101},[91,102847,102848],{"class":93,"line":121},[91,102849,29433],{"class":1343},[91,102851,102852],{"class":93,"line":134},[91,102853,29438],{"class":1343},[91,102855,102856,102858,102860,102862,102864,102866,102868,102870],{"class":93,"line":228},[91,102857,11922],{"class":108},[91,102859,29297],{"class":101},[91,102861,1578],{"class":108},[91,102863,28887],{"class":101},[91,102865,166],{"class":566},[91,102867,29453],{"class":169},[91,102869,20231],{"class":101},[91,102871,29458],{"class":1343},[91,102873,102874,102876,102878,102880,102882,102884,102886,102888,102890,102892,102894,102896,102898],{"class":93,"line":250},[91,102875,26712],{"class":108},[91,102877,1235],{"class":101},[91,102879,28037],{"class":97},[91,102881,795],{"class":101},[91,102883,11782],{"class":108},[91,102885,29297],{"class":101},[91,102887,1583],{"class":108},[91,102889,22817],{"class":101},[91,102891,28317],{"class":169},[91,102893,64],{"class":101},[91,102895,29483],{"class":169},[91,102897,1176],{"class":101},[91,102899,28513],{"class":1343},[91,102901,102902,102904,102906,102908,102910,102912,102914,102916],{"class":93,"line":260},[91,102903,11922],{"class":108},[91,102905,29297],{"class":101},[91,102907,1583],{"class":108},[91,102909,28887],{"class":101},[91,102911,166],{"class":566},[91,102913,29453],{"class":169},[91,102915,20231],{"class":101},[91,102917,28513],{"class":1343},[91,102919,102920,102922,102924,102926,102928,102930,102932,102934],{"class":93,"line":274},[91,102921,11922],{"class":108},[91,102923,29297],{"class":101},[91,102925,591],{"class":108},[91,102927,28887],{"class":101},[91,102929,166],{"class":566},[91,102931,29453],{"class":169},[91,102933,20231],{"class":101},[91,102935,28513],{"class":1343},[91,102937,102938],{"class":93,"line":284},[91,102939,1698],{"class":101},[91,102941,102942],{"class":93,"line":299},[91,102943,15376],{"class":101},[16,102945,29534],{},[829,102947,29537],{},{"title":87,"searchDepth":105,"depth":105,"links":102949},[102950,102951,102955],{"id":25178,"depth":105,"text":25179},{"id":25191,"depth":105,"text":25192,"children":102952},[102953,102954],{"id":25213,"depth":121,"text":25214},{"id":25890,"depth":121,"text":25891},{"id":27957,"depth":105,"text":27958,"children":102956},[102957,102958,102959,102960,102961],{"id":27969,"depth":121,"text":27970},{"id":28061,"depth":121,"text":28062},{"id":28149,"depth":121,"text":28150},{"id":29090,"depth":121,"text":29091},{"id":29244,"depth":121,"text":29245},{},{"title":25173,"description":29553},{"loc":29556},[15042,25166,29561,25178,29562],{"id":29565,"title":29566,"body":102967,"created":29955,"description":29956,"extension":843,"filename":29957,"meta":103290,"navigation":846,"path":29959,"seo":103291,"sitemap":103292,"stem":29962,"subject":15043,"tags":103293,"updated":29955,"volume":853,"__hash__":29966},{"type":8,"value":102968,"toc":103285},[102969,102971,102975,102977,102981,102985,102995,103051,103055,103061,103063,103065,103165,103169,103175,103267,103273,103275,103277,103279,103281,103283],[16,102970,29571],{},[16,102972,29574,102973,29578],{},[31,102974,29577],{},[49,102976,29582],{"id":29581},[16,102978,29585,102979,29589],{},[31,102980,29588],{},[16,102982,102983],{},[19,102984],{"alt":29594,"src":29595},[16,102986,102987,6301,102989,29604,102991,29608,102993,29611],{},[31,102988,29600],{},[31,102990,29603],{},[31,102992,29607],{},[31,102994,29577],{},[82,102996,102997],{"className":1154,"code":29614,"language":1156,"meta":87,"style":87},[31,102998,102999,103009,103013,103025,103037,103041,103047],{"__ignoreMap":87},[91,103000,103001,103003,103005,103007],{"class":93,"line":94},[91,103002,2499],{"class":566},[91,103004,29623],{"class":101},[91,103006,2505],{"class":566},[91,103008,29628],{"class":169},[91,103010,103011],{"class":93,"line":105},[91,103012,1450],{"emptyLinePlaceholder":846},[91,103014,103015,103017,103019,103021,103023],{"class":93,"line":121},[91,103016,29637],{"class":97},[91,103018,795],{"class":101},[91,103020,23700],{"class":1172},[91,103022,11859],{"class":566},[91,103024,102],{"class":101},[91,103026,103027,103029,103031,103033,103035],{"class":93,"line":134},[91,103028,2641],{"class":566},[91,103030,29652],{"class":108},[91,103032,1366],{"class":566},[91,103034,7916],{"class":97},[91,103036,29659],{"class":101},[91,103038,103039],{"class":93,"line":228},[91,103040,1450],{"emptyLinePlaceholder":846},[91,103042,103043,103045],{"class":93,"line":250},[91,103044,29668],{"class":97},[91,103046,29671],{"class":101},[91,103048,103049],{"class":93,"line":260},[91,103050,9444],{"class":101},[16,103052,29678,103053,29681],{},[31,103054,29637],{},[16,103056,29684,103057,29687,103059,29690],{},[31,103058,1884],{},[31,103060,1884],{},[49,103062,29694],{"id":29693},[16,103064,29697],{},[82,103066,103067],{"className":1154,"code":29700,"language":1156,"meta":87,"style":87},[31,103068,103069,103079,103087,103095,103111,103115,103119,103129,103137,103145,103161],{"__ignoreMap":87},[91,103070,103071,103073,103075,103077],{"class":93,"line":94},[91,103072,1968],{"class":566},[91,103074,29709],{"class":108},[91,103076,1366],{"class":566},[91,103078,102],{"class":101},[91,103080,103081,103083,103085],{"class":93,"line":105},[91,103082,24725],{"class":101},[91,103084,29720],{"class":169},[91,103086,7560],{"class":101},[91,103088,103089,103091,103093],{"class":93,"line":121},[91,103090,24735],{"class":101},[91,103092,29729],{"class":169},[91,103094,7560],{"class":101},[91,103096,103097,103099,103101,103103,103105,103107,103109],{"class":93,"line":134},[91,103098,22214],{"class":97},[91,103100,24747],{"class":101},[91,103102,1179],{"class":566},[91,103104,24752],{"class":566},[91,103106,795],{"class":101},[91,103108,29746],{"class":169},[91,103110,8037],{"class":101},[91,103112,103113],{"class":93,"line":228},[91,103114,137],{"class":101},[91,103116,103117],{"class":93,"line":250},[91,103118,1450],{"emptyLinePlaceholder":846},[91,103120,103121,103123,103125,103127],{"class":93,"line":260},[91,103122,1968],{"class":566},[91,103124,29763],{"class":108},[91,103126,1366],{"class":566},[91,103128,102],{"class":101},[91,103130,103131,103133,103135],{"class":93,"line":274},[91,103132,24725],{"class":101},[91,103134,29774],{"class":169},[91,103136,7560],{"class":101},[91,103138,103139,103141,103143],{"class":93,"line":284},[91,103140,24735],{"class":101},[91,103142,29783],{"class":169},[91,103144,7560],{"class":101},[91,103146,103147,103149,103151,103153,103155,103157,103159],{"class":93,"line":299},[91,103148,22214],{"class":97},[91,103150,24747],{"class":101},[91,103152,1179],{"class":566},[91,103154,24752],{"class":566},[91,103156,795],{"class":101},[91,103158,29746],{"class":169},[91,103160,8037],{"class":101},[91,103162,103163],{"class":93,"line":319},[91,103164,137],{"class":101},[16,103166,29808,103167,29812],{},[31,103168,29811],{},[16,103170,29815,103171,29818,103173,29821],{},[31,103172,23507],{},[31,103174,9452],{},[82,103176,103177],{"className":1934,"code":29824,"language":1936,"meta":87,"style":87},[31,103178,103179,103183,103199,103209,103213,103225,103233,103237,103245,103259],{"__ignoreMap":87},[91,103180,103181],{"class":93,"line":94},[91,103182,29831],{"class":1343},[91,103184,103185,103187,103189,103191,103193,103195,103197],{"class":93,"line":105},[91,103186,156],{"class":101},[91,103188,1945],{"class":159},[91,103190,1948],{"class":97},[91,103192,1951],{"class":97},[91,103194,166],{"class":101},[91,103196,1956],{"class":169},[91,103198,173],{"class":101},[91,103200,103201,103203,103205,103207],{"class":93,"line":121},[91,103202,2499],{"class":566},[91,103204,12217],{"class":101},[91,103206,2505],{"class":566},[91,103208,29628],{"class":169},[91,103210,103211],{"class":93,"line":134},[91,103212,1450],{"emptyLinePlaceholder":846},[91,103214,103215,103217,103219,103221,103223],{"class":93,"line":228},[91,103216,1968],{"class":566},[91,103218,12259],{"class":108},[91,103220,1366],{"class":566},[91,103222,12264],{"class":97},[91,103224,9313],{"class":101},[91,103226,103227,103229,103231],{"class":93,"line":250},[91,103228,493],{"class":101},[91,103230,1945],{"class":159},[91,103232,173],{"class":101},[91,103234,103235],{"class":93,"line":260},[91,103236,1450],{"emptyLinePlaceholder":846},[91,103238,103239,103241,103243],{"class":93,"line":274},[91,103240,156],{"class":101},[91,103242,2118],{"class":159},[91,103244,173],{"class":101},[91,103246,103247,103249,103251,103253,103255,103257],{"class":93,"line":284},[91,103248,2125],{"class":101},[91,103250,23507],{"class":159},[91,103252,29902],{"class":97},[91,103254,166],{"class":101},[91,103256,29907],{"class":169},[91,103258,2147],{"class":101},[91,103260,103261,103263,103265],{"class":93,"line":299},[91,103262,493],{"class":101},[91,103264,2118],{"class":159},[91,103266,173],{"class":101},[16,103268,103269,29923,103271,29926],{},[31,103270,29922],{},[31,103272,29577],{},[16,103274,29929],{},[49,103276,6005],{"id":6004},[1112,103278],{"description":29934,"favicon":29935,"host":29936,"title":29937,"url":29938},[1112,103280],{"description":29934,"favicon":29935,"host":29936,"title":29941,"url":29942},[1112,103282],{"description":29934,"favicon":29935,"host":29936,"title":29945,"url":29946},[829,103284,29949],{},{"title":87,"searchDepth":105,"depth":105,"links":103286},[103287,103288,103289],{"id":29581,"depth":105,"text":29582},{"id":29693,"depth":105,"text":29694},{"id":6004,"depth":105,"text":6005},{},{"title":29566,"description":29956},{"loc":29959},[16324,21680,29964,29965],{"id":29968,"title":29969,"body":103295,"created":30430,"description":30431,"extension":843,"filename":30432,"meta":103635,"navigation":846,"path":30434,"seo":103636,"sitemap":103637,"stem":30437,"subject":7200,"tags":103638,"updated":30430,"volume":853,"__hash__":30442},{"type":8,"value":103296,"toc":103626},[103297,103303,103305,103307,103373,103375,103377,103379,103381,103386,103396,103401,103403,103415,103425,103427,103433,103438,103448,103450,103462,103464,103466,103478,103480,103482,103512,103514,103516,103518,103520,103536,103538,103544,103546,103548,103554,103586,103588,103614,103616,103618,103620,103622,103624],[16,103298,29974,103299,5321,103301,29981],{},[31,103300,29977],{},[31,103302,29980],{},[49,103304,29985],{"id":29984},[16,103306,29988],{},[812,103308,103309,103319],{},[3001,103310,103311],{},[3004,103312,103313,103315,103317],{},[3007,103314,29997],{},[3007,103316,30000],{},[3007,103318,30003],{},[3017,103320,103321,103329,103341,103349,103357,103365],{},[3004,103322,103323,103325,103327],{},[3022,103324,30010],{},[3022,103326,30013],{},[3022,103328,30016],{},[3004,103330,103331,103337,103339],{},[3022,103332,30021,103333,64,103335,30028],{},[31,103334,30024],{},[31,103336,30027],{},[3022,103338,30013],{},[3022,103340,30033],{},[3004,103342,103343,103345,103347],{},[3022,103344,30038],{},[3022,103346,30013],{},[3022,103348,30043],{},[3004,103350,103351,103353,103355],{},[3022,103352,30048],{},[3022,103354,30051],{},[3022,103356,30054],{},[3004,103358,103359,103361,103363],{},[3022,103360,30059],{},[3022,103362,30051],{},[3022,103364,30064],{},[3004,103366,103367,103369,103371],{},[3022,103368,30069],{},[3022,103370,30051],{},[3022,103372,30074],{},[16,103374,30077],{},[16,103376,30080],{},[49,103378,30084],{"id":30083},[16,103380,30087],{},[82,103382,103384],{"className":103383,"code":30091,"language":1099,"meta":87},[1097],[31,103385,30091],{"__ignoreMap":87},[16,103387,103388,64,103390,64,103392,30104,103394,30108],{},[31,103389,30098],{},[31,103391,12660],{},[31,103393,30103],{},[31,103395,30107],{},[82,103397,103399],{"className":103398,"code":30112,"language":1099,"meta":87},[1097],[31,103400,30112],{"__ignoreMap":87},[16,103402,30117],{},[82,103404,103405],{"className":6839,"code":30120,"language":6841,"meta":87,"style":87},[31,103406,103407],{"__ignoreMap":87},[91,103408,103409,103411,103413],{"class":93,"line":94},[91,103410,7202],{"class":97},[91,103412,30129],{"class":169},[91,103414,30132],{"class":169},[16,103416,20150,103417,64,103419,64,103421,30141,103423,30145],{},[31,103418,30098],{},[31,103420,12660],{},[31,103422,30103],{},[31,103424,30144],{},[49,103426,30149],{"id":30148},[16,103428,30152,103429,30155,103431,30159],{},[31,103430,29977],{},[31,103432,30158],{},[82,103434,103436],{"className":103435,"code":30163,"language":1099,"meta":87},[1097],[31,103437,30163],{"__ignoreMap":87},[16,103439,103440,30170,103442,64,103444,64,103446,30177],{},[31,103441,30158],{},[31,103443,30098],{},[31,103445,12660],{},[31,103447,30103],{},[16,103449,30180],{},[24,103451,103452,103454,103458,103460],{},[27,103453,30185],{},[27,103455,30188,103456,30191],{},[31,103457,30144],{},[27,103459,30194],{},[27,103461,30197],{},[16,103463,30200],{},[49,103465,30204],{"id":30203},[16,103467,30207,103468,30210,103470,64,103472,64,103474,30217,103476,3512],{},[31,103469,30107],{},[31,103471,30098],{},[31,103473,12660],{},[31,103475,30103],{},[31,103477,30220],{},[16,103479,30223],{},[16,103481,30226],{},[82,103483,103484],{"className":6839,"code":30229,"language":6841,"meta":87,"style":87},[31,103485,103486,103494,103502],{"__ignoreMap":87},[91,103487,103488,103490,103492],{"class":93,"line":94},[91,103489,7202],{"class":97},[91,103491,30238],{"class":169},[91,103493,30241],{"class":169},[91,103495,103496,103498,103500],{"class":93,"line":105},[91,103497,7202],{"class":97},[91,103499,30248],{"class":169},[91,103501,30251],{"class":108},[91,103503,103504,103506,103508,103510],{"class":93,"line":121},[91,103505,7202],{"class":97},[91,103507,30238],{"class":169},[91,103509,30260],{"class":108},[91,103511,30263],{"class":169},[16,103513,30266],{},[49,103515,30270],{"id":30269},[16,103517,30273],{},[16,103519,30276],{},[82,103521,103522],{"className":6839,"code":30279,"language":6841,"meta":87,"style":87},[31,103523,103524],{"__ignoreMap":87},[91,103525,103526,103528,103530,103532,103534],{"class":93,"line":94},[91,103527,7202],{"class":97},[91,103529,30129],{"class":169},[91,103531,30290],{"class":108},[91,103533,6594],{"class":108},[91,103535,30295],{"class":169},[16,103537,30298],{},[24,103539,103540,103542],{},[27,103541,30303],{},[27,103543,30306],{},[49,103545,30310],{"id":30309},[16,103547,30313],{},[16,103549,30316,103550,30320,103552,30324],{},[31,103551,30319],{},[31,103553,30323],{},[82,103555,103556],{"className":6839,"code":30327,"language":6841,"meta":87,"style":87},[31,103557,103558,103566,103576],{"__ignoreMap":87},[91,103559,103560,103562,103564],{"class":93,"line":94},[91,103561,7202],{"class":97},[91,103563,30238],{"class":169},[91,103565,30241],{"class":169},[91,103567,103568,103570,103572,103574],{"class":93,"line":105},[91,103569,7202],{"class":97},[91,103571,30344],{"class":169},[91,103573,30347],{"class":108},[91,103575,30350],{"class":169},[91,103577,103578,103580,103582,103584],{"class":93,"line":121},[91,103579,7202],{"class":97},[91,103581,30357],{"class":169},[91,103583,30290],{"class":108},[91,103585,30362],{"class":169},[16,103587,30365],{},[82,103589,103590],{"className":6839,"code":30368,"language":6841,"meta":87,"style":87},[31,103591,103592,103604],{"__ignoreMap":87},[91,103593,103594,103596,103598,103600,103602],{"class":93,"line":94},[91,103595,7202],{"class":97},[91,103597,30377],{"class":169},[91,103599,30380],{"class":108},[91,103601,30383],{"class":169},[91,103603,30241],{"class":169},[91,103605,103606,103608,103610,103612],{"class":93,"line":105},[91,103607,7202],{"class":97},[91,103609,30392],{"class":169},[91,103611,30395],{"class":108},[91,103613,30241],{"class":169},[16,103615,30400],{},[49,103617,6005],{"id":6004},[1112,103619],{"description":30405,"host":7154,"title":30406,"url":30407},[1112,103621],{"description":30410,"host":7154,"title":30411,"url":30412},[1112,103623],{"description":30415,"host":7170,"title":30416,"url":30417},[829,103625,30420],{},{"title":87,"searchDepth":105,"depth":105,"links":103627},[103628,103629,103630,103631,103632,103633,103634],{"id":29984,"depth":105,"text":29985},{"id":30083,"depth":105,"text":30084},{"id":30148,"depth":105,"text":30149},{"id":30203,"depth":105,"text":30204},{"id":30269,"depth":105,"text":30270},{"id":30309,"depth":105,"text":30310},{"id":6004,"depth":105,"text":6005},{},{"title":29969,"description":30431},{"loc":30434},[7202,7203,30439,30440,30441],{"id":30444,"title":30445,"body":103640,"created":4430,"description":30493,"extension":843,"filename":30494,"meta":103672,"navigation":846,"path":30498,"seo":103674,"sitemap":103675,"stem":30501,"subject":851,"tags":103676,"updated":4430,"volume":1863,"__hash__":30503},{"type":8,"value":103641,"toc":103670},[103642,103646,103650,103652,103664],[16,103643,103644],{},[19,103645],{"alt":21,"src":30452},[16,103647,30455,103648,30459],{},[31,103649,30458],{},[1112,103651],{"description":30462,"favicon":9248,"host":5541,"title":30463,"url":30464},[1722,103653,103654],{},[16,103655,103656,30471,103658,30475,103660,30478,103662,30481],{},[91,103657,1728],{},[31,103659,30474],{},[31,103661,30458],{},[31,103663,30474],{},[16,103665,30484,103666,30487,103668,30490],{},[31,103667,30458],{},[31,103669,30474],{},{"title":87,"searchDepth":105,"depth":105,"links":103671},[],{"references":103673},[30497],{"title":30445,"description":30493},{"loc":30498},[86],[103678,103680,103684,103688,103692,103696,103700,103703,103707,103711,103714,103718,103721,103725,103729,103733,103737,103741,103744,103747,103751,103755,103759,103763,103766,103770,103774,103778,103782,103786,103790,103794,103798,103802,103806,103810,103813,103816,103820,103824,103827,103831,103835,103838,103842,103846,103849,103853,103857,103860,103864,103868,103871,103875,103879,103883,103887,103891,103895,103898,103902,103906,103910,103914,103918,103922,103925,103929,103933,103937,103941,103944,103947,103950,103954,103958,103962,103966,103970,103973,103976,103980,103984,103988,103991,103995,103998,104001,104004,104008,104011,104015,104019,104023,104027,104030,104034,104038,104042,104046,104050,104053,104056,104060,104064,104068,104072,104076,104080,104084,104088,104092,104096,104100,104103,104107,104111,104115,104118,104122,104125,104129,104132,104135,104139,104143,104147,104151,104155,104158,104161,104165,104169,104173,104177,104181,104185,104189,104193,104196,104200,104204,104208,104211,104214,104218,104222,104226,104230,104233,104237,104240,104244,104248,104252,104255,104258,104262,104266,104270,104273,104276,104280,104284,104288,104290,104294,104298,104302,104305,104308,104312,104316,104320,104323,104327,104331,104335,104338,104342,104346,104350,104354,104357,104361,104365,104369,104373,104377,104381,104385,104389,104393,104396,104400,104404,104408,104412,104416,104420,104423,104427,104431,104434,104438,104440,104444,104448,104452,104456,104460,104464,104466,104470,104474,104478,104482,104486,104490,104494,104498,104502,104506,104510,104514,104517,104521,104525,104528,104531,104535,104539,104543,104547,104551,104555,104558],{"id":847,"title":6,"titles":103679,"content":842,"level":94},[],{"id":103681,"title":14,"titles":103682,"content":103683,"level":94},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#box-model",[],"Content: 실제 내용이 들어가는 영역. width와 height가 기본적으로 지정하는 영역.Padding: 콘텐츠와 테두리 사이의 여백인데 배경색은 이 영역까지 적용됨.Border: 패딩을 감싸는 선.Margin: 테두리 바깥의 공간으로, 다른 요소와의 간격을 벌릴 때 사용. 배경색이 적용되지 않는 투명한 영역",{"id":103685,"title":51,"titles":103686,"content":103687,"level":105},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#box-sizing",[14],"content-box : 컨텐츠 영역만 width 로 잡겠다.\nwidth: 100px, padding: 20px인 경우 : 전체 너비는 140px이 된다.border-box : 테두리까지 포함한 크기가 width 이다. (margin 은 아님)\n전체 너비가 100px 이고 컨텐츠 영역이 60px 로 줄어든다.",{"id":103689,"title":80,"titles":103690,"content":103691,"level":94},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#_1줄-말줄임",[],".line-clamp-1-normal {\n  overflow: hidden;\n  text-overflow: ellipsis;\n} 부모의 width 가 결정되어 있는 경우에는 white-space: nowrap 이 없어도 말줄임이 발생한다. \u003Cdiv class=\"w-80 overflow-hidden\">\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">1\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1 min-w-0\">\n            \u003Cdiv class=\"text-overflow-ellipsis overflow-hidden\">white-space: nowrap 없어서 줄바꿈되고 말줄임도 안일어남\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.01\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">2\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1 min-w-0\">\n            \u003Cdiv class=\"truncate\">의도한대로 줄바꿈이 일어난 경우입니다람쥐\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.02\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center\">\n        \u003Cdiv class=\"w-6 h-6\">3\u003C\u002Fdiv>\n        \u003Cdiv class=\"flex-1\">\n            \u003Cdiv class=\"truncate\">min-width: 0 없어서 줄어들지 않음\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv>2024.01.03\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv> flexbox 내부에서는 자식 컴포넌트의 말줄임을 할 땐, 너비에 맞춰서 자동으로 줄바꿈이 되기 때문에 white-space: nowrap 속성이 필요해진다.\nflexbox 안의 다른 요소와 함께 너비가 결정되는 경우 min-width: 0px; 가 필요하기도 하다.",{"id":103693,"title":515,"titles":103694,"content":103695,"level":105},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#min-w-0",[80],"기본적으로 min-width : auto; 로 작동한다. 이는 최소한의 너비를 보장하라는 뜻이다. 보통을 글자의 경우 자동 줄바꿈이 되는데, whitespace-nowrap 과 만나게 되면 자신의 너비를 유지하기 위해서 overflow 가 발생한다. 부모 컨테이너의 너비가 한정되어 있어도 줄바꿈을 절대 하지 않기 때문에 벗어나면서 컨텐츠 영역이 보장되기 때문에 overflow 가 발생하지 않는다. min-width: 0px; 를 주게되면. 0px 까지 줄어들 수 있어 라는 뜻이 된다. 그래서 최소 너비를 보장하지 않아도, 줄어들 수 있고, nowrap 과 만나도, 줄어들 수 있기 때문에 text overflow 가 발생할 수 있게 된다.",{"id":103697,"title":538,"titles":103698,"content":103699,"level":105},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#_2줄-말줄임",[80],".\btext-over {\n    max-width: 253px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n} 이렇게만 했을 때는 분명 2줄 말줄임이었는데 1줄 말줄임으로 표시되었다. css 만 봐서는 문제가 없어보였다. .text-over {\n    max-width: 253px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: normal; \u002F\u002F 이게 들어가야 함\n} 그런데 나도 모르게 상속된 white-space 속성이 줄바꿈을 방지해서 1줄까지만 표시되고 말줄임이 일어났던 것이다. -webkit-line-clamp 가 2이상 작동하려면 일단 줄바꿈이 일어나야 한다.  white-space 를 지정해주어야 정해진 줄 수에서 말줄임이 일어난다. white-space: nowrap; 인 경우는 애초에 줄바꿈이 일어나지 않기 때문에 2줄이 되지 않는다.",{"id":103701,"title":752,"titles":103702,"content":755,"level":105},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#알아두면-좋을-다른-auto-속성들",[80],{"id":103704,"title":33,"titles":103705,"content":103706,"level":121},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#width",[80,752],"width 는 element 가 block 이냐 inline 이냐에 따라서 다르다. block : 가로 전체 100%inline : 컨텐츠의 너비만큼",{"id":103708,"title":774,"titles":103709,"content":103710,"level":134},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#_100-와의-차이점",[80,752,33],"width: 100% : border, padding 제외 컨텐츠 영역만 100%\nbox-sizing: border-box; 를 주면 auto 와 마찬가지로 작동함width: auto : 해당 요소의 전체 너비(margin + border + padding + content)가 부모 요소의 콘텐츠 영역(content area)에 맞춰진다. padding 값을 추가하면 컨텐츠 영역은 줄어든다는 것.",{"id":103712,"title":812,"titles":103713,"content":87,"level":121},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#table",[80,752],{"id":103715,"title":815,"titles":103716,"content":103717,"level":134},"\u002Fblog\u002F250724-interact-text-overflow-white-space-width#table-layout",[80,752,812],"\u003Ctable> 의 열 너비값을 어떻게 정할지 정한다. auto 가 기본이라서 가장 넓은 콘텐츠에 맞춰서 자동으로 지정된다. -> 컨텐츠의 크기를 모두 게산하고 나서야 열의 너비를 알고 렌더링하기 때문에 속도가 조금 느릴 수 있음. fixed 를 사용하면 첫 행의 너비만으로 결정한다. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"id":1505,"title":857,"titles":103719,"content":103720,"level":94},[],"웹과 안드로이드에서 사진의 EXIF 데이터를 다루는 방법. 브라우저의 보안 특성 상 웹에서는 EXIF 를 의도적으로 누락시킴. **EXIF(Exchangeable Image File Format)**는 사진 이미지 데이터 자체 외에, 그 사진이 어떻게, 언제, 어디서, 무엇으로 찍혔는지에 대한 구체적인 **메타데이터(데이터에 대한 데이터)**를 담고 있다. 카메라 정보: 어떤 장비로 사진을 찍었는지 알려준다.\n카메라 제조사 및 모델: 예) SAMSUNG, Apple, SM-S928N, iPhone 15 Pro렌즈 정보: 사용된 렌즈의 종류, 초점 거리 등촬영 설정값: 사진을 어떤 설정으로 찍었는지에 대한 기술적인 정보.\nISO 감도: 빛에 얼마나 민감하게 반응했는지조리개 값 (F-stop): 렌즈를 얼마나 열었는지 (심도 표현과 관련)셔터 속도: 얼마나 빠른 속도로 빛을 받아들였는지 (움직임 표현과 관련)노출 보정, 화이트 밸런스, 플래시 사용 여부 등시간 및 위치 정보: 사진 찍은 시간, 위경도\n촬영 날짜 및 시간: 사진을 찍은 정확한 날짜와 시간.GPS 좌표 (위도, 경도): 카메라의 위치 정보 기록 기능이 켜져 있어야 함. 내가 필요한 건 시간 및 위치 정보가 남기를 바란다.",{"id":103722,"title":949,"titles":103723,"content":103724,"level":94},"\u002Fblog\u002F250819-exif#webview-태그를-통해서-업로드-시",[],"브라우저에서 \u003Cinput type=\"file\"> 를 통해 파일을 선택하면, 안드로이드의 파일 선택기가 열리고, 브라우저는 파일의 복사본을 만들어둔다. 이 과정에서 브라우저는 개인정보 유출을 막기 위해서 EXIF 데이터를 의도적으로 삭제한다. 웹뷰의 경우 onShowFileChooser 에서 개발자가 EXIF 정보가 보존되게 할 수 있다. ACCESS_MEDIA_LOCATION 권한을 사용자에게 허가받으면 파일의 위치 정보를 보존할 수 있다 \u003Cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" \u002F>\n\u003Cuses-permission android:name=\"android.permission.ACCESS_MEDIA_LOCATION\" \u002F> onShowFileChooser 에서 파일 선택 결과를 ActivityResultLauncher 로 받는데, 이때 Uri 를 가공하지 않고 그대로 filePathCallback.onReceiveValue() 에 전달하면 된다. \u002F\u002F EXIF 정보 디버그 출력  \ntry {  \n    val uri = data?.data  \n    if (uri != null) {  \n        activity.contentResolver.openInputStream(uri)?.use { inputStream ->  \n            val exif = ExifInterface(inputStream)  \n            Log.d(TAG, \"Single File EXIF Info:\")  \n            Log.d(TAG, \"  DateTime: ${exif.getAttribute(ExifInterface.TAG_DATETIME)}\")  \n            Log.d(TAG, \"  GPS Latitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)}\")  \n            Log.d(TAG, \"  GPS Longitude: ${exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)}\")  \n            Log.d(TAG, \"  Make: ${exif.getAttribute(ExifInterface.TAG_MAKE)}\")  \n            Log.d(TAG, \"  Model: ${exif.getAttribute(ExifInterface.TAG_MODEL)}\")  \n            Log.d(TAG, \"  Orientation: ${exif.getAttribute(ExifInterface.TAG_ORIENTATION)}\")  \n        }  \n    }  \n} catch (e: Exception) {  \n    Log.e(TAG, \"EXIF 정보 읽기 실패\", e)  \n} Single File EXIF Info:\n   DateTime: 2025:07:18 08:43:28\n   GPS Latitude: 37\u002F1,0\u002F1,0\u002F100000\n   GPS Longitude: 127\u002F1,0\u002F1,0\u002F00000\n   Make: samsung\n   Model: SM-N960N\n   Orientation: 6 ACCESS_MEDIA_LOCATION 권한을 부여하면 GPS 정보가 정상적으로 기록된다. 그렇지 않으면 0\u002F1과 같은 형태로 기록된다. 따라서 사용자에게 권한을 명시적으로 받아야 한다.",{"id":103726,"title":1110,"titles":103727,"content":103728,"level":94},"\u002Fblog\u002F250819-exif#웹에서-exif-정보-가져오기",[],"웹에서 파일 업로드를 했을 때 EXIF 정보가 누락되는 현상이 있다. 하지만 위 사이트에서는 정상적으로 작동한다. 무슨 차이가 있을까? 위 페이지는 파일을 \u003Cform> 태그를 통해 그대로 서버로 전달하기 때문에 EXIF 데이터의 손실 없이 전달되어 분석이 가능한 것이다. 반면 브라우저 JavaScript에서 파일 데이터에 직접 접근하려고 하면 브라우저 보안 정책상 일부 정보(EXIF 등)가 차단될 수 있다.",{"id":103730,"title":1132,"titles":103731,"content":103732,"level":105},"\u002Fblog\u002F250819-exif#웹뷰에서-native-로직을-통해-전달된-경우",[1110],"앱이 OS 권한을 얻어서 브라우저 기본 정책이 아닌 앱의 권한으로 데이터를 직접 전달한다. 따라서 앱을 통해 파일을 선택한 경우 웹에서도 EXIF 데이터를 조회하고 다룰 수 있게 된다. 다만 EXIF 도 개인정보로 취급할 수 있기 때문에 저장과 노출에 주의를 해야한다. 서버에 저장할 경우 정말 필요한 만큼만 특정되지 않을 정도의 정보만 취급하거나, 저장하지 않는 게 좋다. 정부 페이지에서 EXIF 데이터의 위험성과 대응법도 홍보하고 있다.",{"id":103734,"title":1151,"titles":103735,"content":103736,"level":121},"\u002Fblog\u002F250819-exif#데이터-형식",[1110,1132],"fileList.forEach((file) => {\n    exifr.parse(file)\n        .then((metadata: any) => {\n            console.log(`[EXIF] ${file.name}`, metadata);\n        })\n        .catch((error: any) => {\n            console.error(`[EXIF] Failed to parse EXIF for ${file.name}`, error);\n        });\n}); exifr 라이브러리를 활용해서 EXIF 데이터를 분석했다. parse 결과값에서 원하는 정보를 활용하면 된다.",{"id":103738,"title":1313,"titles":103739,"content":103740,"level":105},"\u002Fblog\u002F250819-exif#exif-데이터-삽입하기-piexif-라이브러리",[1110],"이미지를 후처리하다가 EXIF 데이터가 소실되는 경우도 있다. 예를 들어 캔버스(Canvas)에 이미지를 그리고 추가적인 처리를 한 뒤 다시 이미지로 추출했을 때는 EXIF 데이터가 없는 상태가 된다. 이러한 경우에는 미리 가지고 있던 EXIF 데이터를 저장해두었다가 결과 이미지에 주입하는 방법을 사용할 수 있다. exifr 라이브러리는 읽기 전용 라이브러리이므로, EXIF 데이터를 파일에 쓰는 기능은 없다. piexif 라이브러리를 사용해보자. \u002F\u002F EXIF 저장\nlet exifStr: string | null = null;\ntry {\n    const originalDataURL = await fileToDataURL(origFile);\n    const exifObj = piexif.load(originalDataURL);\n    exifStr = piexif.dump(exifObj);\n} catch (e) { ... }\n\n\u002F\u002F EXIF 삽입\ntry {\n    finalDataURL = piexif.insert(exifStr, resizeResult.dataURL);\n} catch (e) { ... } 원본의 exif 가 그대로 주입된다. 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);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":1858,"title":1516,"titles":103742,"content":103743,"level":94},[],"accordion 을 만들며 height 를 조정해 접고 펼침을 구현할 때, 애니메이션의 딜레이가 발생하는 이유와 헤결, 경험을 공유. .memo-text {\n  word-break: break-word;\n  max-height: 48px;\n  transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n  overflow: hidden;\n  position: relative;\n  will-change: max-height;\n  \n  &.memo-text-expanded {\n    max-height: 1000px;\n    transition: max-height 1s ease-in-out;\n    \n    &::after {\n      opacity: 0;\n    }\n  }\n} 이렇게 2줄 이상일 때 아래 그라데이션이 생기고 (::after 부분) 접고 펼 수 있는 기능이다. max-height 를 조절해서 구현했는데, 펼칠 때는 너무 빠르고, 닫을 때는 너무 느린 현상이 발생했다. 여기에서 처럼 cubic-bezier 를 조절했다. !hint\nIt's because you're animating between 0 and 1000px max-height, but your content is only about 120px high. The delay is the animation happening on the 880 pixels you can't see.\nmax-height 가 1000px 에서 0으로 주는 동안 120px 짜리의 컨텐츠는 아무 동작을 안하는 것처럼 보이는 것이다. .text {\n  overflow: hidden;\n  max-height: 0;\n  transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n  &.full {\n    max-height: 1000px;\n    transition: max-height 1s ease-in-out;\n} 그래서 이렇게 극단적으로 애니메이션 동작 지점을 단축시키면서 해결한듯 하다. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}",{"id":2858,"title":1867,"titles":103745,"content":103746,"level":94},[],"Vue에서 부모 컴포넌트의 비동기 초기화 작업이 완료된 시점을 자식 컴포넌트에게 안전하게 전달하는 방법을 알아봅니다. Promise.withResolvers를 활용한 패턴을 소개 일반적으로 Vue에서는 부모가 자식에게 값을 전달하고, 자식은 이벤트를 통해 부모에게 데이터를 전달하는 Props Down, Events Up 방식을 따른다. 부모가 자식의 내부 함수를 직접 호출하는 방식은 컴포넌트 간 결합도를 높이므로 지양하는 편이다. 하지만 부모 컴포넌트의 특정 비동기 작업이 완료된 시점을 자식 컴포넌트가 정확히 알아야 할 때가 있다. 예를 들어, 부모가 비동기로 초기화 데이터를 모두 가져온 후에만 자식 컴포넌트가 로직을 수행해야 하는 경우다. 부모의 isInitialized 변수를 자식에게 전달하고, 자식은 watch 로 감지하기.자식의 parentInitialized() 함수를 defineExpose 로 export 한 후 template ref 로 호출하기.promise 를 전달해서 적절한 시점에 자식이 then 블럭에서 기능 수행하기. 이 중 3번째 방법을 고안해냈다. 첫 번째 방법(watch)은 의도하지 않은 시점에 변수가 변경되어 사이드 이펙트가 발생할 가능성이 있다. 단순한 값이 아닌 복잡한 초기화 흐름을 제어하고 싶을 때, 예기치 않은 타이밍에 감지가 일어나 로직이 꼬일 수 있다. 또한 자식 컴포넌트가 마운트되기 전에 이미 부모의 초기화가 끝나버렸다면 감지가 불가능할 수도 있다. 두 번째 방법(defineExpose)은 부모가 자식의 구현 상세(메서드명 등)를 알아야 하므로 결합도가 높아진다.",{"id":103748,"title":1917,"titles":103749,"content":103750,"level":94},"\u002Fblog\u002F260119-tracking-parent-the-time#promise-전달해서-자식도-초기화-시점-감지하기",[],"ECMAScript 2024 에 추가된 Promise.withResolvers를 활용하면 완료 시점을 깔끔하게 싱크할 수 있다. 일반적인 비동기 함수는 실행과 동시에 Promise를 반환한다. 하지만 Promise.withResolvers를 사용하면 Promise 객체와 이를 해결할 수 있는 resolve 함수를 분리하여 선언할 수 있다. 덕분에 부모는 원하는 복잡한 로직을 모두 수행한 뒤, 아주 정밀한 타이밍에 자식에게 신호를 보낸다. \u003Cscript setup lang=\"ts\">\n\u002F\u002F Promise와 resolve 함수를 외부로 추출하여 선언\nconst initReady = Promise.withResolvers\u003Cvoid>();\n\nasync function runInit() {\n  try {\n    \u002F\u002F API 호출, 로컬 스토리지 확인, 권한 체크 등 복잡한 초기화 수행\n    await doSomethingComplex();\n    \n    \u002F\u002F 모든 작업이 끝난 원하는 시점에 약속 이행\n    initReady.resolve();\n  } catch (error) {\n    initReady.reject(error);\n  }\n}\n\nonMounted(() => {\n  runInit();\n});\n\u003C\u002Fscript>\n\u003Ctemplate>\n  \u003CChild :init-ready=\"initReady.promise\" \u002F>\n\u003C\u002Ftemplate> 부모는 initReady라는 통신 창구를 만들어둔다. initReady.resolve()가 호출되는 순간 대기하고 있던 자식 컴포넌트들에게 신호가 전달된다. 자식에게는 initReady.promise 객체만 Props로 전달하면 된다. \u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{\n  initReady: Promise\u003Cvoid>\n}>();\n\nonMounted(async () => {\n  \u002F\u002F 부모의 초기화가 끝날 때까지 대기\n  await props.initReady;\n  \n  \u002F\u002F 이후 로직 실행\n  console.log(\"부모의 준비가 끝나 자식 로직을 시작합니다.\");\n});\n\u003C\u002Fscript> await props.initReady를 통해 부모의 초기화가 완료된 이후에만 로직이 실행되도록 보장할 수 있다.",{"id":103752,"title":2302,"titles":103753,"content":103754,"level":94},"\u002Fblog\u002F260119-tracking-parent-the-time#자식이-v-if-로-마운트의-on-off-를-반복할-때",[],"자식 컴포넌트가 v-if에 의해 언마운트되었다가 다시 마운트되는 경우, initReady 신호를 놓치지 않을까 걱정할 수 있다. 하지만 Promise는 한 번 resolve 되면 그 상태(Fulfilled)가 유지된다. 따라서 자식 컴포넌트가 다시 생성되어 await props.initReady를 실행하더라도, 이미 완료된 Promise이므로 즉시 다음 로직이 실행된다. 매번 상태를 다시 확인할 필요 없이 안정적인 동작을 보장한다.",{"id":103756,"title":2322,"titles":103757,"content":103758,"level":94},"\u002Fblog\u002F260119-tracking-parent-the-time#provide-inject-로-깊은-여러-컴포넌트에-전달",[],"컴포넌트 계층이 깊거나(Prop Drilling 문제), 여러 자식 컴포넌트가 동시에 신호를 받아야 하는 경우 provide와 inject를 활용할 수 있다. const initReady = Promise.withResolvers\u003Cvoid>();\n\u002F\u002F promise 를 provide\nprovide('initReady', initReady.promise); 부모는 provide를 통해 Promise 객체를 하위 컴포넌트들에 공급한다. \u002F\u002F promise 주입받기\nconst initReady = inject\u003CPromise\u003Cvoid>>('initReady');\n\nonMounted(async () => {\n  if (initReady) {\n    await initReady;\n    console.log(\"초기화 완료 후 자식 로직 실행\");\n  }\n}); inject를 통해 받아와서 사용하면 된다. 하지만 단순히 문자열 키('initReady')로 주입받으면 타입 추론이 안 되거나, 데이터의 출처를 명확히 알기 어려워 유지보수가 힘들어질 수 있다.",{"id":103760,"title":2483,"titles":103761,"content":103762,"level":105},"\u002Fblog\u002F260119-tracking-parent-the-time#composable-를-활용해-추적을-용이하게-하기",[2322],"provide\u002Finject 패턴은 키 관리나 타입 정의가 번거로울 수 있으므로, Composable 함수(Hook)로 캡슐화하여 사용하는 것을 선호한다. import { provide, inject, InjectionKey } from 'vue';\n\u002F\u002F 심볼을 사용하여 고유한 키 정의 \nconst InitReadyKey: InjectionKey\u003CPromise\u003Cvoid>> = Symbol('InitReady');\n\n\u002F**\n * 부모에서 호출할 provide 함수\n *\u002F\nexport function provideInit(promise: Promise\u003Cvoid>) {\n  provide(InitReadyKey, promise);\n}\n\n\u002F** \n * 자식에서 사용할 composable\n *\u002F\nexport function useInit() {\n  const initReady = inject(InitReadyKey);\n  \u002F\u002F provide 없으면 에러\n  if (!initReady) {\n    throw new Error('useInit()은 provideInit() 범위 내에서 사용해야 합니다.');\n  }\n  return initReady;\n} 구조는 간단하다. provide와 inject 로직을 하나의 파일에서 관리하여 키(InjectionKey)와 타입의 일관성을 유지한다. \u003Cscript setup lang=\"ts\">\nimport { provideInit } from '.\u002FuseInit';\nconst initReady = Promise.withResolvers\u003Cvoid>();\nprovideInit(initReady.promise); \u002F\u002F 추상화된 함수 호출\n\u003C\u002Fscript>\n\n\u003Cscript setup lang=\"ts\">\nimport { useInit } from '.\u002FuseInit';\nconst initReady = useInit(); \u002F\u002F 내부 로직을 몰라도 안전하게 주입받음\n\u003C\u002Fscript> 타입 추론도 제공하고, 단일 파일에서 파악이 가능하기 때문에 가독성도 높고 유지보수하기 좋다. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"id":4434,"title":2869,"titles":103764,"content":103765,"level":94},[],"안드로이드 Camera2 API로 업무 문서 촬영용 커스텀 카메라 화면을 구현하면서 정리한 미리보기 파이프라인, 가이드라인 오버레이, 줌, JPEG_ORIENTATION, GPS EXIF, ImageReader 안정화 방식을 설명한다. 웹뷰 기반의 웹 개발을 하다가, 카메라를 활용한 UI 제작이 필요해졌다. 카메라 화면에 가이드라인을 띄우는 등의 커스텀 화면을 제작하게 됨. 그래서 네이티브 카메라 화면을 직접 띄우고, 미리보기 위에 문서 촬영 가이드라인을 표시하는 구조를 구성했다. Camera2 API의 미리보기와 캡처 파이프라인, TextureView와 Surface, 기기별 센서 회전값, JPEG EXIF 방향 정보, GPS 메타데이터, ImageReader 버퍼 관리까지 함께 다루었다.",{"id":103767,"title":2892,"titles":103768,"content":103769,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#커스텀-카메라가-필요한-이유",[2869],"요구사항은 단순한 사진 촬영이 아니었다. 특정 문서 첨부 옵션에서 사진을 추가할 때 전용 카메라 화면을 열고, 카메라 미리보기 위에 사각형 가이드라인을 표시해야 했다. 카드 인식 화면에서 카드 모양의 틀을 제공하는 것과 비슷한 방식이다. 구체적인 화면 조건은 다음과 같았다. 웹뷰에서 파일 선택이 발생했을 때 특정 옵션이면 기본 선택기 대신 문서 촬영용 카메라 Activity를 실행한다.카메라 미리보기는 가로가 화면에 꽉 차고 세로가 더 긴 3:4 비율에 가깝게 보인다.문서가 들어가야 할 영역은 사각형 선으로 표시한다.사각형 바깥 영역은 어둡고 반투명하게 처리한다.촬영 결과는 기존 파일 선택 흐름과 동일하게 URI로 반환한다.촬영 시점의 위치 정보가 필요하면 EXIF에 GPS 정보를 추가한다. 웹에서도 getUserMedia 등을 사용해 카메라를 띄울 수 있지만, 앱 안에서 파일 선택 흐름과 권한, 촬영 결과 URI, GPS EXIF를 일관되게 다루려면 네이티브 구현이 더 적합하다. 특히 Android 카메라의 회전과 EXIF 처리는 웹 레이어에서 뒤늦게 보정하기보다 촬영 시점에 제어하는 편이 안전하다.",{"id":103771,"title":2929,"titles":103772,"content":103773,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#camera2-api의-기본-구조",[2869],"Camera2 API는 카메라 하드웨어를 제어하는 프레임워크다. 기본 카메라 앱을 여는 방식보다 복잡하지만, 미리보기 화면, 캡처 설정, 초점, 줌, JPEG 품질, EXIF 방향, 출력 Surface를 직접 구성할 수 있다. 전체 흐름은 다음과 같다. CameraManager\n  -> cameraId 선택\n  -> openCamera()\n  -> CameraDevice.StateCallback\n  -> CameraDevice\n  -> CaptureRequest 생성\n  -> CameraCaptureSession 생성\n  -> Preview Surface와 ImageReader Surface로 출력 CameraManager는 기기의 카메라 목록을 제공한다. 사용할 카메라 ID를 고른 뒤 openCamera()를 호출하면, CameraDevice.StateCallback을 통해 실제 카메라 장치 객체를 얻는다. 이후 CameraDevice로 미리보기 요청과 캡처 요청을 만들고, CameraCaptureSession을 통해 해당 요청을 카메라 하드웨어로 전달한다. Camera2는 화면에 직접 그리는 API가 아니라, 카메라 프레임을 어떤 Surface로 보낼지 정하는 방식으로 동작한다. 미리보기는 TextureView 또는 SurfaceView의 Surface로 보내고, 촬영 결과는 ImageReader의 Surface로 보낸다.",{"id":103775,"title":2989,"titles":103776,"content":103777,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#surfaceview와-textureview-선택",[2869],"카메라 미리보기를 표시할 때는 주로 SurfaceView 또는 TextureView를 사용한다. 구분장점단점SurfaceView하드웨어 오버레이를 사용해 성능과 배터리 효율이 좋다.뷰 변형, 회전, 투명도, 복잡한 오버레이 처리가 제한적이다.TextureView일반 View처럼 회전, 크기 조절, Matrix 변환을 적용하기 쉽다.SurfaceView보다 성능과 배터리 측면에서 불리할 수 있다. 문서 촬영 화면에서는 미리보기 위에 가이드라인을 올리고, 기기 회전에 따라 미리보기 변환도 적용해야 했다. 따라서 단순 성능만 보면 SurfaceView가 유리하지만, 화면 변형과 오버레이 제어를 고려하면 TextureView가 더 다루기 쉽다. TextureView를 사용할 때 주의할 점은 surfaceTexture가 준비되기 전에는 Surface를 만들 수 없다는 점이다. 실제 구현 중에도 다음과 같은 예외가 발생했다. java.lang.IllegalArgumentException: surfaceTexture must not be null\n    at android.view.Surface.\u003Cinit>(Surface.java:219) 이 문제는 TextureView의 준비 시점을 확인하지 않고 바로 Surface를 생성했을 때 발생한다. surfaceTexture가 null이면 미리보기 세션 생성을 중단하고, SurfaceTextureListener에서 준비 완료 시점에 카메라를 열도록 흐름을 맞추어야 한다. val surfaceTexture = textureView.surfaceTexture ?: run {\n    Log.e(TAG, \"SurfaceTexture가 아직 준비되지 않았습니다\")\n    return\n}\n\nval previewSurface = Surface(surfaceTexture) Camera2 구현은 카메라 장치보다 Surface 준비 시점이 더 늦을 수 있다는 점을 항상 고려해야 한다.",{"id":103779,"title":3128,"titles":103780,"content":103781,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#카메라-열기와-상태-콜백",[2869],"카메라를 열기 위해서는 먼저 카메라 권한을 확인한 뒤 CameraManager.openCamera()를 호출한다. private lateinit var cameraManager: CameraManager\nprivate var cameraDevice: CameraDevice? = null\n\ncameraManager = getSystemService(CAMERA_SERVICE) as CameraManager\n\nfor (id in cameraManager.cameraIdList) {\n    \u002F\u002F 후면 카메라 등 사용할 cameraId를 선택한다.\n}\n\ncameraManager.openCamera(cameraId, stateCallback, backgroundHandler) openCamera()에는 CameraDevice.StateCallback을 넘겨야 한다. 카메라는 다른 앱에서 사용 중일 수도 있고, 시스템에서 회수될 수도 있으며, 권한 또는 하드웨어 오류가 발생할 수도 있다. 따라서 정상 연결뿐 아니라 연결 해제와 오류 상황을 모두 처리해야 한다. private val stateCallback = object : CameraDevice.StateCallback() {\n    override fun onOpened(camera: CameraDevice) {\n        cameraDevice = camera\n        createPreviewSession()\n    }\n\n    override fun onDisconnected(camera: CameraDevice) {\n        camera.close()\n        cameraDevice = null\n    }\n\n    override fun onError(camera: CameraDevice, error: Int) {\n        camera.close()\n        cameraDevice = null\n\n        val errorMessage = when (error) {\n            ERROR_CAMERA_IN_USE -> \"카메라가 다른 앱에서 사용 중입니다\"\n            ERROR_MAX_CAMERAS_IN_USE -> \"최대 카메라 사용 개수를 초과했습니다\"\n            ERROR_CAMERA_DISABLED -> \"카메라가 비활성화되었습니다\"\n            ERROR_CAMERA_DEVICE -> \"카메라 장치 오류가 발생했습니다\"\n            ERROR_CAMERA_SERVICE -> \"카메라 서비스 오류가 발생했습니다\"\n            else -> \"알 수 없는 카메라 오류가 발생했습니다\"\n        }\n\n        runOnUiThread {\n            Toast.makeText(this@DocumentCameraActivity, errorMessage, Toast.LENGTH_LONG).show()\n            finish()\n        }\n    }\n} 카메라 오류는 사용자의 행동과 무관하게 발생할 수 있으므로, 오류 메시지를 남기고 Activity를 정리하는 흐름을 두어야 한다. 카메라 리소스를 닫지 않으면 다음 실행에서 카메라를 다시 열지 못하는 상황이 생길 수 있다.",{"id":103783,"title":3352,"titles":103784,"content":103785,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#미리보기-세션-만들기",[2869],"카메라가 열리고 TextureView의 Surface가 준비되면 미리보기 요청을 만든다. 미리보기는 CameraDevice.TEMPLATE_PREVIEW 템플릿을 사용한다. val surfaceTexture = textureView.surfaceTexture ?: return\nval previewSurface = Surface(surfaceTexture)\n\npreviewRequestBuilder =\n    cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)\n\npreviewRequestBuilder?.addTarget(previewSurface) 이후 createCaptureSession()으로 미리보기 Surface와 캡처용 Surface를 묶어 세션을 구성한다. cameraDevice?.createCaptureSession(\n    surfaces,\n    object : CameraCaptureSession.StateCallback() {\n        override fun onConfigured(session: CameraCaptureSession) {\n            captureSession = session\n\n            val previewRequest = previewRequestBuilder?.build() ?: return\n            session.setRepeatingRequest(previewRequest, null, backgroundHandler)\n        }\n\n        override fun onConfigureFailed(session: CameraCaptureSession) {\n            Log.e(TAG, \"CameraCaptureSession 구성 실패\")\n        }\n    },\n    backgroundHandler\n) setRepeatingRequest()는 미리보기 프레임을 계속 갱신하는 요청이다. 이 요청이 유지되는 동안 사용자는 카메라 화면을 실시간으로 볼 수 있다. 반면 실제 사진 촬영은 capture()로 일회성 요청을 보내는 방식이다. 미리보기와 캡처는 같은 카메라 장치를 사용하지만 요청 템플릿과 출력 Surface가 다르다.",{"id":103787,"title":3501,"titles":103788,"content":103789,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#이미지-캡처와-결과-반환",[2869],"사진 촬영은 TEMPLATE_STILL_CAPTURE 요청을 사용한다. 미리보기와 동일한 카메라 장치에서 요청을 만들지만, 출력 대상은 화면 Surface가 아니라 ImageReader.surface다. private fun captureImage() {\n    val captureRequestBuilder =\n        cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)\n\n    captureRequestBuilder?.addTarget(imageReader?.surface!!)\n    captureRequestBuilder?.set(\n        CaptureRequest.CONTROL_AF_MODE,\n        CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE\n    )\n    captureRequestBuilder?.set(CaptureRequest.JPEG_QUALITY, 95.toByte())\n    captureRequestBuilder?.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation())\n\n    captureSession?.capture(\n        captureRequestBuilder?.build()!!,\n        null,\n        backgroundHandler\n    )\n} 캡처 결과는 ImageReader.OnImageAvailableListener에서 받는다. 이미지 저장은 파일 I\u002FO이므로 UI 스레드가 아니라 백그라운드 스레드에서 처리한다. private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader ->\n    val image = reader.acquireLatestImage() ?: return@OnImageAvailableListener\n\n    backgroundHandler?.post {\n        saveImage(image)\n    }\n} 저장 후에는 FileProvider로 얻은 URI를 결과 Intent에 담아 Activity를 종료한다. 이렇게 하면 웹뷰의 파일 선택 흐름과 비슷하게, 호출한 쪽에서는 촬영된 이미지 URI를 받을 수 있다. runOnUiThread {\n    val resultIntent = Intent()\n    resultIntent.data = imageUri\n    setResult(Activity.RESULT_OK, resultIntent)\n    finish()\n} 이 구조에서는 촬영 전용 Activity가 카메라 세부 구현을 책임지고, 호출 측은 URI만 받는다. 웹뷰나 상위 화면에서 Camera2 세부 구현을 알 필요가 없기 때문에 책임이 분리된다.",{"id":103791,"title":3695,"titles":103792,"content":103793,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#권한과-하드웨어-선언",[2869],"Camera2를 사용하려면 카메라 권한이 필요하다. 또한 앱이 카메라 하드웨어를 사용한다는 점을 Manifest에 선언해야 한다. \u003Cuses-permission android:name=\"android.permission.CAMERA\" \u002F>\n\n\u003Cuses-feature\n    android:name=\"android.hardware.camera\"\n    android:required=\"true\" \u002F>\n\n\u003Cuses-feature\n    android:name=\"android.hardware.camera.autofocus\"\n    android:required=\"false\" \u002F> 카메라가 앱의 필수 기능이면 android.hardware.camera를 required=\"true\"로 둘 수 있다. 다만 자동초점은 모든 기기에서 보장되지 않을 수 있으므로 required=\"false\"로 두는 편이 호환성에 유리하다. 런타임 권한은 Activity에서 확인하고 요청한다. private fun checkCameraPermission(): Boolean {\n    return ContextCompat.checkSelfPermission(\n        this,\n        Manifest.permission.CAMERA\n    ) == PackageManager.PERMISSION_GRANTED\n}\n\nprivate fun requestCameraPermission() {\n    ActivityCompat.requestPermissions(\n        this,\n        arrayOf(Manifest.permission.CAMERA),\n        CAMERA_PERMISSION_REQUEST\n    )\n} 권한이 거부되면 카메라 화면을 유지할 이유가 없으므로 안내 후 종료한다. override fun onRequestPermissionsResult(\n    requestCode: Int,\n    permissions: Array\u003CString>,\n    grantResults: IntArray\n) {\n    super.onRequestPermissionsResult(requestCode, permissions, grantResults)\n\n    if (requestCode == CAMERA_PERMISSION_REQUEST) {\n        if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {\n            openCamera()\n        } else {\n            Toast.makeText(this, \"카메라 권한이 필요합니다.\", Toast.LENGTH_SHORT).show()\n            finish()\n        }\n    }\n}",{"id":103795,"title":3920,"titles":103796,"content":103797,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#카메라-회전-문제의-본질",[2869],"화면에서 보이는 미리보기 방향과 실제 저장되는 JPEG 방향은 같은 문제가 아니다. 미리보기는 사용자 눈에 똑바로 보이면 되지만, 캡처 결과는 갤러리나 서버에서 열었을 때도 올바른 방향이어야 한다. 안드로이드 카메라 센서는 보통 기기 안에 가로 방향으로 장착되어 있다. 사용자는 세로 화면으로 촬영하지만 센서의 자연 방향은 다를 수 있다. 예를 들어 후면 카메라 센서가 90도, 전면 카메라 센서가 270도인 식이다. 전면후면270도90도 기기가 어떤 방향으로 들려 있는지도 함께 고려해야 한다. 같은 후면 카메라라도 사용자가 기기를 세로로 들었는지, 왼쪽으로 눕혔는지, 오른쪽으로 눕혔는지에 따라 저장될 JPEG의 방향 보정값이 달라진다.",{"id":103799,"title":3969,"titles":103800,"content":103801,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#미리보기-회전과-jpeg-회전은-다르다",[2869],"미리보기와 캡처 방향 보정은 목적과 방법이 다르다. 구분미리보기캡처 JPEG목표화면에서 사용자에게 똑바로 보이게 한다.저장된 파일이 뷰어에서 똑바로 보이게 한다.처리 위치TextureView의 Matrix 변환CaptureRequest.JPEG_ORIENTATION데이터원본 프레임은 그대로 두고 표시만 회전한다.JPEG EXIF 방향 태그를 기록한다. 미리보기는 View의 표시 문제다. TextureView.setTransform(matrix)를 사용해 회전과 스케일을 적용한다. private fun configureTransform(viewWidth: Int, viewHeight: Int) {\n    val rotation = windowManager.defaultDisplay.rotation\n    val matrix = Matrix()\n    val viewRect = RectF(0f, 0f, viewWidth.toFloat(), viewHeight.toFloat())\n    val centerX = viewRect.centerX()\n    val centerY = viewRect.centerY()\n\n    if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {\n        \u002F\u002F 회전과 스케일 보정\n    } else if (Surface.ROTATION_180 == rotation) {\n        matrix.postRotate(180f, centerX, centerY)\n    }\n\n    textureView.setTransform(matrix)\n} 반면 캡처는 저장 파일의 방향 문제다. CaptureRequest에 JPEG_ORIENTATION 값을 넣어야 한다. captureRequestBuilder?.set(\n    CaptureRequest.JPEG_ORIENTATION,\n    getJpegOrientation(cameraCharacteristics, displayRotation)\n) 이 둘을 혼동하면 화면에서는 똑바로 보이는데 갤러리에서는 누워 있거나, 반대로 저장 파일은 맞지만 미리보기 화면이 회전되어 보이는 문제가 생긴다.",{"id":103803,"title":4150,"titles":103804,"content":103805,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#jpeg_orientation-계산",[2869],"JPEG 방향은 센서 각도와 기기 회전값을 조합해서 계산한다. 후면 카메라는 일반적으로 다음 공식을 사용한다. (sensorOrientation - deviceOrientationDegrees + 360) % 360 전면 카메라는 거울 모드와 방향 차이 때문에 부호가 달라진다. (sensorOrientation + deviceOrientationDegrees) % 360 Kotlin 코드로 정리하면 다음과 같다. private fun getJpegOrientation(\n    characteristics: CameraCharacteristics,\n    deviceRotation: Int\n): Int {\n    val sensorOrientation =\n        characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION) ?: 0\n\n    val deviceOrientationDegrees = when (deviceRotation) {\n        Surface.ROTATION_90 -> 90\n        Surface.ROTATION_180 -> 180\n        Surface.ROTATION_270 -> 270\n        else -> 0\n    }\n\n    val lensFacing = characteristics.get(CameraCharacteristics.LENS_FACING)\n\n    return if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {\n        (sensorOrientation + deviceOrientationDegrees) % 360\n    } else {\n        (sensorOrientation - deviceOrientationDegrees + 360) % 360\n    }\n} 예를 들어 후면 카메라 센서가 90도일 때, 기기를 오른쪽으로 눕힌 상태에서 Display.getRotation()이 270도를 반환한다면 결과는 180도다. (90 - 270 + 360) % 360 = 180 이 값을 JPEG_ORIENTATION에 넣으면 JPEG 파일에는 EXIF 방향 정보가 기록된다. 많은 이미지 뷰어는 이 EXIF 값을 보고 사진을 올바른 방향으로 표시한다. url: https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48406497\u002Fcamera2-understanding-the-sensor-and-device-orientations\ntitle: \"Camera2 understanding the sensor and device orientations\"\ndescription: \"I bumped into an issue while trying to implement a touch to focus feature using the Android Camera2. The theory is easy:obtain the tap position in the preview surfacemap it to the dimensions of...\"\nhost: stackoverflow.com\nfavicon: https:\u002F\u002Fstackoverflow.com\u002FContent\u002FSites\u002Fstackoverflow\u002FImg\u002Ffavicon.ico?v=562fb39d93c8\nimage: https:\u002F\u002Fstackoverflow.com\u002FContent\u002FSites\u002Fstackoverflow\u002FImg\u002Fapple-touch-icon@2.png?v=0f0cab681579 여기서 주의할 점은 회전 API마다 기준이 다를 수 있다는 것이다. Display.getRotation()은 화면 표시 회전을 기준으로 하고, OrientationEventListener는 물리적인 기기 회전 각도를 더 직접적으로 다룬다. 두 값을 섞어 쓰면 방향 계산이 반대로 보일 수 있으므로, 하나의 기준을 정하고 로그로 센서 각도, 기기 각도, 결과 각도를 함께 확인해야 한다.",{"id":103807,"title":4340,"titles":103808,"content":103809,"level":105},"\u002Fblog\u002Fandroid-camera2-guideline-rotation#gps-exif는-자동으로-들어가지-않는다",[2869],"위치 권한이 있다고 해서 촬영 이미지의 EXIF에 위경도가 자동으로 들어가지는 않는다. 카메라 요청에 GPS 위치 정보를 명시적으로 넣어야 한다. 먼저 촬영 시점에 사용할 위치를 가져온다. fusedLocationProviderClient?.lastLocation\n    ?.addOnSuccessListener { location: Location? ->\n        callback(location)\n    }\n    ?.addOnFailureListener {\n        callback(null)\n    } 그 다음 캡처 요청에 JPEG_GPS_LOCATION을 설정한다. location?.let { loc ->\n    captureRequestBuilder?.set(CaptureRequest.JPEG_GPS_LOCATION, loc)\n} 이 설정을 추가해야 카메라 하드웨어 또는 프레임워크가 JPEG EXIF에 GPS 정보를 기록한다. 촬영 시점과 위치가 문서 데이터의 근거가 되는 경우 이 처리가 중요하다. 권한을 얻는 것과 EXIF에 기록하는 것은 별개의 단계다. 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);}",{"id":4564,"title":4445,"titles":103811,"content":103812,"level":94},[],"안드로이드 노티피케이션을 터치해 액티비티를 진입할 때 onCreate 에서 전달받는 데이터가 원치 않는 값으로 들어온다. 해결 방법을 찾아보자. fun sendNoti(title: String, message: String, data: Map\u003CString, String>) {  \n    val intent = Intent(this, MainActivity::class.java).apply {  \n        flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP\n        data.get(\"key\")?.let {value -> \n            this.putExtra(\"key\", value)\n        }\n    }\n    val pendingIntent = PendingIntent.getActivity(this, 0, intent, FLAG_MUTABLE) \n    val notificationBuilder = NotificationCompat.Builder(this, channelId)\n        .setContentIntent(pendingIntent)  \n} 이렇게 넣어주었는데, 노티를 띄울 때는\nintent Bundle[{key=newvalue}]\n로 표시되고 onCreate 에서 노티 데이터를 받았을 때는\nbundle Bundle[{key=oldvalue}] 로 표시된다. 가장 최근으로 띄운 노티의 데이터가 아닌, 이젠 노티의 데이터를 사용하는 듯 하다. Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras? - Stack Overflow 가장 최신의 노티 데이터를 항상 덮어 쓰게끔 하면 된다! FLAG_UPDATE_CURRENT 플래그를 사용하고requestCode 를 0 고정 값이 아니라 유니크한 값으로 지정해주면 된다. val pendingIntent = PendingIntent.getActivity(this, System.currentTimeMillis().toInt(), intent, FLAG_MUTABLE) 우선은 별다른 규칙 없이 현재 타임스탬프를 지정해주니까, 내가 넣어준 마지막 값으로 잘 들어온다. 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);}",{"id":4949,"title":4573,"titles":103814,"content":103815,"level":94},[],"안드로이드 15 (Target SDK 35) 업데이트 시 필수적으로 알아야 할 변경 사항과 Edge-to-Edge UI 강제화로 인해 발생하는 하이브리드 웹뷰 키보드 가림 버그 및 인셋 처리 해결책을 공유한다. 구글 플레이 스토어 배포 규격에 따라 targetSdkVersion을 35(안드로이드 15)로 설정하면 운영체제 수준에서 시스템 동작 및 UI 정책이 크게 변경된다. 특히 기존 레이아웃 구성을 흔드는 화면 전체 렌더링 강제화 정책은 하이브리드 웹뷰 앱 등에서 다양한 오동작을 일으킬 수 있다.",{"id":103817,"title":4598,"titles":103818,"content":103819,"level":105},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge#타겟-sdk-35-이상-앱의-주요-변경-사항",[4573],"빌드 타겟 버전을 35 이상으로 올리면 다음 규칙들이 적용되므로, 영향 범위가 넓은 요소들을 점검해야 한다. OpenJDK 17 마이그레이션: 안드로이드 15의 코어 런타임이 OpenJDK 17을 기반으로 하므로 관련 코어 자바\u002F코틀린 API 를 확인해야 함정확한 알람 권한 제한 (USE_EXACT_ALARM): 백그라운드 스케줄링 등에 쓰이는 정확한 알람을 구성하려면 명시적인 승인을 얻도록 정책이 엄격화포그라운드 서비스 유형 명시 선언 필수: AndroidManifest.xml 내에 포그라운드 서비스의 유형(dataSync, mediaProcessing 등)을 선언하지 않으면 런타임 차단이 발생한다.TextView elegantTextHeight 기본값 변환: 한글이나 아랍어 등 획이 크고 복잡한 문자열의 가독성을 높이기 위해 세로 폰트 크기가 자동 확장되는데, 이로 인해 텍스트 영역 레이아웃이 미세하게 뒤틀릴 수 있음Edge-to-Edge UI 기본 강제 적용: 가장 눈에 띄는 변화로, 앱 화면 전체를 상하단 시스템 바(상태바 및 소프트웨어 내비게이션 바) 영역까지 전부 덮어버리는 레이아웃 전체 렌더링 모드가 기본으로 사용됨 안드로이드 스튜디오의 Tools -> Android SDK Upgrade Assistant 기능을 활용하면 프로젝트 마이그레이션 단계에서 권장되는 체크리스트 가이드를 참고하여 도움을 받을 수 있다.",{"id":103821,"title":4658,"titles":103822,"content":103823,"level":105},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge#edge-to-edge-ui와-인셋의-이해",[4573],"Edge-to-Edge 모드가 켜지면 상태바나 기기 내비게이션 바가 반투명 또는 완전히 투명해지면서 앱 콘텐츠가 덮힌다.\n이를 제어하는 핵심 개념이 인셋 (Inset) 이다. Inset은 화면의 특정 영역이 시스템 UI(상태 바, 내비게이션 바)와 교차하는 부분을 나타낸다. 콘텐츠가 가려지는 것을 막기 위해 최상위 루트 뷰 컨테이너에 인셋의 물리 픽셀 크기만큼 패딩을 계산하여 적용해주어야 한다. \u002F\u002F Activity onCreate 시점 적용 예시\noverride fun onCreate(savedInstanceState: Bundle?) {\n    super.onCreate(savedInstanceState)\n    val rootView = findViewById\u003CView>(R.id.rootView)  \n    \n    ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->  \n        \u002F\u002F 상태 표시줄, 내비게이션 바의 크기 픽셀 정보 수집\n        val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())  \n    \n        \u002F\u002F 수집한 크기만큼 패딩을 동적으로 적용하여 시스템 바 영역과 콘텐츠 분리\n        view.updatePadding(  \n            left = systemBars.left,  \n            top = systemBars.top,  \n            right = systemBars.right,  \n            bottom = systemBars.bottom  \n        )  \n    \n        \u002F\u002F 처리 완료 표시 반환\n        WindowInsetsCompat.CONSUMED  \n    }\n}",{"id":103825,"title":4787,"titles":103826,"content":4790,"level":105},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge#웹뷰-소프트-키보드-가림-현상-해결",[4573],{"id":103828,"title":4794,"titles":103829,"content":103830,"level":121},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge#오동작의-근본-원인-분석",[4573,4787],"기본적으로 웹뷰는 키보드가 열릴 때 adjustPan 방식으로 작동해 레이아웃 조정 없이 뷰가 화면 밖으로만 쏠리곤 한다. android:windowSoftInputMode=\"adjustResize\" 속성을 추가하여 키보드가 띄워질 때 액티비티 전체 뷰 크기를 압축하여 상단으로 밀려 올라오게 만들어 주는 것이 기본 정석이다. 그러나 Edge-to-Edge 대응을 위해 인셋 리스너의 패딩 업데이트(view.updatePadding) 로직을 추가하며 문제가 발생했다. 시스템 인셋 패딩 조절 요청이 adjustResize 동작보다 더 높은 우선순위로 동작해서, 키보드가 상승해도 bottom 패딩이 시스템 내비게이션 바 고정 높이에 묶여버린 것. 뷰의 높이를 줄여주지 못해 레이아웃 리사이징이 막힌 것이다.",{"id":103832,"title":4820,"titles":103833,"content":103834,"level":121},"\u002Fblog\u002Fandroid-sdk-15-edge-to-edge#동적-인셋-병합-해결책",[4573,4787],"이 문제를 해결하기 위해 시스템 바 인셋 리스너 내부에서 기기 소프트 키보드에 해당하는 IME 인셋 크기(WindowInsetsCompat.Type.ime())까지 연계하여 bottom 패딩을 동적으로 연산하도록 Kotlin 코드를 개선했다. \u003Cactivity\n    android:windowSoftInputMode=\"adjustResize\"> 액티비티에 android:windowSoftInputMode=\"adjustResize\" 추가. ViewCompat.setOnApplyWindowInsetsListener(rootView) { view, insets ->\n    val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())\n    \u002F\u002F 키보드 인셋 감지\n    val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime())\n\n    view.updatePadding(\n        left = systemBars.left,\n        top = systemBars.top,\n        right = systemBars.right,\n        \u002F\u002F 키보드가 켜졌을 때는 키보드 높이를, 꺼졌을 때는 기본 네비게이션 바 높이를 유연하게 선택 적용\n        bottom = maxOf(systemBars.bottom, imeInsets.bottom)\n    )\n    WindowInsetsCompat.CONSUMED\n} maxOf 연산식을 활용하여 키보드가 보이지 않을 때는 systemBars.bottom 크기만큼 시스템 내비게이션 패딩을 유지하고, 입력 활성화로 키보드가 위로 튀어나오면 키보드의 실시간 높이인 imeInsets.bottom을 선택하여 패딩 크기를 늘려주도록 유도했다. 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);}",{"id":5293,"title":4958,"titles":103836,"content":103837,"level":94},[],"프론트엔드에서 Blob과 Object URL을 이용해 a태그로 파일을 다운로드할 때, 안드로이드 웹뷰 환경에서 겪을 수 있는 한계와 대안을 알아본다. 프론트엔드에서 비동기(Fetch, Axios)로 받아온 파일 데이터를 다운로드할 때, 데이터를 Blob 객체로 만들고 URL.createObjectURL()을 이용해 가상의 URL을 생성한 뒤 \u003Ca> 태그의 download 속성으로 파일을 저장하게 하는 방식을 자주 사용한다. \u002F\u002F 프론트엔드의 일반적인 Blob 다운로드 로직\nconst blob = new Blob([res.data], { type: res.headers['content-type'] });\nconst link = document.createElement('a');\n\nlink.href = window.URL.createObjectURL(blob);\nlink.target = '_blank';\nlink.download = getFileName(res); \u002F\u002F 직접 파싱한 파일 이름\n\ndocument.body.append(link);\nlink.click();\ndocument.body.removeChild(link); 브라우저 환경에서는 이 방식이 완벽하게 작동한다. 하지만 안드로이드 웹뷰(Android WebView) 기반 앱에서는 파일 다운로드에 제약이 있다. 기본적으로 파일 다운로드를 지원하지 않기 때문에, 네이티브 코드에서 setDownloadListener를 설정해 다운로드 요청을 가로채서 처리해야 한다. 그런데 위와 같이 Javascript로 생성한 Blob URL(blob:https:\u002F\u002F...) 기반 다운로드가 발생할 때, 안드로이드 웹뷰의 DownloadListener로 넘어오는 인자들이 그대로 넘어오지 않는다. 파일 이름 유실: 프론트엔드에서 link.download 속성에 아무리 정교하게 파일 이름을 지정해 주더라도, 네이티브 웹뷰 콜백에는 그 이름이 넘어오지 않는다.Content-Disposition 정보 부재: HTTP 응답 헤더의 Content-Disposition 정보를 네이티브에서 알 길이 없다.MIME 타입 의존: 오직 전달받은 url(blob 주소)과 임의의 mimetype만으로 네이티브에서 파일을 만들어 내야 한다. 결국 네이티브 단에서는 \"어떤 이름으로 파일을 저장해야 할지\" 알 수 없어서, 알 수 없는 임의의 파일명(bin 파일 등)으로 저장해 버리는 현상이 생긴다.",{"id":103839,"title":5193,"titles":103840,"content":103841,"level":105},"\u002Fblog\u002Fandroid-webview-blob-a-tag-download-issue#대안과-해결-방법",[4958],"안드로이드 웹뷰에서 \u003Ca> 태그 클릭을 트리거하는 방식으로는 Blob 데이터를 올바른 이름으로 안전하게 다운로드하기 어렵다. 이를 해결하려면 다운로드 처리를 프론트엔드가 아닌 안드로이드 네이티브로 완전히 위임해야 한다.",{"id":103843,"title":5207,"titles":103844,"content":103845,"level":121},"\u002Fblog\u002Fandroid-webview-blob-a-tag-download-issue#javascript-interface-사용",[4958,5193],"프론트엔드에서 Blob 다운로드를 발생시키는 대신, 안드로이드 네이티브 브릿지(Javascript Interface) 함수를 직접 호출한다. \u002F\u002F 프론트엔드\nif (window.AndroidBridge && window.AndroidBridge.downloadFile) {\n    \u002F\u002F 파일 다운로드에 필요한 파라미터(URL, 파일명 등)를 직접 네이티브로 전달\n    window.AndroidBridge.downloadFile(fileUrl, fileName);\n} else {\n    \u002F\u002F 브라우저용 일반 Blob 다운로드 실행\n} 이 방식을 사용하면 네이티브의 DownloadManager가 주어진 fileUrl로 실제 HTTP 요청을 직접 수행하여 올바른 파일명으로 안정적인 다운로드를 처리할 수 있다. 웹 환경과 앱 환경을 명확히 구분하여 다운로드 방식을 이원화하는 것이 가장 확실한 해결책이다. html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .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);}",{"id":5440,"title":5302,"titles":103847,"content":103848,"level":94},[],"널리 사용되는 axios 패키지에 원격 접근 트로이목마(RAT)가 포함된 사태의 개요와 대응 방법을 정리한다. 2026년 3월 31일, 가장 널리 사용되는 HTTP 클라이언트 라이브러리인 axios의 특정 버전에 악성 코드가 삽입되어 npm에 배포되는 사태가 일어났다. 공격자는 axios의 주요 유지관리자 계정 자격 증명을 탈취해 GitHub Actions CI\u002FCD 파이프라인을 우회하고 수동으로 악성 패키지를 게시했다. 배포된 악성 버전은 axios@1.14.1과 axios@0.30.4 두 가지다. 두 버전 모두 plain-crypto-js@4.2.1이라는 가짜 의존성을 삽입하고 있었다. 이 가짜 패키지는 postinstall 스크립트를 통해 원격 접근 트로이목마(RAT, Remote Access Trojan)를 시스템에 설치한다. RAT는 macOS, Windows, Linux를 모두 대상으로 동작하며, 설치된 후 C2(Command and Control) 서버(sfrclak.com:8000)와 통신하여 2단계 페이로드를 내려받는다. 특히, 설치를 마치면 악성 코드와 흔적을 삭제하고 깨끗한 package.json으로 교체해 포렌식 탐지를 교묘하게 회피한다는 특징이 있다.",{"id":103850,"title":5351,"titles":103851,"content":103852,"level":105},"\u002Fblog\u002Faxios-compromised-incident-response#영향을-받은-패키지-정보",[5302],"axios@1.14.1 (shasum: 2553649f232204966871cea80a5d0d6adc700ca)axios@0.30.4 (shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)plain-crypto-js@4.2.1 (shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766)",{"id":103854,"title":5372,"titles":103855,"content":103856,"level":105},"\u002Fblog\u002Faxios-compromised-incident-response#영향-확인-및-대응-절차",[5302],"현재 관리 중인 프로젝트가 감염되었는지 확인하고 대응하려면 다음 절차를 따른다. 버전 점검: 프로젝트 루트에서 npm list axios 명령을 실행하거나 package-lock.json을 검사해 1.14.1 또는 0.30.4 버전이 설치되어 있는지 확인.의존성 확인: node_modules\u002Fplain-crypto-js 가 있는지 확인.감염 여부 판단: 운영 체제별 RAT 파일이 발견된다면, 시스템이 이미 완전히 감염된 것..비밀키 교체: CI\u002FCD 로그 등에서 해당 버전을 설치한 이력이 확인된다면, 공격자에게 환경 변수와 자격 증명이 유출되었을 가능성이 매우 높다. 즉시 모든 비밀키, 토큰, 액세스 토큰, 암호, 인증서를 새 것으로 교체해야 한다. package-lock.json이나 pnpm-lock.yaml을 철저히 관리하여 오픈소스 패키지 사용 시 자동 업데이트 범위를 제한해야 한다. 무지성으로 업데이트하다가는 걸리기 딱 좋다. 신뢰하지 않은 버전이 설치되는 것을 방지하는 것이 핵심인듯.",{"id":5716,"title":5451,"titles":103858,"content":103859,"level":94},[],"CSS 변수의 투명도를 조절하는 방법을 자세히 다루고, color-mix 함수를 통해 배경에 효과적인 투명도를 적용하는 기법을 소개한다. 다양한 컬러 코드 및 변수를 활용하여 디자인에 깊이를 더하는 방법을 배울 수 있다 --color-base-20: #ddd; 이런식으로 정의한 컬러 코드 값의 변수로 배경에 투명도를 섞어서 사용할 일이 생겼다. background-color: rgba(--color-base-20, 0.5);\nbackground-color: rgba(var(--color-base-20), 0.5);\nbackground: var(--color-base-20) rgba(0, 0, 0, 0.5); 등 다양한 형태로 사용해봤지만, 모두 작동하지 않는다. hex 형태의 컬러코드는 rgba 에서 사용이 불가능하다. --color-base-20: 240, 240, 240;\nbackground-color: rgba(var(--color-base-20), 0.5); 변수를 rgb 값을 찢어놓는 방법도 있다. 그런데 기존 변수들은 건들고 싶지 않았다.",{"id":103861,"title":5537,"titles":103862,"content":103863,"level":105},"\u002Fblog\u002Fcolor-mix-hash-value-transparency#color-mix",[5451],"background-color: color-mix(in srgb, var(--color-base-20), #0000 50%); 이렇게 색상을 섞을 수 있는 mixin 이 있다. 타입 : hsl, lch, srgb, lab, custom-color-space색상 : 색상 % 투명도만 주고 싶은 경우이기 때문에, 첫번째 색상은 원본 색상을 주고, 두번째는 완전 투명한 색상에 투명도를 50%로 주어서 섞었다. 그럼 rgba(--var, 0.5) 와 동일한 효과가 된다. 웬만하면 다 쓸 수 있는듯~",{"id":103865,"title":5595,"titles":103866,"content":103867,"level":105},"\u002Fblog\u002Fcolor-mix-hash-value-transparency#tailwindcss-를-사용하면-alpha-를-사용할-수-있다",[5451],".my-element {\n  color: --alpha(var(--color-lime-300) \u002F 50%);\n}\n\u002F* compiled css *\u002F\n.my-element {\n  color: color-mix(in oklab, var(--color-lime-300) 50%, transparent);\n} 결국 css 로 컴파일되면 color-mix 이긴 하다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":6037,"title":5725,"titles":103869,"content":103870,"level":94},[],"Content-Disposition의 inline과 attachment가 브라우저의 파일 처리 방식에 미치는 영향과 filename·filename* 사용법, 교차 출처에서 헤더를 읽을 때의 조건을 정리한다. \u003Cobject>나 \u003Cembed>로 PDF를 표시하려고 했는데 브라우저가 파일을 바로 다운로드했다. 태그의 문제가 아니라 파일 응답에 설정된 Content-Disposition과 Content-Type이 원인이었다.",{"id":103872,"title":5747,"titles":103873,"content":103874,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#inline과-attachment의-차이",[5725],"Content-Disposition: inline\nContent-Disposition: attachment\nContent-Disposition: attachment; filename=\"report.pdf\" inline은 응답을 미디어 타입에 맞게 기본 처리하라는 뜻이다. 브라우저가 해당 형식을 표시할 수 있다면 PDF 뷰어나 이미지 화면처럼 브라우저 안에서 처리한다. 헤더를 생략했을 때의 기본 처리와 가깝기 때문에 inline만으로 화면 표시를 강제하지는 않는다. attachment는 응답을 현재 화면에서 처리하기보다 로컬 파일로 저장하도록 안내한다. filename을 함께 보내면 저장할 때 사용할 기본 파일명을 제안할 수 있다. 브라우저가 최종적으로 어떻게 처리할지는 Content-Disposition 하나로만 정해지지 않는다. Content-Type과 브라우저가 해당 미디어 타입을 표시할 수 있는지도 함께 영향을 준다.",{"id":103876,"title":5801,"titles":103877,"content":103878,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#object나-embed에-넣은-pdf가-다운로드된-이유",[5725],"Content-Type: application\u002Fpdf\nContent-Disposition: inline PDF를 브라우저 안에서 표시하려면 응답이 PDF라는 사실과 화면에서 처리할 대상이라는 사실이 함께 전달돼야 한다. \u003Cobject>나 \u003Cembed>는 응답 헤더를 덮어쓰지 않는다. 응답에 Content-Disposition: attachment가 설정돼 있으면 브라우저는 PDF 뷰어보다 저장 동작을 우선한다. Content-Disposition: inline이어도 Content-Type: application\u002Foctet-stream처럼 범용 바이너리 타입을 보내면 브라우저가 PDF로 판단하지 못해 다운로드할 수 있다. 스토리지 URL을 직접 사용한다면 객체 메타데이터도 확인해야 한다. 애플리케이션 코드에서 \u003Cobject>를 바꾸는 것보다 저장소가 반환하는 Content-Type과 Content-Disposition을 바로잡는 것이 우선이다.",{"id":103880,"title":5853,"titles":103881,"content":103882,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#한글-파일명은-filename으로-전달",[5725],"Content-Disposition: attachment;\n  filename=\"report.pdf\";\n  filename*=UTF-8''%EB%B3%B4%EA%B3%A0%EC%84%9C.pdf filename은 오래된 클라이언트에서도 사용할 수 있는 기본 파일명이다. 한글처럼 ASCII 범위를 벗어나는 문자는 filename*에 UTF-8과 퍼센트 인코딩을 사용해 전달한다. 두 값이 함께 있으면 filename*을 지원하는 클라이언트는 해당 값을 우선하고, 지원하지 않는 클라이언트는 filename을 대체 값으로 사용한다. 호환성을 고려할 때 filename을 먼저 두고 filename*을 뒤에 두는 게 좋다.",{"id":103884,"title":5901,"titles":103885,"content":103886,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#프론트엔드에서-응답-헤더를-읽을-때",[5725],"const response = await fetch(fileUrl)\nconst disposition = response.headers.get('Content-Disposition') 같은 출처의 응답이라면 Headers에서 값을 읽을 수 있다. 다른 출처에 요청할 때는 Content-Disposition이 CORS 안전 목록에 포함되지 않으므로 서버가 이 헤더를 명시적으로 노출해야 한다. Access-Control-Expose-Headers: Content-Disposition 이 설정이 없으면 네트워크 응답에 헤더가 보여도 JavaScript에서 response.headers.get()을 호출했을 때 null이 나온다. 인증 정보를 포함한 요청에서는 와일드카드보다 읽을 헤더 이름을 직접 나열하는 게 확실하다.",{"id":103888,"title":5979,"titles":103889,"content":103890,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#multipartform-data의-content-disposition",[5725],"Content-Disposition: form-data; name=\"attachment\"; filename=\"report.pdf\" HTTP 응답 헤더의 Content-Disposition은 응답 본문을 표시하거나 저장하는 방식을 설명한다. multipart\u002Fform-data의 각 파트에 들어가는 Content-Disposition은 폼 필드의 이름과 업로드한 파일 정보를 나타낸다. 이름은 같지만 적용 위치와 목적이 다르므로 구분해야 한다.",{"id":103892,"title":6005,"titles":103893,"content":103894,"level":105},"\u002Fblog\u002Fcontent-disposition-browser-display-download#참고한-페이지",[5725],"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc6266.htmlhttps:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8187.html 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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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}",{"id":6811,"title":6047,"titles":103896,"content":103897,"level":94},[],"font-size와 line-height가 실제로 그려지는 원리인 폰트 매트릭스(Ascender, Descender)를 이해하고, vertical-align의 동작 원리와 다국어 폰트(unicode-range) 적용 방법을 정리한다. 참고한 글 line-height와 vertical-align을 사용할 때 텍스트가 미세하게 위아래로 치우치거나, 같은 font-size여도 폰트 종류를 바꾸면 높이와 정렬이 완전히 어그러지는 문제가 있었다. 브라우저가 글자를 렌더링할 때 사용하는 폰트 매트릭스의 동작 방식이 있었고 찾아봤다.",{"id":103899,"title":6077,"titles":103900,"content":103901,"level":105},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#폰트-매트릭스font-metrics와-em-square",[6047],"웹에서 font-size는 실제 글자의 픽셀 크기가 아니었다. 폰트 디자이너가 만든 보이지 않는 상자(em-square 또는 UPM)가 있는데, 이 박스의 크기를 의미한다. 폰트 내부에는 글자를 그리기 위한 수치 정보가 들어 있다. Ascender: 기준선(Baseline) 위로 솟아오른 영역의 높이Descender: 기준선 아래로 내려간 영역의 높이(소문자 g, p, y 등의 꼬리)Capital Height: 대문자의 순수한 높이x-height: 소문자 x의 높이Line Gap: 폰트 디자이너가 권장하는 기본 줄 간격 폰트 디자이너마다 Ascender와 Descender 비율을 다르게 설계한다. 따라서 font-size가 같아도 폰트가 다르면 화면에 렌더링되는 실제 글자 높이와 기준선이 모두 달라진다. 폰트의 정보를 보면 em-squre 1000에서 ascender 1100 + descender 540 을 더해 1640 \u002F 10 을 font-size 100px 에서 크기를 정의한다.",{"id":103903,"title":6159,"titles":103904,"content":103905,"level":105},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#line-height와-높이-계산",[6047],"line-height 와 vertical-align 계산에 대해서 \u003Cp>\n    Good design will be better.\n    \u003Cspan class=\"a\">Ba\u003C\u002Fspan>\n    \u003Cspan class=\"b\">Ba\u003C\u002Fspan>\n    \u003Cspan class=\"c\">Ba\u003C\u002Fspan>\n    We get to make a consequence.\n\u003C\u002Fp> 텍스트 영역은 두 가지 박스로 나뉜다. Content-area: 폰트 매트릭스(Ascender + Descender)로 인해 글자가 차지하는 눈에 보이지 않는 높이.Line-box: line-height 만큼 차지하는 박스이고 실제 텍스트 줄의 최종 높이를 결정한다. line-boxes 는 같은 줄의 글자 중 가장 큰 line-height 로 높이가 설정된다. c class 의 Ba 때문에, 두번째줄의 line-box 높이가 다른 애들보다 커진 것. line-height에서 content-area를 뺀 나머지 공간을 행간(Leading)이라고 한다. 이 여분의 공간은 content-area 위와 아래에 반씩 공평하게 분배된다. 인라인 요소의 padding, margin, border는 시각적인 배경 영역은 늘려주지만 line-box의 높이와는 상관 없다. 레이아웃 높이에 여백을 반영하려면 요소를 inline-block으로 선언해야 함.",{"id":103907,"title":6336,"titles":103908,"content":103909,"level":121},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#line-height-normal",[6047,6159],"line-height : normal은 content-area와 동일한 값이다. 보통 1640 단위 또는 1.64라고 보면 된다.",{"id":103911,"title":6068,"titles":103912,"content":103913,"level":105},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#vertical-align",[6047],"vertical-align의 기본값은 baseline이다. 텍스트는 이 기준선에 맞춰 정렬된다. 같은 font-family, font-size, line-height 를 가진 경우에는 line-box와 line-height가 완전히 일치하고, 배치에도 문제가 없다. 하지만 위 값들이 달라졌을 때, 위 사진은 두번째 요소의 font-size를 반토막냈을 때 결과이다. line-height 보다도 line-box의 크기가 커져버렸다. line-height 는 동일한 상태로, 정렬이 baseline에 맞춰져서 아래행간이 증가했기 때문이다. 가운데 정렬을 위해 vertical-align: middle을 주로 사용하지만, 실제로는 정확한 중앙에 위치하지 않는다. W3C 스펙에 따르면 middle은 부모 박스의 baseline에 부모 폰트의 x-height 절반을 더한 지점에 자식 박스의 중간점을 정렬한다. 폰트마다 x-height 비율이 다르기 때문에 우리가 생각하는 절대적인 중앙과 오차가 생긴다. 이 오차를 보정하기 위해 CSS 커스텀 속성(calc)으로 폰트의 Ascender와 Descender 수치를 역산하는 방법도 있지만, 폰트 로드 실패로 폴백(Fallback) 폰트가 적용될 때 계산이 모두 틀어지는 문제가 있다. 따라서 정확한 수직 중앙 정렬이 필요할 때는 Flexbox(align-items: center)를 사용하는 것이 안전하다.",{"id":103915,"title":6424,"titles":103916,"content":103917,"level":105},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#정확히-높이가-100px인-글자-표현",[6047],"p {\n  \u002F* 폰트 매트릭스 수치 (예: Catamaran) *\u002F\n  --font: Catamaran;\n  --fm-capitalHeight: 0.68;\n  --fm-descender: 0.54;\n  --fm-ascender: 1.1;\n  --fm-linegap: 0;\n\n  \u002F* 목표 대문자 높이 *\u002F\n  --capital-height: 100;\n  font-family: var(--font);\n\n  \u002F* 대문자 높이 100px 기준 font-size 계산 *\u002F\n  --computedFontSize: (var(--capital-height) \u002F var(--fm-capitalHeight));\n  font-size: calc(var(--computedFontSize) * 1px);\n\n  \u002F* 수직 중앙 정렬을 위한 여백 계산 *\u002F\n  --distanceBottom: var(--fm-descender);\n  --distanceTop: (var(--fm-ascender) - var(--fm-capitalHeight));\n  --valign: ((var(--distanceBottom) - var(--distanceTop)) * var(--computedFontSize));\n}\n\nspan {\n  vertical-align: calc(var(--valign) * -1px);\n} 대문자의 순수한 높이를 정확히 100px로 맞추려면 font-size: 100px을 지정하는 것이 아니라, 폰트 매트릭스의 Capital Height 비율로 100px을 나눈 font-size를 역산해야 한다. --capital-height 변수에 원하는 대문자 높이(100)를 입력하고 폰트 고유의 Capital Height 비율(--fm-capitalHeight)로 나누면 필요한 font-size가 구해진다. 상하 여백의 차이(--distanceBottom과 --distanceTop)를 계산해 vertical-align까지 수식으로 보정하면, 글자 상하 여백을 완벽하게 등분할 수 있다. 다만 이 방식은 몇 가지 한계가 있다. 폰트 파일이 로드되지 않아 폴백 폰트로 바뀔 때 매트릭스 수치가 어긋나면서 계산된 레이아웃이 모두 틀어질 수 있음브라우저나 운영체제 렌더링 엔진마다 미세하게 다를 수 있음.. 이건 어쩔 수 없는듯 추천하는 방법인 아니고, 글자 단독 수직 중앙 정렬은 flex, grid 의 중앙 정렬을 사용하는 게 편함!",{"id":103919,"title":6786,"titles":103920,"content":103921,"level":105},"\u002Fblog\u002Fdeep-dive-css-font-metrics-line-height-vertical-align#참고-자료",[6047],"Deep dive CSS: font metrics, line-height and vertical-align html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"id":7196,"title":6820,"titles":103923,"content":103924,"level":94},[],"한 PC와 Android Termux에서 여러 GitHub 계정을 안전하게 구분하는 SSH 설정, 저장소별 커밋 작성자 설정, 이미 섞인 과거 커밋 이력 정리 방법을 정리한다. 계정을 두개 섞어서 쓰면서 설정한 것들 정리.",{"id":103926,"title":6829,"titles":103927,"content":103928,"level":105},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity#계정마다-ssh-키를-만들고-host-별칭을-분리하기",[6820],"각 GitHub 계정에는 서로 다른 SSH 공개키를 등록한다. 기존 키를 덮어쓰지 않도록 파일명을 명시해 ed25519 키를 만든다. ssh-keygen -t ed25519 -C \"personal@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_personal\nssh-keygen -t ed25519 -C \"work@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_work 생성한 .pub 파일의 내용을 각 계정의 GitHub SSH keys 화면에 등록한다. 이후 ~\u002F.ssh\u002Fconfig에서 GitHub 주소에 별칭을 주고, 별칭마다 사용할 키를 지정한다. 개인용이랑 회사용으로 나눴다. # 개인 계정\nHost github-personal\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_personal\n  IdentitiesOnly yes\n\n# 회사 계정\nHost github-work\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_work\n  IdentitiesOnly yes IdentitiesOnly yes를 넣으면 SSH 에이전트에 여러 키가 등록돼 있어도 이 Host에 지정한 키만 사용한다. 저장소를 처음 복제하거나 기존 원격 주소를 바꿀 때는 실제 도메인 대신 별칭을 사용한다. git clone git@github-personal:personal-account\u002Fsample-repository.git\n\ncd sample-repository\ngit remote set-url origin git@github-personal:personal-account\u002Fsample-repository.git 클론할 때 URL 앞에 별칭을 넣어주면 된다. 별칭별 인증 결과는 아래처럼 확인한다. 성공 메시지에 표시되는 사용자명이 기대한 계정인지 확인해야 한다. ssh -T git@github-personal\nssh -T git@github-work GitHub SSH 테스트 명령은 성공하더라도 원격 셸을 제공하지 않기 때문에 종료 코드가 1일 수 있다. 메시지에 인증된 사용자명이 나타나는지를 기준으로 확인한다.",{"id":103930,"title":6931,"titles":103931,"content":103932,"level":105},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity#원격-인증과-커밋-작성자는-별도로-고정하기",[6820],"SSH 키는 push 권한을 확인하지만, 커밋의 작성자 정보는 Git 설정에서 읽는다. 전역 설정은 기본값으로만 두고, 계정을 구분해야 하는 레포에서는 로컬 설정을 명시하는 것이 안전하다. # 현재 레포에서 사용할 커밋 정보\ngit config user.name \"Personal Name\"\ngit config user.email \"personal@example.com\"\n\n# 적용된 작성자와 원격 주소를 함께 확인한다.\ngit config --get user.name\ngit config --get user.email\ngit remote get-url origin GitHub 계정에 연결된 이메일이나 GitHub가 제공하는 noreply 이메일을 사용해야 커밋이 해당 계정에 정상적으로 연결된다. 이메일 공개를 피해야 한다면 GitHub의 이메일 개인정보 보호 설정과 noreply 주소를 먼저 확인한다. 새 저장소를 만들 때마다 설정을 반복하기 싫다면 디렉터리별 조건부 설정도 가능하다. 예를 들어 개인 프로젝트를 ~\u002FProjects\u002Fpersonal\u002F 아래에 모아 둔 경우 전역 설정 파일에 다음을 추가한다. [includeIf \"gitdir:~\u002FProjects\u002Fpersonal\u002F\"]\n  path = ~\u002F.gitconfig-personal 그리고 ~\u002F.gitconfig-personal에는 개인 계정의 user.name, user.email을 둔다. 단, 원격 URL의 SSH Host 별칭은 저장소마다 따로 확인해야 한다.",{"id":103934,"title":7030,"titles":103935,"content":103936,"level":105},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity#android-termux에서도-같은-방식으로-인증하기",[6820],"Android에서 Git 작업을 할 때도 원칙은 같다. Termux 로 터미널을 사용할 수 있다. 노트북 구매 전, 갤탭으로 접근할 때 이 방법을 사용했다! 그런데 결국 노트북을 사긴 함... Git과 OpenSSH를 설치하고, 모바일 단말에서 별도의 키를 만들어 해당 GitHub 계정에 등록한다. PC의 개인키를 단말로 복사하지 않는 편이 노출 범위를 줄이는 데 유리하다. pkg update\npkg install git openssh\n\nssh-keygen -t ed25519 -C \"mobile@example.com\" -f ~\u002F.ssh\u002Fid_ed25519_github_mobile\ncat ~\u002F.ssh\u002Fid_ed25519_github_mobile.pub 출력한 공개키를 GitHub에 등록한 뒤 ~\u002F.ssh\u002Fconfig를 만든다. PC와 달리 키 파일명만 모바일용으로 바꾸면 된다. Host github-mobile\n  HostName github.com\n  User git\n  IdentityFile ~\u002F.ssh\u002Fid_ed25519_github_mobile\n  IdentitiesOnly yes 저장소는 git@github-mobile:account\u002Frepository.git 형태로 복제하고, ssh -T git@github-mobile로 계정을 확인한다. 공유 저장소에서 파일을 다뤄야 할 때만 termux-setup-storage를 실행해 Android 저장 공간 접근 권한을 부여한다. SSH 개인키와 Git 설정 파일은 기본 홈 디렉터리에 두고 공유 저장 공간에는 두지 않는 편이 좋다.",{"id":103938,"title":7100,"titles":103939,"content":103940,"level":105},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity#이미-섞인-커밋-작성자-이력은-별도의-작업으로-정리하기",[6820],"git config를 바꿔도 이후 커밋에만 적용된다. 과거 커밋의 작성자와 커밋터 정보를 고쳐야 한다면 커밋 해시가 전부 바뀌기 때문에 주의해야한다. 개인 레포이기 때문에 적용한 것이다. vercel 의 hobby 플랜을 사용중인데, 커밋 계정이 섞여 있다면 pro 플랜을 사용해야하기 때문에 해야했다. git filter-repo --mailmap ..\u002Fauthor-mailmap git-filter-repo는 author뿐 아니라 committer와 tagger의 이름·이메일도 mailmap 기준으로 재작성할 수 있다. 실행 뒤에는 git log --all --format='%an \u003C%ae> | %cn \u003C%ce>' | sort -u로 결과를 다시 검증하고, 원격 주소와 브랜치 보호 규칙을 확인한다. git remote add origin git@github-personal:personal-account\u002Fsample-repository.git\ngit push --force --all origin\ngit push --force --tags origin 이 작업을 현업에서는 사용할 일이 없고, 사용하지 말아야 하니 주의!",{"id":103942,"title":6005,"titles":103943,"content":4416,"level":105},"\u002Fblog\u002Fgit-multiple-accounts-ssh-commit-identity#참고한-페이지",[6820],{"id":7404,"title":7209,"titles":103945,"content":103946,"level":94},[],"Github Environment 에서 환경변수를 관리하고, 배포 시 환경을 지정해서 CICD를 수행한다. Github Actions 에서는 환경변수를 관리할 수 있는 기능을 제공한다. Secrets 와 Variables 로 나뉜다. Secrets : 민감 정보로, 한번 지정하고서는 암호화되며 워크 플로우에서 활용 시 마스킹 되어서 확인할 수 없다. API 키, 토큰, 비밀번호, 인증서 데이터 등에 활용할 수 있겠다.Variables : 단순 변수로 공개돼도 괜찮은 값. 서버 주소, 사용자 이름, 포트 번호 등 덜 민감한 값. variables 나 secrets 의 경우 두가지 유형이 있다. Environment : 특정 환경으로 묶어둔 변수들Repository : 저장소 단위의 공통 변수들 - name: Build Dev\n        env:\n            NODE_OPTIONS: \"--max_old_space_size=4096\"\n            VITE_SAMPLE_APP_ID: ${{ secrets.VITE_SAMPLE_APP_ID }}\n            VITE_SAMPLE_CLIENT_TOKEN: ${{ secrets.VITE_SAMPLE_CLIENT_TOKEN }}\n            VITE_SAMPLE_LOG_TOKEN: ${{ secrets.VITE_SAMPLE_LOG_TOKEN }}\n            VITE_SAMPLE_PUBLIC_KEY: ${{ secrets.VITE_SAMPLE_PUBLIC_KEY }}\n        run: |\n            yarn build:dev secrets 는 actions 에서 secrets 객체를 접근하면 사용할 수 있다. repository secrets 는 조건 없이 사용 가능하다. jobs:\n  build:\n    environment: dev # 이부분 \n    runs-on: ubuntu-latest environment secrets 는 environment 에다가 사용할 환경을 지정해주면, 그 환경에 맞는 환경변수를 사용할 수 있다. 특정 브랜치 혹은 보호 규칙을 지정해서 조건을 추가할 수 있고, 사용할 secrets 을 지정하면 된다. 환경 지정 시 그 환경에 등록된 변수를 사용한다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":8610,"title":7413,"titles":103948,"content":103949,"level":94},[],"별도 서버를 구축하지 않고 Apps Script의 doGet과 doPost로 HTTP 요청을 받아 Google Sheets에 저장하고 JSON으로 응답하는 작은 웹 API를 만든다. 간단한 기능 때문에 별도 서버와 데이터베이스를 준비하는 것은 부담스럽고 Google Apps Script를 작은 서버처럼 사용할 수 있다. doGet()과 doPost()로 간단하게 HTTP 요청을 받고, 구글 시트에 데이터를 쌓는 것. 서버 인스턴스나 배포 파이프라인을 직접 관리하지 않아도 웹 앱 URL 하나를 API 엔드포인트로 사용할 수 있다.",{"id":103951,"title":7429,"titles":103952,"content":103953,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#apps-script-웹-앱이-서버-역할을-하는-방식",[7413],"Apps Script 프로젝트를 웹 앱으로 배포하려면 루트에 doGet(e) 또는 doPost(e) 함수가 있어야 한다. 클라이언트가 배포 URL로 GET 요청을 보내면 doGet()이, POST 요청을 보내면 doPost()가 실행된다. 각 함수는 HtmlOutput 또는 TextOutput을 반환해야 한다. JSON API를 만들 때는 ContentService.createTextOutput()으로 문자열을 만들고 MIME 타입을 JSON으로 지정하면 된다. function jsonResponse(body) {\n  return ContentService\n    .createTextOutput(JSON.stringify(body))\n    .setMimeType(ContentService.MimeType.JSON);\n}\n\nfunction doGet() {\n  return jsonResponse({\n    ok: true,\n    service: 'feedback-api',\n  });\n} 이 코드만 배포해도 URL을 열어 서비스 상태를 확인하는 간단한 GET 엔드포인트가 된다. Express의 라우터처럼 경로별 기능이 자동으로 분리되지는 않으므로 기능이 늘어나면 e.parameter.action 같은 요청 값을 기준으로 직접 분기해야 한다.",{"id":103955,"title":7590,"titles":103956,"content":103957,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#google-sheets에서-apps-script-프로젝트-열기",[7413],"시트를 데이터 저장소로 사용할 때는 Google Sheets의 확장 프로그램 > Apps Script 메뉴에서 시트에 연결된 프로젝트를 만들 수 있다. 독립 실행형 Apps Script 프로젝트도 같은 기능을 구현할 수 있다. 시트에 연결된 프로젝트는 대상 문서와 코드를 함께 찾기 쉽고, 독립 실행형 프로젝트는 여러 문서나 서비스를 다루는 기능을 분리하기 좋다.",{"id":103959,"title":7609,"titles":103960,"content":103961,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#post-요청을-받아-한-행으로-저장하기",[7413],"const SHEET_ID = 'YOUR_SPREADSHEET_ID';\nconst SHEET_NAME = 'responses';\n\nfunction doPost(e) {\n  try {\n    const data = parseRequestBody(e);\n    const feedback = validateFeedback(data);\n\n    appendFeedback(feedback);\n\n    return jsonResponse({\n      ok: true,\n      message: 'saved',\n    });\n  } catch (error) {\n    console.error(error);\n\n    return jsonResponse({\n      ok: false,\n      message: error.message,\n    });\n  }\n}\n\nfunction parseRequestBody(e) {\n  if (!e || !e.postData || !e.postData.contents) {\n    throw new Error('request body is required');\n  }\n\n  return JSON.parse(e.postData.contents);\n}\n\nfunction validateFeedback(data) {\n  const rating = Number(data.rating);\n\n  if (!Number.isInteger(rating) || rating \u003C 1 || rating > 5) {\n    throw new Error('rating must be an integer from 1 to 5');\n  }\n\n  return {\n    name: String(data.name || '').trim().slice(0, 50),\n    rating,\n    description: String(data.description || '').trim().slice(0, 500),\n  };\n} doPost, doGet 같은 함수는 루트 레벨에 작성해야 인식할 수 있다. e.postData.contents에는 POST body 문자열이 들어온다. JSON 파싱에서 끝내지 않고 필수 값, 숫자 범위, 문자열 길이를 검증해야 잘못된 행이 시트에 계속 쌓이는 것을 막을 수 있다. 검증이 끝난 데이터는 SpreadsheetApp으로 저장한다. function appendFeedback(feedback) {\n  const lock = LockService.getScriptLock();\n  lock.waitLock(5000);\n\n  try {\n    const spreadsheet = SpreadsheetApp.openById(SHEET_ID);\n    const sheet = spreadsheet.getSheetByName(SHEET_NAME);\n\n    if (!sheet) {\n      throw new Error(`sheet not found: ${SHEET_NAME}`);\n    }\n\n    sheet.appendRow([\n      new Date(),\n      escapeFormula(feedback.name),\n      feedback.rating,\n      escapeFormula(feedback.description),\n    ]);\n  } finally {\n    lock.releaseLock();\n  }\n}\n\nfunction escapeFormula(value) {\n  return \u002F^[=+\\-@]\u002F.test(value) ? `'${value}` : value;\n} 여러 요청이 같은 시트를 동시에 수정할 수 있어 LockService의 스크립트 잠금을 사용한다. lock은 finally에서 반드시 해제한다. 문자열이 =, +, -, @로 시작하면 시트에서 수식으로 해석될 수 있다. 외부 입력을 그대로 저장하지 않고 앞에 작은따옴표를 붙여 일반 문자열로 처리한다.",{"id":103963,"title":8417,"titles":103964,"content":103965,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#요청을-보내-동작-확인하기",[7413],"웹 앱을 배포한 뒤에는 생성된 \u002Fexec URL로 POST 요청을 보낼 수 있다. 아래 URL은 실제 배포 URL로 교체한다. curl -L \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"name\":\"sample\",\"rating\":5,\"description\":\"easy to use\"}' \\\n  'https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002FDEPLOYMENT_ID\u002Fexec' 정상적으로 처리되면 다음 JSON이 반환되고 responses 시트에 새 행이 추가된다. {\n  \"ok\": true,\n  \"message\": \"saved\"\n} curl에 -L을 넣은 이유는 Content Service 응답이 일회성 URL로 리디렉션될 수 있기 때문이다. HTTP 클라이언트가 리디렉션을 자동으로 따라가지 않는다면 응답 본문 대신 302 응답만 볼 수 있다.",{"id":103967,"title":8523,"titles":103968,"content":103969,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#웹-앱으로-배포",[7413],"Apps Script 편집기에서 배포 > 새 배포 > 웹 앱을 선택하면 실행 사용자와 접근 사용자를 정할 수 있다. 웹 앱을 배포자 권한으로 실행하면 요청한 사람이 누구든 배포자가 허용한 Google Sheets에 접근한다. 클라이언트마다 Google OAuth를 구현하지 않아도 되는 대신, 공개 URL을 얻은 사람이 배포자 권한으로 준비된 기능을 호출할 수 있다는 뜻이다. 접근 권한은 데이터 성격에 맞춰 최소 범위로 설정해야 한다. 개인 도구라면 배포자만 접근하도록 제한한다.조직 내부 도구라면 같은 Google Workspace 도메인으로 제한한다.익명 접근이 필요하다면 저장 가능한 데이터와 작업을 강하게 제한하고 남용 가능성을 전제로 한다. !warning\n웹 앱 URL은 인증 정보가 아니다. 프론트엔드 코드에 공유 비밀을 넣는 방식도 사용자가 값을 확인할 수 있으므로 인증이 되지 않는다. 민감한 데이터, 결제, 개인정보, 관리자 기능처럼 강한 인증과 세밀한 권한이 필요한 API라면 전용 백엔드를 쓸것. 코드를 수정한 뒤에는 기존 배포를 새 버전으로 업데이트해야 \u002Fexec URL에 변경 사항이 반영된다. 편집 권한이 있는 사용자만 접근 가능한 \u002Fdev URL은 최신 저장 코드를 테스트하는 용도이며 운영 URL로 사용하면 안 된다.",{"id":103971,"title":6005,"titles":103972,"content":8597,"level":105},"\u002Fblog\u002Fgoogle-apps-script-simple-server#참고한-페이지",[7413],{"id":9118,"title":8622,"titles":103974,"content":103975,"level":94},[],"로컬 프록시 도구 Headroom을 Claude Code에 연동하여 API 토큰 사용량을 압축하고, 실제 통계 데이터로 절감 효과와 내부 압축 방식(SmartCrusher, Kompress, CacheAligner 등)을 분석한다. ai 의 토큰 사용량을 최적화하는 방향을 항상 고민하게 된다. Headroom 이라는 도구가 있는데, 로컬 프록시 도구다. Claude Code와 Anthropic API 사이에 위치하면서 요청을 가로채 압축한 뒤 전달하는 방식으로 동작한다. 한 달가량 사용해 본 결과 약 24%의 비용 절감 효과를 확인했고, 설치 방법과 함께 내부 절감 방식을 정리한다. 프록시 하나만 띄우면 기존 워크플로우를 전혀 바꾸지 않고도 토큰 사용량을 줄일 수 있다는 점이 매력적이다. 압축효과와 프롬프트 캐시 정렬로 인한 간접 절감까지 더하면 체감 효과는 더 크다.",{"id":103977,"title":8640,"titles":103978,"content":103979,"level":105},"\u002Fblog\u002Fheadroom-claude-code-token-saving#설치-및-프록시-실행",[8622],"pip install \"headroom-ai[code][proxy]\" anthropic\nheadroom proxy --port 15555 Headroom은 Python 패키지로 배포되므로 Python이 설치되어 있어야 한다. pip로 설치한 뒤 프록시 서버를 구동한다. export ANTHROPIC_BASE_URL=http:\u002F\u002F127.0.0.1:15555\nclaude 프록시가 15555 포트에서 실행되면, Claude Code가 Anthropic API 대신 이 프록시를 바라보도록 환경 변수를 지정하고 실행한다.",{"id":103981,"title":8705,"titles":103982,"content":103983,"level":105},"\u002Fblog\u002Fheadroom-claude-code-token-saving#매번-환경-변수-입력이-번거롭다면",[8622],"nano ~\u002F.zshrc\n \n# 맨 아래줄에 다음 내용 추가 후 저장 (Ctrl+O 엔터, Ctrl+X 종료)\nexport ANTHROPIC_BASE_URL=http:\u002F\u002F127.0.0.1:15555\n \nsource ~\u002F.zshrc 터미널을 열 때마다 export 명령을 입력하고 싶지 않다면 셸 설정 파일에 등록해 두면 된다. 이후에는 claude 명령만 입력해도 항상 프록시를 경유해서 실행된다.",{"id":103985,"title":8760,"titles":103986,"content":103987,"level":105},"\u002Fblog\u002Fheadroom-claude-code-token-saving#절감-효과-집계-확인",[8622],"프록시를 띄운 포트의 \u002Fstats 경로로 접근하면 지금까지의 사용 통계를 확인할 수 있다. http:\u002F\u002F127.0.0.1:15555\u002Fstats 응답은 가공되지 않은 JSON 형태라서 그 자체로 가시화되지는 않는다. 다만 AI에게 그대로 던져주고 분석을 시키면 알아서 잘 정리해 준다. 실제로 한 달가량 사용한 뒤의 통계 일부는 다음과 같다. \"summary\": {\n    \"mode\": \"token\",\n    \"api_requests\": 584,\n    \"primary_model\": \"claude-opus-4-8\",\n    \"compression\": {\n        \"requests_compressed\": 533,\n        \"avg_compression_pct\": 20.8,\n        \"best_compression_pct\": 65.5,\n        \"best_detail\": \"33,971 → 11,724 tokens\",\n        \"total_tokens_removed\": 13078430,\n        \"total_tokens_saved_with_rtk\": 13078430,\n        \"total_tokens_before_with_rtk\": 64728531\n    },\n    \"cost\": {\n        \"without_headroom_usd\": 234.92,\n        \"with_headroom_usd\": 177.86,\n        \"total_saved_usd\": 57.06,\n        \"savings_pct\": 24.3,\n        \"breakdown\": {\n            \"cache_savings_usd\": 292.48,\n            \"compression_savings_usd\": 57.06\n        }\n    }\n} 주요 지표를 해석하면 다음과 같다. total_tokens_before_with_rtk가 압축 전 총 사용 토큰, total_tokens_saved_with_rtk가 절약된 토큰이다. 약 6,470만 토큰 중 1,300만 토큰을 줄여 24.3%의 비용을 절감했다.평균 압축률은 20.8%이고, 가장 압축이 잘 된 요청은 33,971 토큰을 11,724 토큰으로 줄여 65.5%까지 압축됐다.CacheAligner 덕분에 Anthropic 자체 프롬프트 캐시 적중률이 73% 수준으로 유지됐고, 이로 인한 간접 절약 가치는 약 300달러(cache_savings_usd)에 달한다. 압축 과정에서 처리 오버헤드가 2% 정도 늘어난 것으로 집계되지만, 절감 폭에 비하면 유의미한 수치는 아니다. 대시보드를 사용하면 훨씬 한눈에 파악하기 좋다. \u002Fdashboard 경로로 접속하면 된다.",{"id":103989,"title":9053,"titles":103990,"content":9056,"level":105},"\u002Fblog\u002Fheadroom-claude-code-token-saving#headroom의-절감-방식",[8622],{"id":103992,"title":9060,"titles":103993,"content":103994,"level":121},"\u002Fblog\u002Fheadroom-claude-code-token-saving#smartcrusher-json_bloat",[8622,9053],"에이전트가 파일 목록을 읽거나 API 결과를 받아올 때 데이터는 주로 JSON으로 오간다. 여기에는 중괄호와 따옴표 같은 구조 부호, 그리고 id, createdAt 같은 반복 필드가 대량으로 포함된다. SmartCrusher는 의미 전달에 기여하지 않는 이 노이즈를 쳐내서 토큰을 절약한다.",{"id":103996,"title":9074,"titles":103997,"content":9077,"level":121},"\u002Fblog\u002Fheadroom-claude-code-token-saving#kompress-compressions_by_strategy",[8622,9053],{"id":103999,"title":9081,"titles":104000,"content":9084,"level":121},"\u002Fblog\u002Fheadroom-claude-code-token-saving#code-aware-code_aware",[8622,9053],{"id":104002,"title":9088,"titles":104003,"content":9091,"level":121},"\u002Fblog\u002Fheadroom-claude-code-token-saving#ccr",[8622,9053],{"id":104005,"title":9095,"titles":104006,"content":104007,"level":121},"\u002Fblog\u002Fheadroom-claude-code-token-saving#cachealigner-prefix_cache",[8622,9053],"Anthropic API에는 이전에 보낸 프롬프트와 동일한 내용이 앞부분에 있으면 해당 구간 비용을 90% 할인해 주는 프롬프트 캐싱 기능이 있다. 문제는 대화가 길어지면서 컨텍스트가 조금씩 바뀌면 캐시가 깨지기 쉽다는 점이다. CacheAligner는 변하지 않는 내용을 앞쪽에 고정하고 가변 내용을 뒤에 배치하는 방식으로 프롬프트를 정렬해서, 캐시 적중률을 높게 유지해 준다. html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":10135,"title":9129,"titles":104009,"content":104010,"level":94},[],"localStorage의 storage 이벤트, BroadcastChannel, window.postMessage와 Service Worker 중계를 전달 범위에 따라 비교하고 로그아웃 상태를 여러 탭에 반영하는 방법을 정리한다. 같은 사이트여도 탭 사이에 통신이 필요할 때가 있다. 한 탭에서 로그아웃하거나 데이터를 변경한 뒤 다른 탭에도 알려야 하는 상황이다. 메시지를 전달하는 방법은 대상 범위에 따라 나뉜다. 여러 탭에 알릴 때는 storage 이벤트나 BroadcastChannel을 사용하고, Origin이 다른 팝업이나 iframe과 통신할 때는 window.postMessage()를 사용한다. Worker를 Same-Origin 컨텍스트의 중계 지점으로 사용할 수도 있다. 방법전달 대상Window reference데이터 저장Cross-Originstorage 이벤트Same-Origin의 다른 탭과 창필요 없음localStorage에 남음불가BroadcastChannel같은 Storage Partition과 Origin을 공유하는 탭, 창, iframe, Worker필요 없음남지 않음불가window.postMessage()Window reference가 있는 팝업이나 iframe필요남지 않음가능Service Worker 중계Worker가 제어하거나 조회한 클라이언트Worker가 조회남지 않음Same-Origin",{"id":104012,"title":9244,"titles":104013,"content":104014,"level":105},"\u002Fblog\u002Fjavascript-cross-tab-communication-methods#localstorage-변경-감지",[9129],"localStorage.setItem(\n  'session:state',\n  JSON.stringify({ status: 'signed-out', changedAt: Date.now() }),\n)\n\napplySignedOutState() 어떤 탭에서 로그아웃을 하면, window.addEventListener('storage', (event) => {\n  if (event.storageArea !== localStorage) return\n  if (event.key !== 'session:state' || event.newValue === null) return\n\n  const state = JSON.parse(event.newValue)\n\n  if (state.status === 'signed-out') {\n    applySignedOutState()\n  }\n}) storage 이벤트로 다른 탭에서 받을 수 있다. 값을 바꾼 탭에는 이벤트가 전달되지 않는다. 이벤트에는 key, oldValue, newValue, storageArea, 트리거된 url이 담긴다. 일회성 메시지보다 로그인 상태나 사용자 설정처럼 저장할 값의 동기화할 때 사용하는 게 좋다. 같은 값을 다시 저장하면 변경이 없어 이벤트를 발송하지 않아서 로직 실행이 불가능하다.",{"id":104016,"title":9141,"titles":104017,"content":104018,"level":105},"\u002Fblog\u002Fjavascript-cross-tab-communication-methods#broadcastchannel",[9129],"const channel = new BroadcastChannel('session-events')\n\nchannel.addEventListener('message', (event) => {\n  if (event.data?.type === 'SIGNED_OUT') {\n    applySignedOutState()\n  }\n})\n\nfunction signOut() {\n  applySignedOutState()\n  channel.postMessage({ type: 'SIGNED_OUT' })\n}\n\nwindow.addEventListener('pagehide', () => channel.close(), { once: true }) 같은 이름으로 만든 채널은 같은 도메인의 창, 탭, iframe과 Worker 모두 메세지를 받을 수 있다. 메시지를 보낸 BroadcastChannel 객체는 자신의 메시지를 다시 받진 않는다. 채널을 더 쓰지 않을 때 close()를 호출하면 해당 객체가 채널에서 빠진다.",{"id":104020,"title":9650,"titles":104021,"content":104022,"level":105},"\u002Fblog\u002Fjavascript-cross-tab-communication-methods#windowpostmessage",[9129],"const authWindow = window.open('https:\u002F\u002Fauth.example.com\u002Flogin')\n\nauthWindow?.postMessage(\n  { type: 'SESSION_REQUEST' },\n  'https:\u002F\u002Fauth.example.com',\n) window.open()으로 연 팝업에 메세지를 보낸다. 같은 도메인이 아니어도 사용할 수 있다는 점이 강점이다. window.addEventListener('message', (event) => {\n  if (event.origin !== 'https:\u002F\u002Fauth.example.com') return\n  if (event.source !== authWindow) return\n  if (event.data?.type !== 'SESSION_RESULT') return\n\n  updateSession(event.data.session)\n}) message 이벤트로 동일하게 받지만 다른 도메인도 가능하다는 게 BroadcastChannel 과 다른 점이다. 대신 수신 측에서는 origin만 확인하고 끝내지 않고, 예상한 Window가 맞는지 source와 메시지 구조 등등 종합적으로 검토해야 보안에 문제가 없을듯. 송신할 때 targetOrigin을 *로 두면 메시지를 받을 문서의 Origin을 제한하지 못한다. 대상 Origin을 알고 있다면 scheme, host, port를 포함한 정확한 값을 지정하는 게 좋다. 사용자가 주소창이나 북마크로 직접 연 임의의 탭은 Window reference가 없으므로 전달이 불가능하다. 이 경우는 BroadcastChannel이나 storage 이벤트를 쓰는 게 맞다.",{"id":104024,"title":9846,"titles":104025,"content":104026,"level":105},"\u002Fblog\u002Fjavascript-cross-tab-communication-methods#service-worker를-활용한-통신",[9129],"Service Worker를 이미 등록한 앱에서 푸시나 백그라운드 이벤트를 열려 있는 탭에 알릴 때 사용할 수 있다. \u002F\u002F page.ts\nnavigator.serviceWorker.controller?.postMessage({\n  type: 'BROADCAST',\n  payload: { type: 'CONTENT_UPDATED' },\n})\n\nnavigator.serviceWorker.addEventListener('message', (event) => {\n  if (event.data?.type === 'CONTENT_UPDATED') {\n    refreshContent()\n  }\n}) 서비스 워커에 메세지를 보내고, message 이벤트로 받는다. \u002F\u002F service-worker.js\nself.addEventListener('message', (event) => {\n  if (event.data?.type !== 'BROADCAST') return\n\n  event.waitUntil(\n    self.clients.matchAll({ type: 'window' }).then((clientList) => {\n      for (const client of clientList) {\n        if (client.id !== event.source?.id) {\n          client.postMessage(event.data.payload)\n        }\n      }\n    }),\n  )\n}) clients.matchAll()은 기본적으로 현재 Service Worker가 제어하는 모든 클라이언트를 반환한다. includeUncontrolled: true를 지정하면 같은 도메인이지만 아직 워커의 제어를 받지 않은 클라이언트까지 조회할 수 있다. 탭 통신만을 위해 Service Worker를 새로 도입하면 등록과 활성화, 제어 범위와 갱신 수명 주기까지 관리해서 비추 html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":10835,"title":10146,"titles":104028,"content":104029,"level":94},[],"M 시리즈 맥북 환경에서 llama.cpp와 Unsloth Qwen 3.5 모델을 사용해 API 비용 부담 없이 Claude Code 에이전트 코딩 환경을 구축하는 단계별 튜토리얼입니다. 클로드코드로 로컬 모델을 연결해서 쓸 수 있다는 말에 맥북에서 한번 돌려보기로 했다.\n48GB 메모리를 가진 맥북 Pro 환경에서 llama.cpp와 Qwen 3.5 35B 모델을 사용해 완전히 오프라인 상태에서도 동작하는 무료 에이전트 코딩 환경을 구축하는 방법을 공유한다.",{"id":104031,"title":10155,"titles":104032,"content":104033,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#왜-llamacpp와-qwen-35인가",[10146],"처음에는 Ollama 로 설치해서 테스트했으나 제대로 안돌아가기도 하고, 설정도 한계가 있어서 llama.cpp 서버를 직접 올리기로 결정. 사용할 로컬 LLM으로는 Qwen 3.5 모델군을 선택했다. 내 맥북의 메모리가 48GB인 점을 감안하여 35B(350억 파라미터) 크기의 모델(unsloth\u002FQwen3.5-35B-A3B-GGUF:Q4_K_M)을 선택했다.메모리 용량이 다소 부족한 경우 27B 모델 혹은 14B 이하 버전 사용",{"id":104035,"title":10173,"titles":104036,"content":104037,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#llamacpp-설치-및-서버-구동",[10146],"brew install llama.cpp 우선 Homebrew를 통해 터미널 환경에 llama.cpp를 설치한다.\n설치가 완료되면 로컬 서버(llama-server)를 구동해야 한다. 단순히 켜는 것이 아니라, 에이전트가 끊임없이 컨텍스트를 유지하고 도구(Tools)를 사용할 수 있도록 고도의 최적화 옵션을 지정해 주는 것이 핵심이다. 다음 명령어를 통해 서버를 시작한다. llama-server \\\n  -hf unsloth\u002FQwen3.5-35B-A3B-GGUF:Q4_K_M \\\n  --port 8131 \\\n  -c 131072 \\\n  -b 2048 \\\n  -ub 1024 \\\n  --parallel 1 \\\n  -fa on \\\n  --jinja \\\n  --keep 1024 \\\n  --cache-type-k q8_0 \\\n  --cache-type-v q8_0 \\\n  --swa-full \\\n  --no-context-shift \\\n  --chat-template-kwargs '{\"enable_thinking\": false}' \\\n  --mlock \\\n  --no-mmap 옵션설명-c 131072컨텍스트 윈도우 크기를 128k(131,072)로 지정--chat-template-kwargs '{\"enable_thinking\": false}'생각(Thinking\u002FReasoning) 모드 비활성화. 에이전트 코딩 환경에서는 불필요한 토큰 낭비를 막기 위해 추론 모드를 끄는 것을 권장--swa-full슬라이딩 윈도우 어텐션(SWA) 캐시를 전체 컨텍스트로 확장하여 프롬프트 캐싱 효율을 끌어올린다. RAM 소모는 늘어나지만 성능 향상이 크다.--no-context-shift에이전트 구동에 필수 옵션이다. 컨텍스트 시프트가 일어나면 SWA 캐시가 깨질 수 있어 비활성화한다.--cache-type-k\u002Fv q8_0정밀도 손실이 거의 없는 q8_0 포맷으로 키\u002F값 캐시를 구성해 처리 속도를 대폭 높인다.--keep 1024최초 입력된 시스템 프롬프트를 캐시에서 삭제하지 않고 보존한다.--mlock --no-mmapRAM에 메모리를 잠가서 가상 메모리 스왑으로 인한 성능 저하를 방지하는 macOS 최적화 옵션이다.",{"id":104039,"title":10435,"titles":104040,"content":104041,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#claude-code-설정",[10146],"{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"http:\u002F\u002F127.0.0.1:8131\",\n    \"ANTHROPIC_AUTH_TOKEN\": \"local\",\n    \"ANTHROPIC_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_OPUS_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_SONNET_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"ANTHROPIC_DEFAULT_HAIKU_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"CLAUDE_CODE_SUBAGENT_MODEL\": \"unsloth\u002Fqwen3.5-35b-a3b\",\n    \"CLAUDE_CODE_MAX_OUTPUT_TOKENS\": \"128000\",\n    \"DISABLE_PROMPT_CACHING\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\",\n    \"CLAUDE_CODE_ATTRIBUTION_HEADER\": \"0\"\n  },\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(git *)\", \"Bash(npm *)\", \"Bash(npx *)\", \"Bash(node *)\", \"Bash(ls *)\", \n      \"Bash(cat *)\", \"Bash(mkdir *)\", \"Bash(cp *)\", \"Bash(mv *)\", \"Bash(rm *)\", \n      \"Read\", \"Edit\", \"Write\", \"Glob\", \"Grep\"\n    ]\n  }\n} 이제 설치된 Claude Code가 방금 띄운 로컬 Llama 서버를 바라보도록 설정 파일을 수정해 준다.\n사용자의 Claude 설정 경로(~\u002F.claude\u002Fsettings.json) 파일을 열고 아래와 같이 수정한다. !IMPORTANT\n환경 변수 export 명령으로 헤더 등을 차단하려 할 경우 오동작할 수 있으므로, 반드시 위의 json 설정 방식을 사용하는 것을 권장한다.",{"id":104043,"title":10704,"titles":104044,"content":104045,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#실행-편리성을-위한-alias-등록",[10146],"cat \u003C\u003C 'EOF' >> ~\u002F.zshrc\ncclocal() {\n  export ANTHROPIC_BASE_URL=\"http:\u002F\u002F127.0.0.1:8131\"\n  export ANTHROPIC_AUTH_TOKEN=\"local\"\n  claude \"$@\"\n}\nEOF\nsource ~\u002F.zshrc 이제 터미널에 cclocal을 입력하기만 하면 로컬 LLM을 기반으로 오프라인 Claude 에이전트 코딩이 가능해진다.",{"id":104047,"title":10771,"titles":104048,"content":104049,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#실제-구동-성능-확인",[10146],"서버 로그를 확인해 보면 아래와 같이 실시간 처리 타임이 기록되는 것을 볼 수 있다. > prompt eval time = 31108.14 ms \u002F 3912 tokens ( 7.95 ms per token, 125.75 tokens per second)\n> eval time = 21045.89 ms \u002F 338 tokens ( 62.27 ms per token, 16.06 tokens per second)\n> total time = 52154.03 ms \u002F 4250 tokens 프롬프트 파싱 속도 (Prompt Eval): 초당 약 125 tokens 수준으로 로컬 구동임에도 매우 쾌적한 속도를 보여준다.텍스트 생성 속도 (Eval): 초당 약 16 tokens 수준으로 에이전트의 생각을 지연 없이 실시간으로 받아볼 수 있다. 그런데 과금해서 사용하는 것보다 확실히 많이 느리고, 결과물도 아직은 퀄리티가 좋은지 모르겠다.. 하지만 나중에는 모든 사람들의 로컬에서 llm 이 자체적으로 돌아가는 세상이 오지 않을까 싶다. 메모리만 충분하면!",{"id":104051,"title":6005,"titles":104052,"content":10822,"level":105},"\u002Fblog\u002Flocal-llm-claude-code#참고한-페이지",[10146],{"id":15037,"title":10845,"titles":104054,"content":104055,"level":94},[],"Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크. 개발 블로그를 작성하기 위해서 github.io 를 사용하기로 했다. velog나 tistory, medium 같은 것들도 있지만, 내가 완전히 커스터마이징 가능한 페이지를 갖고 싶었다. 그렇다고 서버를 돌리거나, AWS를 통해서 구축하는 수고까지는 하지 않으려 했다. 지금 와서 생각해보면 거의 비슷한 공수가 들었다. Notion도 고려했는데, 내 개인 노트로 아주 잘 활용하고 있으나 블로그로 사용하기에는 너무 에디터다. 이렇게 쓰니까 깃헙을 고른 이유는 그냥 해보고싶어서에 가까워 보인다. 페이지를 구축할 언어로는 내가 지금 사용하고 있는 Vue 프레임워크를 사용할 것이다. 단순히 정말 지금 내가 익숙한 것이기 때문에 골랐다. 그렇다고 블로그에 대단한 기능을 넣을 것은 아니다. 나중에 게시글 뿐 아니라 포트폴리오의 역할도 해줄 수 있을 것 같아서, 주력 프레임워크를 선택해야겠다고 다짐했다. ENJOY DEV 참고한 블로그는 위 블로그이다. 내가 하려던 것을 똑같이 이미 구현해서 사용하고 계셨기 때문에 참고하기에 너무 훌륭한 블로그였다. 직접 블로그에 포스팅도 해주셨는데, 중간중간 소스도 염탐했다.",{"id":104057,"title":10867,"titles":104058,"content":104059,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#githubio-페이지-만들기",[10845],"당연히 Github 계정이 있어야한다. [유저명.github.io](http:\u002F\u002F유저명.github.io) 라고 프로젝트를 하나 만든다. 이렇게 프로젝트를 만들면 자동으로 Github Pages 를 사용하겠다고 알리는 격이다. 필수는 아니고, 나중에 Github Pages 를 사용하겠다고 따로 설정할 수도 있다. 배포 대상 브랜치를 선택하고, 폴더를 선택하여 저장하면 끝이다. 하지만 이름을 짓기도 귀찮고, 굳이 따로 설정할 필요가 없으니 규칙을 따라서 진행한다.",{"id":104061,"title":10891,"titles":104062,"content":104063,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#github-actions-로-github-pages-배포",[10845],"Github Pages 로 사용되는 레포는 대부분 결과물을 관리하는 레포이다. 레포에 푸시가 되면 Github 봇이 감지하여, 자동으로 Github Pages 배포를 실행한다. 나는 vue 앱을 빌드하고 결과물을 배포하는 것까지 한번에 관리를 하고 싶다. 방법은 세 가지가 있다. gh-pages 활용수동 빌드github actions 등록 내가 선택한 방법은 3번이고, 1번은 시도도 안해봤다. 하지만 gh-pages 를 많이들 사용한다. 간단하게 설명을 하자면,",{"id":104065,"title":10919,"titles":104066,"content":104067,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#gh-pages",[10845,10891],"gh-pages 라는 라이브러리를 가지고, 빌드 결과물을 gh-pages 브랜치 에 publish 하는 것이다. 기본적으로는 package.json 파일의 homepage 속성에 해당하는 url 로 배포를 하게 된다.",{"id":104069,"title":10910,"titles":104070,"content":104071,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#수동-빌드",[10845,10891],"수동 빌드 는 Github Pages 설정 페이지에서 호스팅할 폴더를 고를 수 있다. 기본적으로 root 폴더이며, \u002Fdocs 폴더를 추가로 지정할 수 있다. 해당 레포 브랜치의 docs 폴더를 호스팅하겠다는 것이다. \u002F\u002F vue.config.js\nmodule.exports = {\n  outputDir: 'docs',\n} 빌드의 결과물을 docs 폴더에 생성되게 하고, 레포에 올려주기면 하면 된다. vue 의 경우 outputDir 속성을 docs 로 변경해주면 간단하게 결과 폴더가 바뀐다. 추가로 .gitignore 에 docs 폴더가 있다면 항목을 제거해서 원격 레포에 푸시해주면 자동으로 봇이 실행되면서 페이지를 배포한다.",{"id":104073,"title":11004,"titles":104074,"content":104075,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#github-actions",[10845,10891],"Github Actions 는 간단하게 설명하면, CICD 툴이다. 젠킨스나, aws pipeline, circleCI 같은 역할을 한다. Gitlab 에도 비슷한 기능이 있는데, 이쪽은 아직 써보지 못했다. Github Actions 는 프로젝트에 포함된 yaml 파일을 기반으로 명령을 실행한다. name: Deployment to Github Pages\non:\n  push:\n    branches:\n      - deploy\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@master\n      - name: Set up Node.js\n        uses: actions\u002Fsetup-node@master\n        with:\n          node-version: 16.x\n      \n      - name: Install dependencies\n        run: npm install\n\n      - name: Build\n        run: npm run build\n        env:\n          NODE_ENV: production\n      \n      - name: Deploy\n        uses: peaceiris\u002Factions-gh-pages@v2.5.0\n        env:\n          PERSONAL_TOKEN: $\\{\\{secrets.GH_TOKEN\\}\\}\n          PUBLISH_BRANCH: master\n          PUBLISH_DIR: .\u002Fdist\n          SCRIPT_MODE: true on 은 트리거로 Github 대부분의 훅을 활용할 수 있다. 가장 기본적으로 푸시가 있으며, 라벨, 이슈 관리, 풀 리퀘스트, 스케줄 등이 있다. 자세한 건 Github Docs 에 자세히 작성되었다. jobs 는 말 그대로 작업이며, 적힌대로 쭉 작업을 진행한다. 위 코드를 간략히 보자면, “deploy 브랜치의 푸시가 감지되면, 코드를 체크아웃한 후에 npm install 로 종속성을 모두 다운로드 받고, npm run build 로 빌드를 한 후, gh-pages 아티팩트를 활용해서 master 브랜치에 dist 폴더에 담긴 결과물을 배포” 이다. 이 때 활용하게 되는 것이 Github Secrets 이다. Actions 실행할 때 필요한 암호키나 레포에 노출되지 말아야 하는 중요한 데이터의 경우 레포 설정에 저장해놓고 사용함으로써 외부로 노출시키지 않아도 된다. 간단하게 이름-값 으로 이루어져 있어서 대충봐도 키를 등록할 수 있을 것이다. 데이터를 사용할 때는 PERSONAL_TOKEN: $\\{\\{secrets.GH_TOKEN\\}\\} 이런 식으로 사용한다. master 브랜치에 결과물이 배포되기 때문에 Pages 설정을 알맞게 바꿔준다. Github Workflow 는 두 번 돌게 된다. deploy 브랜치에 배포를 하면 Github Actions 가 실행되어 빌드하고, master 브랜치에 결과물을 푸시한다.그럼 Gihub 봇이 알아채고 페이지에 배포를 시작한다. 봇이 돌린 Workflow 에서 배포가 완료된 우리의 페이지도 확인할 수 있다. 아래 Artifacts 는 Jekyll 이 빌드한 결과물이다. 실제로 보면 npm build 결과를 그대로 래핑하는 것과 매한가지다.",{"id":104077,"title":11351,"titles":104078,"content":104079,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#블로그-포스트-목록-관리하기",[10845],"따로 서버를 관리할 것이 아니라면 레포에 글 목록도 관리를 하는 게 맞다고 판단했다. 클라에서 모든 것을 해결하는 것은 어렵지 않다. 데이터를 직접 작성해서 갖고 있으면 된다. \u002F\u002F public\u002Fposts\u002Fpostlist.json\n[\n  {\n    \"url\": \"d5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\",\n    \"fileName\": \"first-post\",\n    \"title\": \"블로그를 Github.io 로 시작하는 첫 포스트\",\n        \"description\": \"요약을 써줘요\",\n    \"createdAt\": \"2022-06-24\",\n    \"updatedAt\": \"2022-06-25\",\n    \"tags\": [\"tag1\"]\n  },\n  {\n    \"url\": \"8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\",\n    \"fileName\": \"second-post\",\n    \"title\": \"두 번째 포스트\",\n        \"description\": \"요약을 써줘요\",\n    \"createdAt\": \"2022-06-24\",\n    \"updatedAt\": \"2022-06-25\",\n    \"tags\": [\"tag1\"]\n  }\n] static 하게 직접 관리할 대상이기 때문에, public 폴더에 두었다. Vue 빌드 시 public 폴더 안의 내용물은 그대로 결과폴더에 복사되기 때문에, 깃헙에서 바로 읽어올 수 있다. import { VuexModule, Module, Mutation, Action } from \"vuex-module-decorators\";\nimport axios from \"axios\";\n\nexport interface Post {\n  url: string;\n  fileName: string;\n    description: string;\n  title: string;\n  tags: string[];\n  data: string;\n}\n\n@Module({ namespaced: true, })\nclass Posts extends VuexModule {\n  public postList:Post[] = [];\n  public currentUrl = '';\n\n  get currentPost(): Post | undefined {\n    if(this.currentUrl == null || this.currentUrl == '' || this.postList.length \u003C= 0){\n      return undefined;\n    }\n    else {\n      return this.postList.find(post => {\n        return post.url === this.currentUrl;\n      })\n    }\n  }\n  \n  @Mutation\n  public setPostList(postList: Post[]) {\n    this.postList = postList;\n  }\n  @Mutation\n  public setCurrentUrl(currentUrl: string) {\n    this.currentUrl = currentUrl;\n  }\n\n  @Action\n  public requestGetPostList() {\n    axios.get(`\u002Fposts\u002Fpostlist.json`).then(res => {\n      this.context.commit(\"setPostList\", res.data);\n    });\n  }\n\n  @Action\n  public moveCurrentUrl(url: string) {\n    this.context.commit(\"setCurrentUrl\", url);\n  }\n}\n\nexport default Posts; posts store의 기능은 다음과 같다. 포스트 목록을 postlist.json 에서 읽어오기(사이트 접속 시 한 번)\n사이트 접속 시 한 번이라고 판단한 근거는 기술 블로그를 찾아다닐 때는 보통 구글링을 통해서 유입된다. 그렇다고 한번 들어온 사람이 그 블로그의 다른 글까지도 샅샅이 뒤져보는 경우는 거의 없다. 원하는 정보를 확인한 후 바로 나가는 것이 태반이다. 또 대부분 최신의 포스팅 보다는 최소 한 두달 전의 게시글을 확인하기 마련이며, 글 목록을 계속해서 갱신할 필요는 없다고 판단했다.포스트 페이지에서 전달받은 포스트 url 을 갖고 해당하는 포스트를 조회한다.(포스트 페이지 진입 시)\n이 부분은 갖고 있는 포스팅 목록에서 단순히 조회하는 기능이다. 추후에 글이 엄청 많아져서 조회에 걸리는 데 부하가 걸리면 행복한 고민이니까 나중에 하자. \u002F\u002F App.vue\nimport { useStore } from 'vuex';\nconst store = useStore();\nstore.dispatch(\"Posts\u002FrequestGetPostList\"); 사이트 최초 접속 시에만 포스트 목록을 가져오게끔 App.vue 의 setup 훅에서 조회하도록 했다. \u002F\u002F DetailView.vue\nimport { ref, defineProps, onMounted, computed } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { useStore } from 'vuex';\n\nconst store = useStore();\nconst route = useRoute();\nconst paramId = route.params.id;\n\nstore.dispatch(\"Posts\u002FmoveCurrentUrl\", paramId);\nconst post = computed(() => {\n  return store.getters[\"Posts\u002FcurrentPost\"];\n}); DetailView 가 포스트 내용을 보여줄 뷰인데, 포스트 url 을 확인한 후 해당하는 포스트 데이터를 가져오게 했다. 이걸 토대로 글 목록을 보여주니 잘 나온다.",{"id":104081,"title":12346,"titles":104082,"content":104083,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#markdown-적용하기",[10845],"나는 개발 노트를 2014년부터 사용했는데, 에버노트 - Typora - Joplin - 노션 순서로 넘어왔다. Typora 와 Joplin 은 사용기간이 매우 짧아서 에버노트 사용 후 노션으로 넘어왔다고 봐도 무방하다. 그 이유가 마크다운이었던 만큼, 개발 블로그는 무조건 마크다운이다 라고 생각했다. npm i showdown\nnpm i showdown-table showdown 이라는 라이브러리를 사용할 것이다. 참고한 블로그에서 사용했기 때문이다. 왠지 마크다운 변환 라이브러리가 많을 것 같아서 다 알아봐야하는 데 시간 좀 걸리겠다 했는데, 빠르게 정할 수 있었다. 이 라이브러리는 단순하게 md 데이터를 html 로 마크업해주는 역할이다. 단순 스트링을 인자로 넘겨주면 된다. showdown-table 은 이름 그대로 table 까지 지원해주는 확장라이브러리이다. 그 말은 즉슨 showdown 라이브러리에서는 기본으로 지워하지 않는다는 뜻이다. \u002F\u002F src\u002Fstore\u002Fposts.ts\n@Action\npublic requestGetMarkdoen(postName: string) {\n  return axios.get(`\u002Fposts\u002F${postName}.md`).then(res => {\n    const markdownPost = res.data;\n    **const converter = new showdown.Converter()**\n        converter.setOption('tables', true);\n    **const md2html = converter.makeHtml(markdownPost);\n    return md2html;**\n  });\n} 사용 방법도 간단하다. converter 를 할당해주고, makeHtml 함수를 호출하면 끝이다. table 확장을 추가할 때, 공식 Github 문서에서는 new showdown.Converter({ extensions: ['table'] }) 로 사용하라고 하지만, md 변환이 전혀 안되는 문제가 있어서 다른 방법을 찾았다. \u002F\u002F DetailView.vue\n\u003Cdiv v-html=\"postContents\">\u003C\u002Fdiv>\n\n\u002F\u002F script\nonMounted(() => {\n  store.dispatch(\"Posts\u002FrequestGetMarkdoen\", post.value.fileName).then((res) => {\n    postContents.value = res;\n  })\n}) DOM의 innerValue 로 넣어주면 간단하게 md 로 작성했던 포스팅이 html 이 렌더링된다. 간단-",{"id":104085,"title":12642,"titles":104086,"content":104087,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#prerendering",[10845],"Github Pages 특성상 SPA 지원을 안하기 때문에, 홈이 아닌 다른 URL을 접속하려고 하면 404 페이지가 뜬다. 물론 SPA 사이트도 홈에서 라우팅을 한다면 작동은 하겠지만은 누가 블로그를 홈에서부터 여행을 하겠는가. 구글엔진은 SPA도 js를 실행해 크롤링한다고는 하는데, Github Pages는 홈을 제외한 페이지에 아예 접속조차 안되며, SEO도 신경써야하니 Prerendering 은 필수이다. npm i -D prerender-spa-plugin -> webpack4\nnpm i -D prerender-spa-wp5-plugin -> webpack5 한참 애를 먹었던 녀석이다. 참고하던 블로그에서는 Vue가 내부적으로 Webpack4 를 사용해서 원본 라이브러리로도 잘 돌아가지만, 내가 만든 프로젝트에서는 계속 에러가 발생했다. prerender-spa-plugin Unable to prerender all routes! 바로 이 에러인데, 내용도 모른다. 콜스택은 에러를 뿌려주는 코드의 에러로만 나타나서 어디가 문제인지도 한눈에 알아볼 수 없었다. 개같이 찾아봤지만 확실한 답을 얻지 못하고, 아예 라이브러리 소스를 디버깅해보기로 했다. 저 에러를 콘솔에 찍는 부분부터 역으로 코드를 확인해서 답을 얻었다. Webpack5 에서의 complier.outputFileSystem 에는 mkdirp 가 없는데, 이걸 사용하려고 해서 에러가 발생했다. Webpack5로의 마이그레이션이 전혀 안된 것이다. 그제야 Github에서도 2018년에 업데이트가 끝났다는 걸 확인했다. 소스를 바꿔서 사용해야하나 싶었다. \u002F\u002F node_modules\u002Fprerender-spa-plugin\u002Fes6\u002Findex.js\n\n\u002F\u002F 58 line\n\u002F\u002F mkdirp 함수를 대체한다.\nconst mkdirp = function (dir, opts) {\n  return new Promise((resolve, reject) => {\n    console.log('\\ndir', dir, opts, '\\n');\n    try {\n      compilerFS.mkdirp(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))\n    } catch(e) {\n      compilerFS.mkdir(dir, opts, (err, made) => err === null ? resolve(made) : reject(err))\n    }\n  })\n}\n\n\u002F\u002F 124 line\n\u002F\u002F recursive 옵션을 추가해준다.\nreturn mkdirp(path.dirname(processedRoute.outputPath), {recursive: true}) 소스 수정 항목은 매우 간단하다. mkdir 함수로 바꾸면 되는데 이러면 또 문제가 생긴다. 포스팅 여러개를 렌더링할 때 mkdir 을 여러번 호출하는데, 중복이 된 경우에도 예외가 발생해서 렌더링이 안된다. 그래서 recursive 옵션까지 주어야 완벽하게 호환이 된다. 하지만 문제는 Github Actions 를 사용한다는 것이다. Actions 가 실행될 때는 npm install 로 종속성 다운로드 후 바로 빌드를 하기 때문에 바뀐 소스를 적용하지 못한다. 그래서 결국 Webpack5 버전으로 누군가 새로 올려준 라이브러리를 받아서 진행했다. 그게 prerender-spa-wp5-plugin 이다. const path = require('path')\nconst PrerenderSpaPlugin = require('prerender-spa-wp5-plugin')\n\nconst posts = require('.\u002Fpublic\u002Fposts\u002Fpostlist.json')\nconst routes = posts.map(post => `\u002F${post.url}`)\nconst paths = posts.map(post => {\n  return { \n    path: `\u002F${post.name}\u002F`,\n    lastmod: post.lastmod || post.date,\n    changefreq: 'yearly'\n  }\n})\n\nmodule.exports = [\n  new PrerenderSpaPlugin({\n    staticDir: path.join(__dirname, 'dist'),\n    routes: [\"\u002F\", ...routes],\n    renderer: new PrerenderSpaPlugin.PuppeteerRenderer({\n      renderAfterElementExists: '#app',\n    }),\n  }),\n];\n\u002F\u002F vue.config.js\nconst webpackPlugins = require('.\u002Fwebpack.plugin');\nmodule.exports = {\n    configureWebpack: (config) => {\n      if (process.env.NODE_ENV === 'production') {\n        config.plugins.push(...webpackPlugins); \u002F\u002F 상단에서 정의한 postPlugins 내용 삽입\n      }\n    },\n} 위와 같이 Webpack 플러그인을 작성한 후 등록해주면 간단하게 끝난다. 빌드하면 결과물 폴더에, 변환한 URL에 해당하는 index.html 파일들이 우수수 빌드가 된 걸 확인할 수 있다. 그리고 포스팅 URL 로 바로 접속도 가능해졌다.",{"id":104089,"title":13385,"titles":104090,"content":104091,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#sitemap-자동-생성",[10845],"npm i -D sitemap-webpack-plugin 사이트맵 생성에는 sitemap-webpack-plugin 을 사용한다. 개발자들의 스승님인 구글 검색 엔진에 블로그가 더 잘 노출이 되고, 크롤링에 도움을 주기위해서 사이트맵은 필요하다. Webpack 이 참 플러그인 생태계가 좋다. const SitemapPlugin = require('sitemap-webpack-plugin').default;\nconst paths = posts.map(post => {\n  return { \n        path: `\u002F${post.url}\u002F`,\n    lastmod: post.updatedAt || post.createdAt,\n    changefreq: 'yearly'\n  }\n})\n\nmodule.exports = [\n    ...,\n  new SitemapPlugin({\n    base: process.env.VUE_APP_BASE_URL,\n    paths\n  })\n]; 또 플러그인을 작성하고, 빌드하면 끝이다. \u003Curl>\n    \u003Cloc>https:\u002F\u002Flhs-source.github.io\u002Fd5c653f34310b85f731a497e64970059921fba363647f5cc1e39ead9ea9cf76f\u002F\u003C\u002Floc>\n    \u003Clastmod>2022-06-25T00:00:00.000Z\u003C\u002Flastmod>\n    \u003Cchangefreq>yearly\u003C\u002Fchangefreq>\n\u003C\u002Furl>\n\u003Curl>\n    \u003Cloc>https:\u002F\u002Flhs-source.github.io\u002F8689a6f9a9428af5a3570a0236abdb9abf62409077138a3d02a676b3a3f757f4\u002F\u003C\u002Floc>\n    \u003Clastmod>2022-06-25T00:00:00.000Z\u003C\u002Flastmod>\n    \u003Cchangefreq>yearly\u003C\u002Fchangefreq>\n\u003C\u002Furl> 이렇게 구글 엔진에 등록할 sitemap.xml 이 저절로 만들어진다. 결과물 폴더에 만들어지기 때문에, 브라우저에서도 바로 접속할 수 있다.",{"id":104093,"title":13693,"titles":104094,"content":104095,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#사이트맵-등록하기",[10845,13385],"Google Search Console 구글 검색 콘솔에 접속한다. 우선은 사이트를 생성하고, 그 사이트에 사이트맵을 등록할 것이다. URL 을 입력하고 다음으로 넘어가자. \u003C!DOCTYPE html>\n\u003Chtml lang=\"\">\n  \u003Chead>\n    \u003Cmeta name=\"google-site-verification\" content=\"p4lZFdtKOsDj6_1O2f_PsufQnO068kmB_Sgrs5UlweQ\" \u002F>\n    \u003C\u002Fhead>\n\u003C\u002Fhtml> 제일 간단한 메타태그 추가를 통해 사이트 인증을 진행한다. 사이트 루트에 메타태그가 있어야하기 때문에, public\u002Findex.html 에 메타태그를 추가해주자. 블로그 루트 페이지에 추가된 것을 확인하고 다시 콘솔로 간다. 소유권을 확인받았다. 사이트맵은 자동생성되었기 때문에, \u002Fsitemap.xml 를 통해 접속할 수 있다. URL로 한번 접속해보고 데이터가 잘 오는 걸 확인하고 제출하자. 성공!",{"id":104097,"title":13842,"titles":104098,"content":104099,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#메타태그-작성하기",[10845],"블로그 내용에 대해서 잘 알려주기 위해 렌더링하는 포스팅 페이지에 메타태그를 추가하자. 누군가 링크를 퍼가거나, 검색엔진에서 긁어갈 때 메타태그가 아주 중요한 역할을 한다. module.exports = [\n  new PrerenderSpaPlugin({\n    postProcess(renderedHtml) {\n            let { html, route } = renderedHtml;\n      console.log('renderedHtml', renderedHtml);\n      const foundPost = posts.find(post => route.includes(post.url))\n      if(foundPost == null) {\n        return renderedHtml;\n      }\n      const { title, description, tags } = foundPost;\n      const titleText = title ? title.replace(\u002F\u003Cbr>\u002Fig, '') : process.env.VUE_APP_TITLE\n      const descriptionText = description || '이현수 개발기'\n      const tagsText = tags || '개발, 프론트엔드, 블로그, github pages, Vue3'\n      const url = `${process.env.VUE_APP_BASE_URL}${route}`\n      const imgUrl = `${process.env.VUE_APP_BASE_URL}\u002Fimages\u002Fthumbnail.jpg`\n\n      const metaData = `\n        \u003Ctitle>${titleText}\u003C\u002Ftitle>\n        \u003Cmeta name=\"title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta name=\"description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta name=\"keywords\" content=\"${tagsText}\" \u002F>\n        \u003Cmeta property=\"og:url\" content=\"${url}\" \u002F>\n        \u003Cmeta property=\"og:type\" content=\"article\" \u002F>\n        \u003Cmeta property=\"og:title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta property=\"og:description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta property=\"og:image\" content=\"${imgUrl}\" \u002F>\n        \u003Cmeta property=\"twitter:card\" content=\"${imgUrl}\" \u002F>\n        \u003Cmeta property=\"twitter:url\" content=\"${url}\" \u002F>\n        \u003Cmeta property=\"twitter:title\" content=\"${titleText}\" \u002F>\n        \u003Cmeta property=\"twitter:description\" content=\"${descriptionText}\" \u002F>\n        \u003Cmeta property=\"twitter:image\" content=\"${imgUrl}\" \u002F>\n      `;\n      const start = html.indexOf('\u003Chead>') + '\u003Chead>'.length;\n      html = html.slice(0, start) + metaData + html.slice(start);\n      renderedRoute.html = html;\n      return renderedRoute;\n    }, 아까 사용했던 PrerenderSpaPlugin 을 활용한다. 훅 중 하나인 postProcess 에 메타 태그를 심어주는 코드를 작성한다. 필수로 들어가면 좋을 태그는 title, description , keyword 라고 한다.",{"id":104101,"title":14390,"titles":104102,"content":14393,"level":105},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#google-analytics-추가",[10845],{"id":104104,"title":14397,"titles":104105,"content":104106,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#ga4-계정-생성하기",[10845,14390],"Redirecting... GA 콘솔에 들어가서 계정과 속성을 차례대로 만들어준다. 속성 단위로 데이터를 종합하고 집계해서 대시보드를 작성한다고 보면 된다. 속성을 만들 때 시간대는 모두 대한민국으로 맞춰주면 된다. 그 후 데이터스트림을 만들어준다. 스트림 이름은 적당히 알아볼 수 있게 하고, 중요한 것은 “측정 ID” 이다. 이것이 데이터를 전송하는 데 사용하는 키가 된다.",{"id":104108,"title":14424,"titles":104109,"content":104110,"level":134},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#로컬-테스트용-데이터스트림-만들기",[10845,14390,14397],"스트림 URL 에는 localhost 혹은 127.0.0.1 같은 루프백 주소는 입력할 수 없다. 그렇다고 테스트할 때마다 매번 Github에 배포하는 것도 번거로운 일이다. 적어도 1분에서 3분정도 걸리는데 그 시간이 누적되면 손해가 이만저만이 아니다. ##\n## Host Database\n#\n## localhost is used to configure the loopback interface\n## when the system is booting.  Do not change this entry.\n##\n127.0.0.1   localhost\n255.255.255.255 broadcasthost\n::1             localhost\n## Added by Docker Desktop\n## To allow the same kube context to work on the host and the container:\n127.0.0.1 kubernetes.docker.internal\n**127.0.0.1 blog.local**\n## End of section hosts 파일에 DNS 정보를 넣어서 가상의 URL을 만들어준 후에, 이 URL로 로컬 테스트를 진행하면 된다. 나는 단순하게 blog.local 이라고 정했다. 나의 경우 실제 오픈한 블로그와 로컬 테스트 블로그 각각에서 잡히는 데이터를 분리하고 싶었다. 그래서 아예 속성 자체를 분리했다. 그래야 섞이지 않고 올바르게 데이터를 쌓을 수 있다. \u002F\u002F vue.config.js\nmodule.exports = {\n    devServer: {\n        \u002F\u002F webpack4\n        disableHostCheck: true,\n        \u002F\u002F webpack5\n    \u002F\u002F allowedHosts: ['.host.com', 'host2.com'],\n    allowedHosts: 'all',\n  }\n} vue.config.js 에다가 추가로 설정이 필요하다. Webpack4 를 사용 중이라면 disableHostCheck 속성을, Webpack5 사용 중이라면 allowedHosts 를 사용한다.",{"id":104112,"title":14736,"titles":104113,"content":104114,"level":121},"\u002Fblog\u002Fmaking-blog-githubio-vue3-1#vue에서-ga4로-데이터-전송하기",[10845,14390],"npm install vue-gtag-next Vue에서는 vue-gtag라는 라이브러리를 사용해서 간단하게 GA 태그를 심을 수 있다. 하지만 vue-gtag 는 Vue2 까지 지원하며, Vue3 에서는 vue-gtag-next 를 사용해야한다. 사용법도 조금은 다르다. \u002F\u002F main.ts\nimport VueGTag from \"vue-gtag-next\";\n\nlet GAID = \"G-XXYYZZXXTT\";  \u002F\u002F dev\nif(process.env.NODE_ENV === \"production\") {\n    GAID = \"G-XXYYZZXXEE\";  \u002F\u002F prod\n}\n\nconst app = createApp(App)\n.use(store)\n.use(router)\n**.use(VueGTag, {\n    property: {\n        id: GAID, \u002F\u002F prod\n    }\n})**\n.mount('#app') 우선 main.ts 에서 “측정 ID” 를 가지고 GA 초기화를 해야한다. 실서버와 로컬 환경의 키를 분리해서 할당하고는, Vue app의 use 로 등록해주자. \u002F\u002F router\u002Findex.ts\nimport { trackRouter } from 'vue-gtag-next'\nconst router = createRouter({\n    ...\n})\n\ntrackRouter(router); trackRouter 로 간단하게 Vue-Router 와 연동하여 라우팅 페이지 뷰를 자동으로 인식하고 데이터를 전송할 수 있다. 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);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"id":15278,"title":15053,"titles":104116,"content":104117,"level":94},[],"빌드 후 package.json 의 버전이 자기 멋대로 변경이 됐다. yarn 1.22 버전에서 sementic version 규칙을 따르면서 버전을 자체적으로 변경한 것. yarn 과 npm 의 버전을 다루는 형태에 차이가 있었다. Updated package.json version from 2.13.10.0 to: 2.13.10.0.08191009\nnpm_package_version 2.13.1-0.0.8191009 이상하게 하이픈이 들어가는 문제가 있었다. 처음에는 뒤에 날짜 정보를 붙이면서 버그가 발생한 줄 알았다. 하지만 yarn 의 버전 체계가 npm 과 달라서 생긴 문제라고 클로드는 설명했다.",{"id":104119,"title":15070,"titles":104120,"content":104121,"level":105},"\u002Fblog\u002Fnode-patch-version-yarn-semver#yarn-의-주소체계",[15053],"2.13.10.0+08191030\n2.13.10.0.08191030\n2.13.10.008191030\n이 형태들 모두 3번째 버전에 하이픈이 들어간 버전( 2.13.1-0.12345 )으로 바뀌어버린다. 심지어 4번째 버전의 0은 패딩됨. npm: 2.13.10.008191030  (그대로 유지)yarn: 2.13.1-0.8191030 (하이픈으로 변환) 2.13.10.0-dev.08191030 -> 2.13.1-0.0-dev.8191030\n2.13.10-dev.08191030 -> 2.13.10-dev.08191030 (동일)",{"id":104123,"title":15092,"titles":104124,"content":15101,"level":121},"\u002Fblog\u002Fnode-patch-version-yarn-semver#semantic-versioning-200",[15053,15070],{"id":104126,"title":15105,"titles":104127,"content":104128,"level":121},"\u002Fblog\u002Fnode-patch-version-yarn-semver#yarn-의-patch-버전-처리-버그-yarn-12222",[15053,15070],"입력 버전예상 결과실제 결과문제2.13.10.0.81910302.13.10-0.81910302.13.1-0.0.8191030❌ patch가 10→1로 변경2.13.10.81910302.13.10-81910302.13.1-0.8191030❌ patch가 10→1로 변경2.13.11.0.81910302.13.11-0.81910302.13.1-1.0.8191030❌ patch가 11→1로 변경Patch가 잘못됨: 10 → 1, 11 → 1 yarn set version stable yarn 을 업데이트하는 방법도 있다. Yarn 버전입력 버전결과상태1.22.222.13.10.0.81910302.13.1-0.0.8191030❌ 버그1.22.222.13.11.0.81910302.13.1-1.0.8191030❌ 버그4.9.22.13.10.0.81910302.13.10.0.8191030✅ 정상4.9.22.13.11.0.81910302.13.11.0.8191030✅ 정상4.9.2 에서는 아예 하이픈을 넣지도 않고 있다. !error Yarn 4.9.2 버전 사용하는 순간 에러가 해결되지 않음\nInternal Error: project@workspace:.: This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile\n아무리 해결을 하려고 해도 yarn 4.9.2 버전을 사용할 때 문제가 발생한다.",{"id":15410,"title":15287,"titles":104130,"content":104131,"level":94},[],"npm의 의존성 설치 실패 문제. @rollup\u002Frollup-darwin-arm64 패키지가 애플 실리콘에서만 설치 가능하다. Windows 및 Linux 환경에서의 설치 불가 원인. optionalDependencies의 사용 방법. npm ERR! code EBADPLATFORMnpm ERR! notsup Unsupported platform for @rollup\u002Frollup-darwin-arm64@4.30.1: wanted {\"os\":\"darwin\",\"cpu\":\"arm64\"} (current: {\"os\":\"win32\",\"cpu\":\"x64\"})npm ERR! notsup Valid os:   darwinnpm ERR! notsup Actual os:  win32npm ERR! notsup Valid cpu:  arm64npm ERR! notsup Actual cpu: x64 \"dependencies\": {\n    \"@rollup\u002Frollup-darwin-arm64\": \"^4.30.1\",\n} package.json 파일에서 dependencies 에 @rollup\u002Frollup-darwin-arm64 를 종속성으로 등록해두었지만, 실행하는 환경이 Windows 혹은 Linux 등 애플실레콘이 아닐 때 일 때 설치할 수 없기 때문에 발생한다. dependencies 나 devDependencies 의 경우 설치에 실패하면 무조건 중단되며 실패로 끝난다. \"optionalDependencies\": {\n    \"@rollup\u002Frollup-darwin-arm64\": \"^4.30.1\"\n}, optionalDependencies에 등록한 의존성은 설치 실패해도 전체 설치 과정에 영향을 주지 않는 의존성이다. 즉, 설치 가능하면 설치하고, 불가능하면 무시한다. 플랫폼 환경에 따라서 설치해야하는 의존성이 있는 경우, 특히 이 파트를 사용한다. @rollup\u002Frollup-darwin-arm64는 애플실리콘에서만 설치되는 패키지이다. html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"id":16317,"title":15421,"titles":104133,"content":104134,"level":94},[],"Nuxt Content v2의 Markdown AST에 CardLink 같은 Vue 컴포넌트를 매핑하고, MDC의 슬롯·인라인 props·YAML props 중 유지보수하기 좋은 작성 방식을 정리한다. Obsidian에서 작성한 기술 문서를 Nuxt Content v2 블로그로 옮기면서 단순 Markdown만으로 표현하기 어려운 요소가 생겼다. 링크의 제목, 설명, 파비콘과 대표 이미지를 한 묶음으로 보여 주는 CardLink가 대표적이었다. 처음에는 fenced code block 안의 텍스트를 직접 읽어 카드로 바꾸려고 했다. 하지만 Markdown 파서가 일반 문자열과 링크를 서로 다른 VNode로 나누기 때문에 슬롯의 자식 구조를 평탄화하는 코드가 복잡해졌다. Nuxt Content가 제공하는 MDC(Markdown Components) 구문으로 컴포넌트와 데이터를 명시하는 편이 구조가 단순했다.",{"id":104136,"title":15433,"titles":104137,"content":104138,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#markdown이-ast의-컴포넌트-노드로-바뀌는-과정",[15421],"Nuxt Content v2의 queryContent()는 Markdown을 그대로 반환하지 않고 렌더링 가능한 AST로 변환한다. MDC 블록의 이름은 AST 노드의 tag가 된다. ::cardlink\nCardLink 내부에 전달할 내용\n:: 아래 화면에서는 ::cardlink 블록이 tag: \"cardlink\"인 element로 파싱된 것을 확인할 수 있다. 같은 문서 안의 pre, p, ol 같은 Markdown 요소와 동일한 children 배열에 들어간다. 이 단계에서는 cardlink라는 이름만 AST에 존재한다. 실제 Vue 컴포넌트로 렌더링하려면 ContentRendererMarkdown에 이름과 컴포넌트의 매핑을 전달해야 한다.",{"id":104140,"title":15503,"titles":104141,"content":104142,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#contentrenderermarkdown에-컴포넌트-매핑하기",[15421],"Nuxt Content v2에서 기본 슬롯을 직접 구성하고 ContentRendererMarkdown을 사용한다면 components prop을 함께 넘긴다. \u003Cscript setup lang=\"ts\">\nimport CardLink from '~\u002Fcomponents\u002Fcontent\u002FCardLink.vue'\n\nconst route = useRoute()\nconst { data: article } = await useAsyncData(\n  `article:${route.path}`,\n  () => queryContent(route.path).findOne(),\n)\n\nconst contentComponents = {\n  cardlink: CardLink,\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CContentRenderer v-if=\"article\" :value=\"article\">\n    \u003CContentRendererMarkdown\n      :value=\"article\"\n      :components=\"contentComponents\"\n    \u002F>\n  \u003C\u002FContentRenderer>\n\u003C\u002Ftemplate> contentComponents의 cardlink 키가 앞에서 확인한 AST의 tag와 일치해야 한다. 매핑이 빠지면 Markdown에는 노드가 있어도 기대한 CardLink UI로 렌더링되지 않는다.",{"id":104144,"title":15754,"titles":104145,"content":104146,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#본문은-slot으로-전달하기",[15421],"MDC 블록의 시작과 끝 사이에 작성한 Markdown은 기본 슬롯으로 전달된다. 단순한 안내 상자처럼 내부의 서식을 그대로 보여 주려면 컴포넌트에서 슬롯을 렌더링하면 된다. ::notice-card\n이 안에서는 **굵은 글씨**와 [링크](https:\u002F\u002Fexample.com)를 사용할 수 있다.\n:: \u003C!-- components\u002Fcontent\u002FNoticeCard.vue -->\n\u003Ctemplate>\n  \u003Caside class=\"notice-card\">\n    \u003CContentSlot :use=\"$slots.default\" unwrap=\"p\" \u002F>\n  \u003C\u002Faside>\n\u003C\u002Ftemplate> Nuxt Content v2에서는 ContentSlot으로 Markdown 슬롯을 렌더링하고 unwrap=\"p\"로 불필요한 바깥 문단을 제거할 수 있다. 슬롯은 설명문처럼 구조를 유지해야 하는 콘텐츠에 적합하다.",{"id":104148,"title":15886,"titles":104149,"content":104150,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#구조화된-값은-yaml-props로-전달하기",[15421],"CardLink는 본문보다 url, title, description, host, favicon, image처럼 이름이 정해진 값이 중요하다. 이 데이터를 슬롯의 VNode에서 다시 문자열로 조립하면 링크가 \u003Ca> 노드로 분리되는 경우까지 처리해야 한다. MDC는 중괄호를 사용하는 인라인 props를 지원한다. ::cardlink{url=\"https:\u002F\u002Fexample.com\" title=\"Example\" host=\"example.com\"}\n:: 값이 많아지면 한 줄이 길어지므로 YAML props 방식이 읽고 수정하기 쉽다. ::cardlink\n---\nurl: https:\u002F\u002Fexample.com\u002F\ntitle: \"Example\"\ndescription: \"CardLink 컴포넌트에 전달할 설명\"\nhost: example.com\nfavicon: https:\u002F\u002Fexample.com\u002Ffavicon.ico\nimage: https:\u002F\u002Fexample.com\u002Fog.png\n---\n:: 컴포넌트에서는 일반 Vue props로 받는다. \u003Cscript setup lang=\"ts\">\ndefineProps\u003C{\n  url: string\n  title: string\n  description?: string\n  host?: string\n  favicon?: string\n  image?: string\n}>()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Ca :href=\"url\" class=\"card-link\" target=\"_blank\" rel=\"noreferrer\">\n    \u003Cimg v-if=\"image\" :src=\"image\" alt=\"\" class=\"card-link__image\" \u002F>\n    \u003Cspan class=\"card-link__body\">\n      \u003Cstrong>{{ title }}\u003C\u002Fstrong>\n      \u003Cspan v-if=\"description\">{{ description }}\u003C\u002Fspan>\n      \u003Csmall v-if=\"host\">{{ host }}\u003C\u002Fsmall>\n    \u003C\u002Fspan>\n  \u003C\u002Fa>\n\u003C\u002Ftemplate> 이 방식에서는 파서가 props를 구성하므로 컴포넌트가 슬롯의 내부 VNode 형태에 의존하지 않는다. URL 안의 :나 제목의 특수 문자가 YAML 해석을 방해할 수 있으므로 값이 복잡하면 따옴표로 감싸는 편이 안전하다.",{"id":104152,"title":16270,"titles":104153,"content":104154,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#기존-markdown-표현을-바꿀지-결정하기",[15421],"Obsidian 플러그인이 생성한 fenced cardlink 블록이나 callout은 MDC와 문법이 다르다. 선택지는 두 가지다. 원고를 발행할 때 fenced block을 MDC로 변환한다.Markdown의 기본 태그를 유지해야 한다면 Prose 컴포넌트나 Content transformer에서 변환한다. CardLink처럼 독립된 블록은 발행 단계에서 MDC로 변환하는 방법이 단순하다. 반면 모든 링크나 문단의 표현을 바꾸려면 해당 HTML 태그를 담당하는 Prose 컴포넌트를 재정의하는 편이 낫다. 문서 전체의 파싱 결과를 컴포넌트 안에서 다시 해석하는 방식은 AST 구조가 바뀔 때 깨지기 쉬우므로 마지막 수단으로 남긴다.",{"id":104156,"title":6005,"titles":104157,"content":16304,"level":105},"\u002Fblog\u002Fnuxt-content-v2-custom-components#참고한-페이지",[15421],{"id":17127,"title":16330,"titles":104159,"content":104160,"level":94},[],"Nuxt 프로젝트에서 Pinia를 설정하고 사용하는 방법을 안내. Pinia 설치, Nuxt 설정 파일에 추가하는 방법, 스토어 생성을 포함하여 컴포넌트에서의 사용 예시. 서버 사이드 렌더링(SSR) 설정 및 일반적인 오류 해결 방법. Nuxt 프로젝트에서 Pinia를 사용하는 방법은 Vue3와 다르다.",{"id":104162,"title":16339,"titles":104163,"content":104164,"level":105},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#pinia-설치",[16330],"npm install @pinia\u002Fnuxt\nyarn add @pinia\u002Fnuxt",{"id":104166,"title":16367,"titles":104167,"content":104168,"level":105},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#nuxt-설정-파일에-pinia-추가",[16330],"export default defineNuxtConfig({\n  modules: ['@pinia\u002Fnuxt'],\n}) nuxt.config.ts 파일에 모듈을 추가해야 한다.",{"id":104170,"title":16408,"titles":104171,"content":104172,"level":105},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#스토어-생성",[16330],"stores 폴더를 만들고 그 안에 스토어 파일을 작성한다. Nuxt에서 stores 폴더를 자동으로 인식해서 따로 import할 필요 없다. 예시: stores\u002Fcounter.ts import { defineStore } from 'pinia'\nimport { ref } from 'vue'\n\nexport const useCounterStore = defineStore('counter', () => {\n  const count = ref(0)\n  const doubleCount = computed(() => count.value * 2)\n\n  function increment() {\n    count.value++\n  }\n\n  return { count, doubleCount, increment }\n})",{"id":104174,"title":16570,"titles":104175,"content":104176,"level":105},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#컴포넌트에서-사용하기",[16330],"컴포넌트에서 useCounterStore를 불러와서 사용하면 된다. \u003Ctemplate>\n  \u003Cdiv>\n    \u003Cp>Count: {{ counter.count }}\u003C\u002Fp>\n    \u003Cbutton @click=\"counter.increment\">증가\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst counter = useCounterStore()\n\u003C\u002Fscript>",{"id":104178,"title":16694,"titles":104179,"content":104180,"level":105},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#선택-서버-사이드-렌더링ssr-설정",[16330],"Pinia는 SSR도 지원한다. 특별한 설정 없이도 기본적으로 SSR에서 잘 작동하지만, 커스텀이 필요하면 nuxt.config.ts에 아래와 같이 옵션을 추가할 수 있다. export default defineNuxtConfig({\n  modules: ['@pinia\u002Fnuxt'],\n  pinia: {\n    autoImports: ['defineStore', 'acceptHMRUpdate'],\n  },\n}) 이렇게 하면 Pinia를 Nuxt 프로젝트에서 손쉽게 사용할 수 있다.",{"id":104182,"title":16758,"titles":104183,"content":104184,"level":94},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#getactivepinia-was-called-but-there-was-no-active-pinia-are-you-trying-to-use-a-store-before-calling-appusepinia",[],"[nuxt] error caught during app initialization Error: 🍍: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?See https:\u002F\u002Fpinia.vuejs.org\u002Fcore-concepts\u002Foutside-component-usage.html for help.This will fail in production.\nat useStore (pinia.js?v=859d6957:1322:13) 다 설정하고 보니 위 에러가 발생했다. 모듈 누락 확인@pinia\u002Fnuxt 추가했는지 확인비동기 로직 이후 스토어 접근 ㄴㄴ",{"id":104186,"title":16799,"titles":104187,"content":104188,"level":121},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#캐시-및-라이브러리-다시-설치",[16758],"rm -rf node_modules\u002F.cache\nrm -rf .nuxt\nrm -rf node_modules\nnpm install  # 또는 yarn install\nnpm run dev 잔류 캐시나 이전버전 라이브러리 등의 충돌이 있을 수 있으니! !hint\nWARN  Module pinia is disabled due to incompatibility issues:                      오후 9:18:14nuxt Nuxt version ^2.0.0 || >=3.13.0 is required but currently using 3.12.1 버전도 확인해보자. 호환이 안되는 라이브러리일 수 있다. 나의 경우 nuxt 는 3.12.1 버전인데, pinia 2.3.x 버전을 사용하려면 3.13.0 이상의 버전을 요한다고 경고한다. 라이브러리현재 버전권장 버전Nuxt3.12.13.13.0 이상Pinia^2.3.02.3.x (OK)@pinia\u002Fnuxt^0.9.00.9.x (OK) npm install nuxt@latest nuxt 버전을 최신버전으로 업데이트 한다. 그럼 아래 pinia 를 수동등록하지 않아도 위 방법대로 잘 동작한다.",{"id":104190,"title":16968,"titles":104191,"content":104192,"level":121},"\u002Fblog\u002Fnuxt-pinia-get-active-pinia#pinia-사용을-수동으로-등록",[16758],"\u002F\u002F plugins\u002Fpinia.ts\nimport { defineNuxtPlugin } from '#app'\nimport { createPinia } from 'pinia'\n\nexport default defineNuxtPlugin((nuxtApp) => {\n  const pinia = createPinia()\n  nuxtApp.vueApp.use(pinia)\n}) 결국 이 방법으로 해결했다. nuxt 를 \"dependencies\": {\n    \"@pinia\u002Fnuxt\": \"^0.9.0\",\n    \"nuxt\": \"^3.12.1\",\n    \"pinia\": \"^2.3.0\",\n}, 이 버전들의 조합으로는 수동으로 등록하는 것이 답이었다 html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":17545,"title":17136,"titles":104194,"content":104195,"level":94},[],"구형 스마트 TV 브라우저에서 특정 화면의 렌더링이 중단되는 샘플 에러를 바탕으로 ES2022의 Object.hasOwn 하위 호환성 문제와 유틸리티 라이브러리(es-toolkit vs lodash) 선택 시 고려사항을 정리한다. 최근 오프라인 박람회 부스에 배치한 스마트 디스플레이 기기(LG 스탠바이미 등)에서 페이지를 띄웠을 때 특정 통계 그래프가 화면에 전혀 출력되지 않는 장애가 보고되었다. 보통의 크롬 브라우저 환경에서는 정상동작하던 통계 화면이 임베디드 기기에서만 오동작하는 원인을 파악해 보니 최신 자바스크립트 표준 API의 하위 호환성 문제였다.",{"id":104197,"title":17148,"titles":104198,"content":104199,"level":105},"\u002Fblog\u002Fobject-hasown-estoolkit-crash#장애-원인-분석",[17136],"디버깅 콘솔을 통해 확인한 에러 메시지는 다음과 같았다. TypeError: Object.hasOwn is not a function\nat assets\u002FWasteStatisticsView-CdzOCbpi.js 해당 통계 뷰 컴포넌트 내에서 데이터를 그룹화하기 위해 es-toolkit의 groupBy 함수를 도입하여 활용하고 있었는데, 이것이 화근이었다. 원래는 lodash 를 사용하고 있었음 es-toolkit의 내부 groupBy 구현 코드는 다음과 같다. function groupBy(arr, getKeyFromItem) {\n  const result = {};\n  for (let i = 0; i \u003C arr.length; i++) {\n    const item = arr[i];\n    const key = getKeyFromItem(item, i, arr);\n    if (!Object.hasOwn(result, key)) { \u002F\u002F 이 부분에서 크래시 발생\n      result[key] = [];\n    }\n    result[key].push(item);\n  }\n  return result;\n} Object.hasOwn은 ES2022 표준에 포함된 비교적 최신 문법이다. 기존의 Object.prototype.hasOwnProperty를 간결하게 쓸 수 있도록 도입되었다. 데스크톱 크롬 93+(2021년 출시) 이상에서는 문제없이 동작하지만, 스탠바이미의 웹 브라우저 엔진은 이에 해당하는 함수가 없어서 런타임 에러가 발생한 것이다.",{"id":104201,"title":17344,"titles":104202,"content":104203,"level":105},"\u002Fblog\u002Fobject-hasown-estoolkit-crash#라이브러리별-호환성-비교-es-toolkit-vs-lodash",[17136],"전통적으로 많이 쓰이는 lodash의 groupBy 함수 구현부를 확인하면 다음과 같이 범용적인 호환성을 확보하고 있다. var groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) { \u002F\u002F 안전한 예전 문법 사용\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n}); lodash는 모든 자바스크립트 환경에서 동작하는 Object.prototype.hasOwnProperty.call() 방식을 사용하기 때문에, 저사양 임베디드 브라우저에서도 정상적으로 동작한다. 최근 자바스크립트 번들 크기를 줄이고 최신 브라우저 성능을 100% 활용하기 위해 es-toolkit과 같은 Modern 라이브러리를 많이 차용하지만, 구형 스마트 TV, 무인 키오스크, 혹은 오래된 하이브리드 태블릿 디바이스를 지원해야 하는 프로젝트에서는 치명적인 런타임 오류의 원인이 될 수 있다.",{"id":104205,"title":17456,"titles":104206,"content":104207,"level":105},"\u002Fblog\u002Fobject-hasown-estoolkit-crash#해결-방안",[17136],"이 문제를 극복하기 위한 방법은 간단히 요약할 수 있다. lodash 등 이전 문법 사용폴리필 설정프로젝트 전역 Entry 지점에 Object.hasOwn 관련 폴리필을 수동으로 주입하여 브라우저의 빌트인 API가 없는 경우 스스로 정의하게 한다.const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);\nTranspile 대상 브라우저 정의빌드 도구 설정에서 브라우저 지원 범위를 스마트 TV 등 구형 기기를 포함하도록 낮춰 선언하고 폴리필 주입 옵션을 활성화한다. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"id":17680,"title":17557,"titles":104209,"content":104210,"level":94},[],"FCM 알림을 테스트하는 간단한 방법. Postman 을 비롯한 curl 기반 HTTP 요청 프로그램으로 테스트하기. POST https:\u002F\u002Ffcm.googleapis.com\u002Ffcm\u002Fsend 위 경로로 메세지를 보낸다. 헤더 데이터 Authorization : key=AAAXXXXXXContent-Type : application\u002Fjson Authorization 은 key=서버키 형태로 넣는다. {\n    \"to\":\"FCMToken\",\n    \"data\" : {\n      \"title\":\"제목\",\n      \"body\":\"내용\",\n      \"otherKey\":\"asdf\",\n    }\n} body 는 정해진 데이터대로 넣는다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"id":18080,"title":17690,"titles":104212,"content":104213,"level":94},[],"S3와 CloudFront로 SPA를 배포할 때 index.html·버전 파일·해시 에셋의 캐시 규칙을 분리해 구버전 번들 404와 업데이트 루프를 막는 방법을 정리한다. S3를 오리진으로 두고 CloudFront로 SPA를 배포하면, 파일을 새로 올렸는데도 일부 사용자가 이전 화면을 보거나 앱이 시작하지 않는 일이 생길 수 있다. 이전 index.html은 예전 해시의 JavaScript 파일을 가리키는데 새 오리진에는 그 파일이 없으면, 앱은 시작 단계에서 404를 받고 멈춘다. 웹뷰처럼 앱 데이터를 오래 보존하는 환경에서는 재설치나 데이터 삭제 후에만 정상으로 보일 수도 있다. 사용자의 WebView가 이전 index.html을 로컬 캐시에서 읽는다.HTML은 이미 삭제됐거나 다른 경로로 이동한 이전 해시 에셋을 요청한다.에셋 요청이 404가 되면 SPA가 초기화되지 못한다.네이티브 앱이 웹 페이지의 초기화 신호를 기다리는 구조라면 로딩 화면이 끝나지 않을 수 있다. S3 + CloudFront 에서 캐시를 사용하는 곳: 브라우저(WebView)CloudFront 캐시S3 오리진 객체와 메타데이터 S3 객체의 Cache-Control 메타데이터가 응답 헤더에 담긴다.\nCloudFront는 캐시 정책의 TTL과 오리진 응답 헤더를 함께 사용해 엣지 캐시의 유효 기간을 결정하고, 브라우저도 같은 응답 헤더를 보고 로컬 캐시를 판단한다. 따라서 CloudFront 무효화를 했으니 최신 파일을 받는다고 생각하면 안된다. 브라우저가 아직 유효하다고 판단한 index.html을 그대로 쓸 수 있다.",{"id":104215,"title":17759,"titles":104216,"content":104217,"level":105},"\u002Fblog\u002Fs3-cloudfront-cache-control#spa에서-캐시-규칙",[17690],"Vite 같은 번들러가 만드는 SPA 결과물은 크게 세 종류로 나눌 수 있다. 파일역할권장 캐시assets\u002Fapp-\u003Chash>.js, assets\u002Fapp-\u003Chash>.css내용이 바뀌면 파일명도 바뀌는 해시 에셋public, max-age=31536000, immutableindex.html현재 배포의 해시 에셋 목록을 가리키는 진입점no-cacheversion.json 같은 버전 확인 파일현재 버전을 판단하는 작은 메타 파일no-cache 해시가 붙은 에셋은 동일한 URL에서 내용이 바뀌지 않는다. 캐시를 길게 적용해도 새로 배포하면 바뀐 URL을 참조하므로 안전하다. 반대로 index.html은 URL이 고정되어 있고 매 배포마다 내용이 달라진다. 캐싱을 해버리면 이전 번들을 가리키는 HTML이 남는다. no-cache는 파일을 저장하지 말라는 뜻은 아니다. 캐시된 응답을 사용하기 전에 서버에 재검증하라는 뜻이다. 변경되지 않았다면 304 응답으로 본문 전송을 줄이고, 변경됐다면 새 파일을 받아온다. 다만 CloudFront의 캐시 정책에서 Minimum TTL이 0보다 크면 오리진의 no-cache나 no-store보다 최소 TTL이 우선한다. 진입점 파일을 항상 재검증하려면 해당 캐시 동작의 Minimum TTL도 함께 확인해야 한다. 위 링크에서 우선순위를 명시하고 있음.",{"id":104219,"title":17855,"titles":104220,"content":104221,"level":105},"\u002Fblog\u002Fs3-cloudfront-cache-control#구버전-html과-새-버전-정보가-충돌",[17690],"버전 확인 파일을 별도로 두고 있는데, 캐시된 index.html은 이전 버전 코드를 실행하지만, version.json은 새 버전을 응답하면 앱은 계속 업데이트가 필요하다고 판단한다. 새로고침 URL에 타임스탬프 쿼리를 붙이면 일시적으로 해결된 것처럼 보일 수 있다. 하지만 \u002F와 \u002F?t=...는 캐시 키가 다를 수 있으므로, 다음에 다시 \u002F로 접근하면 기존 HTML 캐시를 또 사용할 수 있다. 임시 쿼리 문자열보다 진입점 자체의 캐시 규칙을 바로잡는 편이 낫다.",{"id":104223,"title":17883,"titles":104224,"content":104225,"level":105},"\u002Fblog\u002Fs3-cloudfront-cache-control#s3-업로드-시-cache-control-분리",[17690],"CI\u002FCD 구성 시 해시 에셋과 고정 이름 파일을 한 번에 동기화하지 않고, 서로 다른 명령으로 올렸다. # 해시 에셋: index.html과 버전 파일은 제외한다.\naws s3 sync .\u002Fdist \"s3:\u002F\u002F$BUCKET\" \\\n  --exclude \"*.map\" \\\n  --exclude \"index.html\" \\\n  --exclude \"version.json\" \\\n  --cache-control \"public,max-age=31536000,immutable\"\n\n# 진입점과 버전 파일: 사용할 때마다 재검증하게 한다.\naws s3 cp .\u002Fdist\u002Findex.html \"s3:\u002F\u002F$BUCKET\u002Findex.html\" \\\n  --cache-control \"no-cache\"\n\naws s3 cp .\u002Fdist\u002Fversion.json \"s3:\u002F\u002F$BUCKET\u002Fversion.json\" \\\n  --cache-control \"no-cache\" 첫 번째 명령은 파일명 자체가 배포 버전인 에셋에 장기 캐시를 설정한다. 나머지 두 명령은 고정 URL 파일을 별도로 업로드해 S3 객체 메타데이터에 다른 Cache-Control 값을 지정한다. 이미 배포된 객체의 캐시 메타데이터를 바꿔야 한다면 실제로 메타데이터가 교체되는지 확인해야 한다. 같은 파일을 다시 동기화했을 때 전송이 생략될 수 있으므로, 배포 후 S3 객체의 메타데이터와 CloudFront를 거친 최종 응답 헤더를 함께 확인하는 것이 안전하다.",{"id":104227,"title":18036,"titles":104228,"content":104229,"level":105},"\u002Fblog\u002Fs3-cloudfront-cache-control#cloudfront에서는-캐시-정책도-같은-방향이어야-한다",[17690],"S3에서 no-cache 여도 CloudFront 캐시 정책에 따라서 기대한 대로 동작하지 않을 수 있다. 캐시를 최대한 사용하지 않으려면 behavior의 Minimum TTL을 0 으로 하기그 외 일반적으로 캐시를 사용할 경우 behavior는 TTL 적절한 범위인지 확인query string, 쿠키, 헤더를 캐시 키에 포함할 필요가 있는지 별도로 판단한다. 불필요한 값을 넣으면 같은 파일의 캐시가 지나치게 쪼개진다. 캐시 키 정책 문서를 확인하고 진행.Response headers policy로 Cache-Control을 추가했다면, 이것은 브라우저에 보내는 응답 헤더를 바꾸는 설정이며 CloudFront 엣지 캐시 TTL 자체를 바꾸는 것은 아니다. 응답 헤더 추가 삭제 정책 확인. html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"id":18466,"title":18092,"titles":104231,"content":104232,"level":94},[],"안드로이드 웹뷰에서 파일 선택 시 삼성 갤러리의 다중 선택(Multiple Selection)이 동작하지 않는 원인을 파악하고, ACTION_GET_CONTENT와 삼성 비공식 옵션으로 해결하는 방법을 정리한다. 웹뷰 기반 안드로이드 앱에서 사용자가 사진을 여러 장 선택해 업로드할 수 있도록 기능을 제공했다. 그런데 갤럭시 S21, 안드로이드 15에서 기본 갤러리 앱을 사용할 때, 여러 장 선택이 불가능하고 1장만 선택되는 문제가 있었다. 다른 사진 앨범 앱에서는 다중 선택이 됐다. 코드 레벨이나 기기 문제라기보다 삼성 기본 갤러리 앱 자체의 동작 방식 차이 로 추정했다.",{"id":104234,"title":18101,"titles":104235,"content":104236,"level":105},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue#문제-상황",[18092],"안드로이드의 웹뷰에서 WebChromeClient의 onShowFileChooser 콜백을 구현해 파일 선택 인텐트를 실행한다. 보통 갤러리 사진을 선택하게 유도할 때 아래와 같이 Intent.ACTION_PICK을 많이 사용한다. \u002F\u002F 갤러리 인텐트 설정\nval contentSelectionIntent = Intent(\n    Intent.ACTION_PICK,\n    MediaStore.Images.Media.EXTERNAL_CONTENT_URI\n)\ncontentSelectionIntent.type = MediaStore.Images.Media.CONTENT_TYPE\n\nif (isMultiple) {\n    contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)\n} 하지만 삼성 갤러리 앱은 ACTION_PICK 인텐트를 처리할 때 Intent.EXTRA_ALLOW_MULTIPLE 옵션을 무시하는 경우가 많다. 이로 인해 사용자는 여러 장을 드래그하거나 선택할 수 없고 단일 이미지만 선택할 수밖에 없게 된다. 앱의 사진 선택 버튼에서 기본 갤러리로 이동할 수는 있었지만, 갤러리 화면에는 여러 항목을 고르는 상태가 나타나지 않았다. 실제 제품 화면과 사진은 제외하고 앱 선택 단계와 단일 선택 상태만 남겼다.",{"id":104238,"title":18190,"titles":104239,"content":87,"level":105},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue#해결-과정",[18092],{"id":104241,"title":18194,"titles":104242,"content":104243,"level":121},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue#_1-action_get_content-사용-권장",[18092,18190],"안드로이드 공식 문서와 커뮤니티에서는 파일 다중 선택을 위해 ACTION_PICK보다는 Intent.ACTION_GET_CONTENT를 사용할 것을 권장한다. 파일 종류나 개수에 상관없이 콘텐츠를 가져오는 안드로이드 표준 방식이기 때문에 호환성이 더 높다. ACTION_GET_CONTENT에서는 시스템 콘텐츠 선택기를 거쳐 사진 앱이나 파일 앱을 선택할 수 있고, 선택기에서 여러 항목을 고를 수 있다. 하지만 곧바로 갤러리가 열리기보다 '파일' 앱들이 먼저 뜨는 경우가 많아 UX 측면에서 불편할 수는 있다.",{"id":104245,"title":18232,"titles":104246,"content":104247,"level":121},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue#_2-삼성-갤러리-비공식-옵션-적용",[18092,18190],"삼성 갤러리에서 다중 선택을 강제하기 위한 비공식 파라미터를 추가할 수 있다. if (isMultiple) {\n    contentSelectionIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)\n    \n    \u002F\u002F 삼성 디바이스 호환성을 위한 추가 설정\n    contentSelectionIntent.putExtra(\"multi-pick\", true)\n    contentSelectionIntent.putExtra(\"return-data\", false)\n} 이렇게 multi-pick 파라미터를 명시하니까 다중 선택이 가능했었다.",{"id":104249,"title":18284,"titles":104250,"content":104251,"level":134},"\u002Fblog\u002Fsamsung-gallery-webview-multiple-selection-issue#응답result-파싱-규격-대응",[18092,18190,18232],"여기서 주의할 점이 있다. multi-pick 옵션으로 응답을 받으면 안드로이드 표준 규격인 ClipData가 아니라, 마치 파일을 공유하는 것처럼 ACTION_SEND_MULTIPLE 형태의 독자적인 규격으로 데이터가 넘어온다. \u002F\u002F standard\n😀 registerForActivityResult 콜백 ActivityResult{resultCode=RESULT_OK, data=Intent { dat=content:\u002F\u002Fcom.google.android.apps.photos.contentprovider\u002F-1\u002F1\u002Fcontent:\u002F\u002Fmedia\u002Fexternal\u002Fimages\u002Fmedia\u002F63\u002FORIGINAL\u002FNONE\u002Fimage\u002Fjpeg\u002F89489492 flg=0x1 clip={text\u002Furi-list U:content:\u002F\u002Fcom.google.android.apps.photos.contentprovider\u002F-1\u002F1\u002Fcontent%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63\u002FORIGINAL\u002FNONE\u002Fimage%2Fjpeg\u002F89489492} }}\n\n\u002F\u002F samsung multi pic\n😀 registerForActivityResult 콜백 ActivityResult{resultCode=RESULT_OK, data=Intent { act=android.intent.action.SEND_MULTIPLE flg=0x1 (has extras) }}\n\n10:21:06.813  D  ----------------- Extras Dump -----------------\n10:21:06.814  D  Key: selectedCount, Value: 4, Value Type: java.lang.Integer\n10:21:06.815  D  Key: selectedItems, Value: [content:\u002F\u002Fmedia\u002Fexternal\u002Fimages\u002Fmedia\u002F62, ...], Value Type: java.util.ArrayList\n10:21:06.815  D  --------------------------------------------- 디버깅을 위해 응답 인텐트의 extras를 덤프떠서 확인해봤다. selectedItems라는 키에 Uri 목록이 담겨서 반환되므로, onActivityResult나 registerForActivityResult 콜백에서 이 분기를 별도로 처리해야 한다. val SAMSUNG_MULTI_PICK_KEY = \"selectedItems\"\n\n\u002F\u002F 1. 안드로이드 표준 규격 처리\nif (data.clipData != null) {\n    \u002F\u002F ClipData에서 URI 추출\n} \n\u002F\u002F 2. 삼성 갤러리 독자 규격 처리\nelse if (data.hasExtra(SAMSUNG_MULTI_PICK_KEY)) {\n    val uris = mutableListOf\u003CUri>()\n    \n    \u002F\u002F API 33(Tiramisu) 이상과 미만 호환성 분기\n    val parcelableUris = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {\n        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY, Uri::class.java)\n    } else {\n        @Suppress(\"DEPRECATION\")\n        data.getParcelableArrayListExtra(SAMSUNG_MULTI_PICK_KEY)\n    }\n    \n    parcelableUris?.let {\n        uris.addAll(it)\n    }\n    \n    \u002F\u002F 웹뷰 콜백으로 Uri 배열 반환\n    filePathCallbackLollipop?.onReceiveValue(uris.toTypedArray())\n    filePathCallbackLollipop = null\n} 이와 같이 삼성 전용 파라미터와 결과 처리 로직을 추가하면 기본 갤러리 앱에서도 다중 선택 기능을 온전히 제공할 수 있다. 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);}",{"id":18583,"title":18474,"titles":104253,"content":104254,"level":94},[],"구글 등 검색 엔진이 웹사이트의 콘텐츠를 구조적으로 이해하도록 돕는 JSON-LD(구조화된 데이터)의 개념과, 여전히 유효한 콘텐츠 구독 프로토콜인 RSS에 대해 알아본다. SEO의 핵심 중 하나로 JSON-LD 가 있다. 메타 태그에 심는 것만 알고 있었는데, 이런 게 있었다. JSON-LD (JavaScript Object Notation for Linked Data) 는 json 으로 구성된 검색엔진용 페이지 정보다. 우리가 블로그 글이나 상품 상세 페이지를 예쁘게 만들어도, 구글 봇 입장에서는 그게 '리뷰'인지, '레시피'인지, '상품'인지 직관적으로 깨닫기 어렵다. 콘텐츠의 메타데이터를 구조화된 형태로 페이지의 \u003Chead> 태그 등에 심어두면, 검색 엔진이 페이지의 문맥을 완벽하게 이해하게 된다. \u003Cscript type=\"application\u002Fld+json\">\n{\n  \"@context\": \"https:\u002F\u002Fschema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"시맨틱 웹과 JSON-LD 이해하기\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"홍길동\"\n  },\n  \"datePublished\": \"2026-04-29\"\n}\n\u003C\u002Fscript> 이렇게 명시해주면 구글이나 네이버 서치어드바이저의 검색 결과 화면에서 평범한 텍스트 덩어리가 아니라 별점, 작성자, 썸네일 이미지가 함께 뜨는 리치 결과(Rich Snippets) 로 노출될 확률이 비약적으로 올라간다. 구글 서치 콘솔 가이드라인에서도 가장 권장하는 방식이다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"id":18888,"title":18593,"titles":104256,"content":104257,"level":94},[],"로컬 개발 중 같은 localhost 포트를 다른 프로젝트가 사용했을 때 이전 PWA의 Service Worker가 요청을 가로채 흰 화면이 보이는 원인과 DevTools에서 정리하는 방법을 설명한다. 동시에 두 로컬 프로젝트를 작업하다가 한 프로젝트가 쓰던 localhost:11111 포트를 다른 프로젝트에서 열었다. 새 프로젝트의 개발 서버를 실행했는데도 브라우저는 이전 화면을 열려고 해서 자꾸 하얀 화면이 뜨는 것. 강력 새로고침을 하면 잠시 달라지는 것처럼 보였지만 일반 새로고침을 하면 다시 같은 문제가 나타났다. 이 경우에는 HTTP 캐시만 의심하기보다, 이전 프로젝트가 등록한 Service Worker가 아직 해당 origin의 요청을 제어하고 있는지 확인해야 했다.",{"id":104259,"title":18615,"titles":104260,"content":104261,"level":105},"\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port#같은-포트를-쓰면-같은-origin을-다시-쓰게-된다",[18593],"브라우저는 웹 저장소와 Service Worker를 URL 전체가 아니라 origin 단위로 구분한다. origin은 스킴, 호스트, 포트의 조합이다. 따라서 http:\u002F\u002Flocalhost:11111과 http:\u002F\u002Flocalhost:3000은 포트가 달라 서로 다른 origin이지만, 이전 프로젝트와 새 프로젝트가 모두 http:\u002F\u002Flocalhost:11111을 사용하면 브라우저 입장에서는 같은 웹 앱의 주소다. PWA 또는 개발용 Service Worker가 \u002F 범위로 등록되어 있었다면 이 origin 아래의 페이지와 리소스 요청을 제어할 수 있다. 이전 프로젝트의 개발 서버를 멈춘 뒤에도 등록 자체가 자동으로 사라지는 것은 아니었다. 기존 Service Worker가 fetch 이벤트를 받아 캐시, 오프라인 응답, 이전 앱 셸을 반환하고 있던 것이다. Service Worker는 브라우저와 네트워크 사이에서 요청을 가로채는 프록시처럼 동작하기 때문에 일반 새로고침이나 HTTP 캐시 무효화만으로는 활성 Service Worker를 제거하지 못한다.",{"id":104263,"title":18645,"titles":104264,"content":104265,"level":105},"\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port#service-worker-상태-확인",[18593],"Chrome DevTools에서 문제 주소를 연 뒤 Application > Service workers로 이동한다. 이 화면에서 현재 origin에 등록된 Service Worker와 제어 상태를 확인할 수 있다. 아래 화면에서 http:\u002F\u002Flocalhost:11111\u002F에 등록된 Service Worker와 Bypass for network, Unregister 항목을 확인할 수 있다. http:\u002F\u002Flocalhost:11111\u002F에 활성 상태의 Worker가 있었다. 현재 포트에서 이전 앱의 Worker가 계속 실행 중인 것이다. Source에 표시되는 파일명도 이전 프로젝트의 등록 코드와 맞는지 확인한다. 같은 화면에서 해결 방법은 두 가지다. Bypass for network: 현재 DevTools 세션에서 Service Worker를 거치지 않고 네트워크 요청을 보낸다. Worker가 원인인지 빠르게 구분할 때 쓴다.Unregister: 해당 origin에 등록된 Service Worker를 해제한다. 이전 프로젝트의 Worker를 더 이상 쓰지 않을 때 선택한다. 바로 Unregister 해서 워커를 꺼버렸더니 바로 정상작동했다.",{"id":104267,"title":18703,"titles":104268,"content":104269,"level":105},"\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port#콘솔에서-등록을-확인하거나-해제하는-방법",[18593],"DevTools 화면을 열기 어려운 경우에는 현재 origin의 등록 목록을 콘솔에서 확인할 수 있다. const registrations = await navigator.serviceWorker.getRegistrations()\n\nconsole.table(\n  registrations.map((registration) => ({\n    scope: registration.scope,\n    active: registration.active?.scriptURL,\n  }))\n) 이 코드는 현재 origin에 등록된 Service Worker의 범위와 활성 스크립트 주소만 보여 준다. 다른 origin의 등록은 보이지 않으므로, 포트를 바꿨다면 문제가 발생한 정확한 주소에서 실행해야 한다. const registrations = await navigator.serviceWorker.getRegistrations()\nawait Promise.all(registrations.map((registration) => registration.unregister()))\nlocation.reload() 로컬 개발 환경에서 이전 Worker를 모두 해제해야 한다면 위 코드를 실행한다. unregister()는 현재 origin의 등록을 대상으로 한다.",{"id":104271,"title":6005,"titles":104272,"content":18877,"level":105},"\u002Fblog\u002Fservice-worker-cache-on-reused-localhost-port#참고한-페이지",[18593],{"id":19592,"title":18899,"titles":104274,"content":104275,"level":94},[],"Tailwind CSS의 테마 커스터마이징 방법을 소개하며, 사용자 정의 색상 변수를 설정하여 디자인을 개선하는 기술을 다룬다. 다양한 테마 설정과 CSS 변수 사용 사례를 통해 원하는 스타일을 구현하는 방법을 배울 수 있다. tailwindcss 에서 미리 기 정의된 color 프리셋을 제공한다. font, background 등등. 다만 기존에 사용하던 색상들을 tailwindcss 체계에 녹이고 싶다. text-blackcolor: var(--color-black); \u002F* #000 *\u002Ftext-whitecolor: var(--color-white); \u002F* #fff *\u002Ftext-red-50color: var(--color-red-50); \u002F* oklch(0.971 0.013 17.38) *\u002F 비슷한 형태로, 우리의 color 프리셋을 사용해보자.",{"id":104277,"title":18953,"titles":104278,"content":104279,"level":105},"\u002Fblog\u002Ftailwindcss-color-preset-with-theme#font-color-preset-custom",[18899],"\u003Cp class=\"text-[#50d71e] ...\">\u003C\u002Fp>\n\u003Cp class=\"text-(--my-color) ...\">\u003C\u002Fp> 이런식으로 color 코드를 직접 넣거나, variables 를 지정하면 커스텀 컬러를 사용할 수 있다. 하지만 나는 text-error-90 형식으로 사용하고 싶다.",{"id":104281,"title":19013,"titles":104282,"content":104283,"level":105},"\u002Fblog\u002Ftailwindcss-color-preset-with-theme#customizing-theme",[18899],"테마를 수정하는 방식을 제공한다. @theme {\n  --color-base-10: #FFFFFF;\n  --color-base-20: #F8F8F9;\n  --color-base-30: #ECEDF0;\n  ...\n} \u003Cp class=\"text-base-30\">\u003C\u002Fp> text-base-30 bg-base-30 이런식으로 색상을 사용할 수 있게 된다. tailwindcss 가 변수를 읽어 자동으로 utility class 를 생성해준다. 오오 다음은 테마를 적용해보자. @custom-variant dark (&:where(.dark, .dark *));\n@theme {\n  --color-custom-10: #FFFFFF;\n  --color-custom-20: #F8F8F9;\n  --color-custom-30: #ECEDF0;\n    ...\n}\n@variant dark {\n  --color-custom-10: #0D152A;\n  --color-custom-20: #303445;\n  --color-custom-30: #555C6C;\n    ...\n} 이렇게 @variant dark 로 컬러를 선언해주면, @custom-variant dark 에 의해서, .dark 클래스 아래의 요소들은 variables 가 갈아끼워진다. \u003Chtml class=\"dark\">\u003C\u002Fhtml> 위 형태로 html 태그의 클래스에 dark 가 포함되면, @variant dark 의 변수들이 사용되는 구조이다. \u003Cdiv class=\"text-custom-70 dark:text-custom-50\">test color tailwindcss\u003C\u002Fdiv>\n\u003Cdiv class=\"text-custom-70\">test color tailwindcss\u003C\u002Fdiv> tailwindcss 에서는 dark mode 일 때는 dark:bg-base-10 이런식으로 특정 조건일 때 클래스를 적용할 수 있도록 기능을 제공한다.\ndark:* 로 dark 모드일 때 데이터를 지정하여, dark 모드가 되었을 때 70 이 아닌 50을 사용하겠다는 뜻이 된다. 다만, dark 모드로 갈아끼워진 variable 의 50을 사용하게 되는 것을 주의해야 한다. \u002F**\n * # 테마 컬러를 변경한다.\n *\u002F\nfunction changeTheme(theme: ColorTheme) {\n    document.documentElement.classList.remove(...[\"dark-mode\", ...]);\n    if (theme === ColorTheme.DARK) {\n        document.documentElement.classList.add(\"dark-mode\");\n    } else if (theme === ColorTheme.SOMETHEME) { ... }\n    localStorage.setItem(STORAGE_KEY, theme);\n    colorTheme.value = theme;\n} 테마 변경을 body 의 클래스로 활용했었다. html 태그의 클래스를 바꿔주기 위해서 대상을 document.documentElement 로 변경해주었다. @variant 는 html 태그의 클래스를 인식한다.",{"id":104285,"title":19485,"titles":104286,"content":104287,"level":105},"\u002Fblog\u002Ftailwindcss-color-preset-with-theme#vue3-에서-css-variables-값-가져오기",[18899],"const root = document.querySelector(':root');\nif(root) {\n    return {\n        100: getComputedStyle(root).getPropertyValue(`--color-${p}-100`),\n        ...\n    };\n} @variant 로 지정한 테마의 색상 변수는 :root 요소를 찾아야 한다. 계산된 style 을 찾아서 변수의 값을 가져오자. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"id":19755,"title":19600,"titles":104289,"content":19752,"level":94},[],{"id":104291,"title":19606,"titles":104292,"content":104293,"level":105},"\u002Fblog\u002Ftailwindcss-storybook-version-error#error-enoent-no-such-file-or-directory-stat-cusersprojectpathiframehtml",[19600],"어느날 갑자기 CICD가 안되어서 내용을 보니 storybook 빌드를 하면서 에러가 발생했었다. 분명 로컬에서는 되는데 원격 환경에서만 에러가 발생하는 것이었다. 사용 중인 버전정보는 다음과 같다, tailwindcss@4.0.8storybook@8.6.0vite@6.1.0vue3@3.5.13 {projectname} build-storybook\nstorybook build\n\n@storybook\u002Fcore v8.6.0\n\ninfo => Cleaning outputDir: storybook-static\ninfo => Loading presets\nWARN The \"@storybook\u002Faddon-mdx-gfm\" addon is meant as a migration assistant for Storybook 8.0; and will likely be removed in a future version.\nWARN It's recommended you read this document:\nWARN https:\u002F\u002Fstorybook.js.org\u002Fdocs\u002Fwriting-docs\u002Fmdx#markdown-tables-arent-rendering-correctly\nWARN\nWARN Once you've made the necessary changes, you can remove the addon from your package.json and storybook config.\ninfo => Building manager..\ninfo => Manager built (236 ms)\ninfo => Building preview..\nmode production\nnpm_package_version 2.12.3\nplugin 'rollup-plugin-html-env' uses deprecated 'transform' option. Use 'handler' option instead.\nvite v6.1.0 building for production...\ntransforming (1) virtual:@storybook\\builder-vite\\vite-app.jsC:\\Users\\PROJECTPATH\\node_modules\\storybook\\bin\\index.cjs:23\nthrow error;\n^\n\nError: ENOENT: no such file or directory, stat 'C:\\Users\\PROJECTPATH\\iframe.html'\nat async Object.stat (node:internal\u002Ffs\u002Fpromises:1036:18)\nat async C.addBuildDependency (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002F@tailwindcss\u002Fvite\u002Fdist\u002Findex.mjs:1:5226) {\nerrno: -4058,\ncode: 'ENOENT',\nsyscall: 'stat',\npath: 'C:\\Users\\PROJECTPATH\\iframe.html'\n} iframe.html 파일을 찾지 못해서 발생한 에러이다. storybook 과 tailwindcss 를 같이 사용할 때, 미리보기 파일이 생성이 안되면서 발생하는 것으로 보인다. 헤당 이슈 혹은 비슷한 이슈가 이미 오픈되어 있었다. 이 문제를 발견한 시점으로부터 바로 하루 전이었다. !success\n여기서 insider 라는 용어를 처음 알았다. 공식적으로 발표되지 않았지만, 사용해볼 수 있는 버전을 뜻하는듯 하다. 내용으로 봐서는 4.0.8 버전에 일부 문제가 있었던 것 같고, 4.0.9 버전에서 픽스가 되어서 바로 사용해볼 수 있었다. \"tailwindcss\": \"^4.0.9\" 으로 세팅해서 lock 파일과 node_modules 폴더를 모두 지우고 다시 설치해서 이 문제는 해결되었다.",{"id":104295,"title":19674,"titles":104296,"content":104297,"level":105},"\u002Fblog\u002Ftailwindcss-storybook-version-error#cannot-be-closed-a",[19600],"✗ Build failed in 8.40s\n=> Failed to build the preview\n[vite:build-html] Cannot be closed: a\n    at ParseHTML.onCloseTagEndEvent (.\\node_modules\\vite-plugin-html-env\\lib\\parse\\index.js:313:15)\n    at ParseHTML.parse (.\\node_modules\\vite-plugin-html-env\\lib\\parse\\index.js:189:16)\n    at transform (.\\node_modules\\vite-plugin-html-env\\lib\\index.js:148:19)\n    at applyHtmlTransforms (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:42504:23)\n    at async Object.generateBundle (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:42244:18)\n    at async Bundle.generate (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:20116:9)\n    at async file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:22805:27\n    at async catchUnfinishedHookActions (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Frollup\u002Fdist\u002Fes\u002Fshared\u002Fnode-entry.js:22187:16)\n    at async buildEnvironment (file:\u002F\u002F\u002FC:\u002FUsers\u002FPROJECTPATH\u002Fnode_modules\u002Fvite\u002Fdist\u002Fnode\u002Fchunks\u002Fdep-ByPKlqZ5.js:51450:16)\n    at async build (.\\node_modules\\@storybook\\builder-vite\\dist\\index.js:80:230) 다시 최신 커밋으로 돌아가 tailwindcss 버전만 4.0.9 로 올린다고 성공하진 않았다. storybook 버전은 그대로 사용해야 충돌이 안나는듯 했다. 이 에러는 storybook 의 에러로 보인다. story 파일도 모두 지우고 테스트해봐도 같은 결과인 걸 보면, 작성한 stories 에서 문제가 있던 건 아닌 거로 보인다. 문제가 된 커밋을 찾아보니, 이번엔 storybook 의 버전 문제였다. 원래 되던 것이 안되면 무조건 버전 문제다. 8.4.7 -> 8.6.0 으로 올렸던 것이 문제가 되었었다. 이 커밋을 revert 하고 시도하니 해결되었다. 무작정 신버전이 능사는아니다.",{"id":104299,"title":19698,"titles":104300,"content":104301,"level":105},"\u002Fblog\u002Ftailwindcss-storybook-version-error#tailwindcssoxide-linux-x64-gnu",[19600],"failed to load config from \u002Fhome\u002Frunner\u002Fwork\u002FUpbox-2.0-Front-Application\u002FUpbox-2.0-Front-Application\u002Fvite.config.ts\n=> Failed to build the preview\nError: Cannot find module '@tailwindcss\u002Foxide-linux-x64-gnu'\nRequire stack:\n- .\u002Fnode_modules\u002F@tailwindcss\u002Foxide\u002Findex.js\n    at Function.\u003Canonymous> (node:internal\u002Fmodules\u002Fcjs\u002Floader:1225:15)\n    at Module._resolveFilename (.\u002Fnode_modules\u002Fesbuild-register\u002Fdist\u002Fnode.js:4794:36)\n    at Function._load (node:internal\u002Fmodules\u002Fcjs\u002Floader:1055:27)\n    at TracingChannel.traceSync (node:diagnostics_channel:322:14)\n    at wrapModuleLoad (node:internal\u002Fmodules\u002Fcjs\u002Floader:220:24)\n    at Module.require (node:internal\u002Fmodules\u002Fcjs\u002Floader:1311:12)\n    at require (node:internal\u002Fmodules\u002Fhelpers:136:16)\n    at Object.\u003Canonymous> (.\u002Fnode_modules\u002F@tailwindcss\u002Foxide\u002Findex.js:190:31)\n    at Module._compile (node:internal\u002Fmodules\u002Fcjs\u002Floader:1554:14)\n    at node:internal\u002Fmodules\u002Fcjs\u002Floader:1706:10 github actions 에서 빌드를 하려니 또 이런 에러가 발생한다. ^4.0.6 버전일 때는 에러가 없었는데, ^4.0.9 로 올리면서 에러가 발생한듯 하다. 일단 optionalDependencies 에 추가해주었다. \"optionalDependencies\": {\n    \"@tailwindcss\u002Foxide-linux-x64-gnu\": \"^4.0.9\"\n} 버전은 tailwindcss 버전과 맞추면 될듯 하다. html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"id":19927,"title":19766,"titles":104303,"content":104304,"level":94},[],"Tailwind CSS v4 베타 버전 사용 시 Vue와 Svelte의 컴포넌트 스타일 블록에서 @apply 디렉티브가 정상 동작하지 않는 이슈 현상을 정리한다. Tailwind CSS v4 버전으로 넘어오면서 컴파일러 아키텍처와 CSS 파싱 방식이 대폭 개편되었고, 기존 기능에서 호환성 문제가 좀 있었다. Vue의 \u003Cstyle> 블록이나 Svelte의 \u003Cstyle> 블록 내부에서 Tailwind의 유틸리티 클래스를 묶어주는 @apply 디렉티브가 제대로 작동하지 않았다. 일반적으로 중복되는 Tailwind 클래스를 묶어 재사용하고 싶을 때 아래와 같이 @apply를 사용한다. \u003Cstyle scoped>\n.my-custom-btn {\n  \u002F* 이렇게 기존에 제공되는 유틸리티들을 묶어 쓰고 싶은데 작동하지 않음 *\u002F\n  @apply bg-blue-500 text-white font-bold py-2 px-4 rounded;\n  \n  \u002F* 어쩔 수 없이 순수 CSS로 풀어써야 함 *\u002F\n  text-align: right; \n}\n\u003C\u002Fstyle> v4(특히 4.0.0-beta 버전대) 빌드 도구 환경에서 위 코드를 작성하면, 빌드 파이프라인에서 해당 디렉티브를 해석하지 못하거나 빌드 에러, 혹은 스타일이 무시되었다. 이는 Tailwind v4가 Vite나 프레임워크 자체의 CSS 처리 파이프라인과 통합되는 방식이 완전히 달라졌기 때문이다. 이 이슈는 Tailwind Labs의 공식 Github Discussion #15205에서도 활발히 논의되고 있다. 플러그인 업데이트나 프레임워크 플러그인의 지원이 완전해질 때까지는, 프레임워크 컴포넌트 내부 \u003Cstyle> 블록에서의 @apply 사용을 자제하고 대신 React의 className 조립이나 Vue\u002FSvelte의 클래스 바인딩, 혹은 Tailwind의 최상위 index.css 파일에서 @apply를 정의하여 사용하는 우회 방식을 권장한다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"id":20881,"title":19936,"titles":104306,"content":104307,"level":94},[],"객체 계약에는 interface, 조합과 유니온에는 type을 쓰고, 런타임 상수는 enum과 as const 중 요구사항에 맞게 고르는 기준을 정리한다. TypeScript를 쓰다 보면 객체 모양을 만들 때는 type과 interface 중 무엇을 써야 하는지, 상태 코드처럼 정해진 값을 만들 때는 enum을 써야 하는지 자주 고민하게 된다. 문법을 통일하는 것도 중요하지만, 각 선언이 타입 검사에만 남는지 런타임 JavaScript까지 남는지를 구분하면 선택이 쉬워진다.",{"id":104309,"title":19956,"titles":104310,"content":104311,"level":105},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#객체-형태",[19936],"interface User {\n  id: string;\n  name: string;\n}\n\ntype UserPreview = {\n  id: string;\n  name: string;\n}; interface와 객체 형태의 type은 비슷하게 사용된다. TypeScript는 값이 선언 이름과 일치하는지보다 필요한 프로퍼티를 갖는지 확인하는 구조적 타입 시스템이라서, 위 두 방식은 User 형태를 설명하는 데 큰 차이가 없다. interface Session {\n  userId: string;\n}\n\ninterface Session {\n  expiresAt: string;\n}\n\nconst session: Session = {\n  userId: \"user-1\",\n  expiresAt: \"2026-07-13T12:00:00Z\",\n}; 대신 interface는 객체 구조를 선언하고 extends로 확장한다. 같은 이름의 interface를 다시 선언하면 프로퍼티가 병합되는 declaration merging도 가능하다. type RequestState = \"idle\" | \"loading\" | \"success\" | \"error\";\n\ntype ApiResult\u003CT> =\n  | { ok: true; data: T }\n  | { ok: false; message: string };\n\ntype ClickHandler = (event: MouseEvent) => void; 반면 type은 객체뿐 아니라 유니온, 튜플, 원시 값, 함수 시그니처에도 이름을 붙일 수 있다. 이미 만든 타입을 교차 타입으로 조합하는 것도 자연스럽다. TypeScript 공식 문서는 대부분의 경우 둘 중 하나를 고를 수 있다고 설명한다. 팀에 별도 규칙이 없다면 객체의 공개 계약에는 interface를 먼저 쓰고, 유니온·튜플·조건부 타입처럼 type만 가능한 표현이 필요할 때 type을 쓰는 기준이 실용적이다.",{"id":104313,"title":20322,"titles":104314,"content":104315,"level":105},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#같은-이름의-속성-유니온",[19936],"type HasStringId = { id: string };\ntype HasNumberId = { id: number };\n\ntype ImpossibleId = HasStringId & HasNumberId;\n\u002F\u002F ImpossibleId의 id는 string과 number를 모두 만족해야 하므로 never가 된다. interface extends는 부모와 자식에 같은 이름의 프로퍼티가 있을 때 호환되는 타입을 요구한다. 반대로 교차 타입(&)도 “둘 중 하나”가 아니라 두 조건을 모두 만족해야 한다. 이름이 같지만 의미가 다른 값을 하나로 합쳐야 한다면 타입 선언으로 해결하려 하기보다, 프로퍼티 이름이나 데이터 모델을 먼저 나누는 편이 낫다. type의 교차 타입이 충돌을 자동으로 유니온으로 바꿔 준다고 생각하면 실제 사용 시 never를 만나기 쉽다. 이 차이는 객체 타입 공식 문서에서도 interface 확장과 intersection의 충돌 처리 차이로 설명한다.",{"id":104317,"title":20423,"titles":104318,"content":104319,"level":105},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#enum은-타입-선언이면서-런타임-객체다",[19936],"enum LogLevel {\n  Error = \"ERROR\",\n  Warn = \"WARN\",\n  Info = \"INFO\",\n}\n\nfunction writeLog(level: LogLevel) {\n  console.log(level);\n} enum은 TypeScript에만 있는 문법이다. 일반 enum은 컴파일 후에도 객체로 남으므로, 값 목록을 런타임에 전달하거나 멤버 이름으로 접근해야 할 때는 편리하다. 실무에서는 enum 사용을 지양해야 한다는 목소리가 꾸준히 나오고 있다. 가장 큰 이유는 트리 쉐이킹(Tree-shaking) 문제다. TypeScript 코드가 JavaScript로 컴파일될 때, enum은 JavaScript에 없는 문법이므로 이를 흉내 내기 위해 즉시 실행 함수(IIFE) 형태로 변환된다. 여기서 Rollup이나 Webpack 같은 번들러는 IIFE 내부에서 어떤 객체가 조작되는지 정적 분석으로 판단하기 어렵다. 즉, 해당 enum을 프로젝트 어딘가에서 import만 해두고 실제로는 쓰지 않더라도 번들러는 이를 사용하는 코드로 간주해 번들에 포함할 수 있다. 결과적으로 불필요한 코드 양이 증가한다. 숫자 enum은 값에서 이름으로 찾는 역방향 매핑까지 생성한다. 문자열 enum은 역방향 매핑을 만들지 않지만, 둘 다 일반 enum이라면 JavaScript 런타임에 객체가 존재한다. TypeScript enum 문서를 보면 enum이 함수에 전달할 수 있는 실제 객체라는 점도 확인할 수 있다. 이 특성은 장점이자 비용이다. 단순히 고정된 문자열이나 숫자 집합이 필요할 뿐인데 enum 객체와 접근 코드를 꼭 만들 필요가 있는지는 별도로 판단해야 한다. 특히 번들 크기를 줄여야 하는 라이브러리나 여러 작은 모듈에서는 실제 생성된 JavaScript를 한 번 확인하는 게 좋다.",{"id":104321,"title":20551,"titles":104322,"content":20554,"level":105},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#enum을-대체하는-확실한-방법",[19936],{"id":104324,"title":20558,"titles":104325,"content":104326,"level":121},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#const-enum-사용",[19936,20551],"enum 선언 앞에 const를 붙이면 TypeScript는 값을 변환할 때 즉시 실행 함수를 만들지 않고 해당 상수가 사용된 곳에 값을 직접 치환한다. const enum Direction {\n  Up,\n  Down,\n}\n\nlet dir = Direction.Up;\n\n\u002F\u002F 컴파일된 JS\nlet dir = 0 \u002F* Direction.Up *\u002F; 코드가 가벼워지고 트리 쉐이킹이 가능해진다. 다만 런타임에 객체가 존재하지 않기 때문에 Object.keys() 같은 메서드로 순회할 수 없으며, 양방향 매핑도 사용할 수 없다는 제약이 있다.",{"id":104328,"title":20650,"titles":104329,"content":104330,"level":121},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#as-const와-객체-리터럴의-조합",[19936,20551],"실무에서 enum을 대체하는 방법으로 객체 리터럴과 as const를 조합할 수 있다. 보통 객체를 const로 선언해도 내부 속성값은 변경 가능한 string, number 타입으로 추론된다. 하지만 객체 뒤에 as const를 붙이면 객체의 모든 속성이 readonly가 되며, 값 자체가 리터럴 타입으로 고정된다. const HTTPRequestErrorCodeObject = {\n  UNAUTHORIZED: 401,\n  FORBIDDEN: 403,\n  NOT_FOUND: 404,\n  INTERNAL_SERVER_ERROR: 500,\n} as const;\n\nexport type HTTPRequestErrorCode =\n  typeof HTTPRequestErrorCodeObject[keyof typeof HTTPRequestErrorCodeObject]; 이렇게 하면 HTTPRequestErrorCode는 401 | 403 | 404 | 500이라는 리터럴 유니온 타입으로 좁혀진다. 이 방식은 enum 변환을 위한 IIFE를 생성하지 않으며, 필요하다면 Object.keys()나 Object.values()를 사용해 런타임에 상수 목록을 순회할 수도 있다. 타입과 값 저장소를 분리해서 사용해야 한다는 약간의 번거로움이 있지만, IDE의 인텔리센스 지원과 번들 최적화를 함께 고려할 수 있다.",{"id":104332,"title":20797,"titles":104333,"content":104334,"level":105},"\u002Fblog\u002Ftypescript-type-interface-enum-choice#선택-기준",[19936],"정답은 하나가 아니지만, 다음 기준으로 시작하면 팀 규칙을 만들기 쉽다. 필요우선 선택확장 가능한 객체 계약, 선언 병합interface유니온·튜플·함수·조건부 타입type런타임 객체와 enum 전용 동작이 꼭 필요함enum런타임 값 목록과 리터럴 유니온이 모두 필요함as const 객체 + typeof앱 내부의 작은 상수를 인라인하고 싶음제약을 확인한 뒤 const enum html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"id":21613,"title":20890,"titles":104336,"content":104337,"level":94},[],"여러 앱이 한 Vite 프로젝트에 섞여 있을 때, 빌드 대상별 엔트리와 라우터를 분리해 필요한 모듈만 번들에 포함하는 방법을 정리한다. 기존 프로젝트에서는 하나의 저장소로 여러 앱을 빌드하고 있었다. 하나의 결과물로 관리하다가 앱별로 빌드를 분리하게 되었다.",{"id":104339,"title":20899,"titles":104340,"content":104341,"level":105},"\u002Fblog\u002Fvite-monolith-build-split#문제는-라우터가-모두를-참조하는-구조였다",[20890],"기존에는 main.ts 하나에서 공통 앱과 전체 라우터를 등록했다. 특정 서비스에서 접근하지 않는 화면이라도 전체 라우트 배열에 포함되어 있었고, 그 라우트가 참조하는 컴포넌트와 의존성도 번들 그래프에 남았다. Vite는 기본적으로 프로젝트 루트의 index.html을 빌드 진입점으로 사용하고, HTML의 모듈 스크립트도 모듈 그래프의 일부로 처리한다. 따라서 index.html이 가리키는 시작 파일과 그 파일이 가져오는 라우터를 서비스별로 좁히는 것이 먼저였다. Vite의 HTML 진입점 설명과 프로덕션 빌드 문서를 기준으로 보면, 별도의 JavaScript 입력을 직접 만들기보다 HTML이 가리키는 모듈을 바꾸는 방법을 선택했다.",{"id":104343,"title":20930,"titles":104344,"content":104345,"level":105},"\u002Fblog\u002Fvite-monolith-build-split#서비스별-엔트리에서-전용-라우터만-등록하기",[20890],"각 서비스에 main.{appType}.ts를 만들고, 공통 초기화는 유지하되 해당 서비스의 라우터 생성 함수만 가져오도록 분리했다. 아래의 service-a는 실제 서비스 이름을 대신한 예시다. \u002F\u002F src\u002Fmain.service-a.ts\nimport app from \".\u002Fapp\";\nimport { createServiceARouter } from \".\u002Frouter\u002Fservice-a-entry\";\nimport \"@\u002Fassets\u002Fscss\u002Fmain.scss\";\nimport \"@\u002Fassets\u002Fstyle.css\";\n\nconst router = createServiceARouter();\n\napp.use(router).mount(\"#app\"); 이 파일은 공통 스타일과 앱 인스턴스는 그대로 사용하지만, createServiceARouter만 호출한다. 전용 라우터도 다른 서비스의 라우트 배열을 가져오지 않게 구성한다. \u002F\u002F src\u002Frouter\u002Fservice-a-entry.ts\nimport { createRouter, createWebHistory } from \"vue-router\";\nimport { serviceARoutes } from \".\u002Fservice-a-routes\";\n\nexport function createServiceARouter() {\n  return createRouter({\n    history: createWebHistory(),\n    routes: serviceARoutes,\n  });\n} 중요한 건 service-a-routes에서 필요한 화면만 정적으로 참조하도록 만들어야 다른 서비스의 라우터와 그 하위 컴포넌트가 이 엔트리의 의존성 그래프에 들어오지 않는다. 트리 쉐이킹은 사용하지 않는 코드를 자동으로 전부 제거하는 것보다, 번들러가 필요한 것만 참조하도록 할 때 효과가 난다.",{"id":104347,"title":21138,"titles":104348,"content":104349,"level":105},"\u002Fblog\u002Fvite-monolith-build-split#indexhtml의-모듈-스크립트를-빌드-대상에-맞춰-바꾸기",[20890],"Vite에서 index.html은 단순한 정적 파일이 아니라 변환 대상이다. transformIndexHtml 훅은 HTML 진입점의 내용을 바꿀 수 있고, order: \"pre\"를 주면 기본 HTML 변환 전에 적용할 수 있다. 자세한 반환 형식과 실행 순서는 Vite Plugin API의 transformIndexHtml 문서에서 확인할 수 있다. 처음에는 빌드가 끝난 뒤 HTML을 복사하고 수정하는 훅도 사용했다. 하지만 결과물이 만들어진 뒤에 다시 파일을 조작하면, 출력 경로와 다른 HTML 플러그인의 처리 순서를 함께 관리해야 했다. 최종적으로는 HTML을 처리하는 단계에서 모듈 스크립트 경로만 바꾸는 방식으로 결정했다. \u002F\u002F build\u002Fentry-switcher.ts\nimport type { Plugin } from \"vite\";\n\nexport function entrySwitcherPlugin(appType?: string): Plugin {\n  return {\n    name: \"entry-switcher\",\n    transformIndexHtml: {\n      order: \"pre\",\n      handler(html) {\n        if (!appType) {\n          return html;\n        }\n\n        return html.replace(\n          \"\u002Fsrc\u002Fmain.ts\",\n          `\u002Fsrc\u002Fmain.${appType}.ts`,\n        );\n      },\n    },\n  };\n} 이 플러그인은 index.html의 \u002Fsrc\u002Fmain.ts를 \u002Fsrc\u002Fmain.service-a.ts처럼 바꾼다. 목적이 되는 파일만 잘 바뀌도록 구성해야 한다. 엉뚱한 문자열이 함께 바뀌지 않도록 치환 대상을 명확하게 지정한다. 플러그인은 HTML 내용을 읽거나 치환하는 다른 플러그인보다 앞에 둔다. 빌드 대상은 설정에서 받아 출력 폴더도 나눴다. \u002F\u002F vite.config.ts\nimport { defineConfig } from \"vite\";\nimport { entrySwitcherPlugin } from \".\u002Fbuild\u002Fentry-switcher\";\n\nexport default defineConfig(({ mode }) => {\n  const appType = mode.startsWith(\"service-\")\n    ? mode.replace(\"service-\", \"\")\n    : undefined;\n\n  return {\n    plugins: [\n      entrySwitcherPlugin(appType),\n      \u002F\u002F HTML을 후속 처리하는 플러그인\n    ],\n    build: {\n      outDir: appType ? `dist\u002F${appType}` : \"dist\",\n    },\n  };\n}); 이 방식은 기본 index.html 진입점은 유지한다. 앱별로 여러 HTML 파일을 운영하는 편이 더 명확한 경우에는 Vite의 멀티 페이지 애플리케이션 구성을 선택할 수도 있다. 다만 같은 HTML 템플릿을 공유하고 진입 모듈만 달라지는 상황에서는 변환 훅 하나로 관리할 수 있었다.",{"id":104351,"title":21545,"titles":104352,"content":104353,"level":105},"\u002Fblog\u002Fvite-monolith-build-split#측정값은-서비스별-배포물-크기로-비교했다",[20890],"분리 전후의 효과는 브라우저 성능 지표가 아니라, 생성해 배포한 압축 아티팩트의 크기로 확인했다. 즉 요청 수, 초기 렌더링 시간, 실제 전송 크기가 같은 비율로 줄었다는 뜻은 아니다. 빌드 대상아티팩트 크기분리 전 통합 빌드29.6 MB서비스 A29.0 MB서비스 B23.9 MB서비스 C23.6 MB 모든 기능을 포함하는 서비스 A는 감소 폭이 작았고, 제한된 화면만 사용하는 서비스 B와 C는 더 작은 결과물이 나왔다. 크기가 생각보다 크게 줄어들지는 않았다. 크기만 비교하면 공통 의존성이 중복되어 결국 전체로는 크기가 늘어난다. 그래서 서비스별 배포가 필요한지, 공통 청크를 공유할 수 있는지, 각 서비스의 실제 초기 로딩에서 어떤 청크가 내려오는지도 함께 확인해야 한다. html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":24441,"title":21624,"titles":104355,"content":104356,"level":94},[],"기존 vue-cli 를 사용한 vue 프로젝트로 github pages 를 구축했는데, 대세에 따라 vite 로 변경하기로 했다. 기존 vue-cli 를 사용한 vue 프로젝트로 github pages 를 구축했는데, 대세에 따라 vite 로 변경하기로 했다. 말이 변경이지 새로 만들었다. 기존 vue-cli 로 했던 것에서 vite 로 변경하며 필요한 부분만 작성하였고, github actions 등의 기능은 Github.io + Vue3 로 블로그 만들기 를 참고하면 된다.",{"id":104358,"title":21641,"titles":104359,"content":104360,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-프로젝트-생성",[21624],"npm create vite@latest 우선 빈 vite 프로젝트를 만들어준다. 우리는 vue3 와 typescript 를 활용해서 개발할 것이다.",{"id":104362,"title":21653,"titles":104363,"content":104364,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-ssg",[21624],"Vite SSGhttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-ssg vite 로 static site generating 하는 라이브러리이다. 우리가 만드는 포스트 마다 정적 사이트로 만들어준다 npm i -D vite-ssg vue-router @vueuse\u002Fhead 위 커맨드로 vue-router  와 @vueuse\u002Fhead  도 함께 설치해주라고 나와 있는데, 나는 @unhead\u002Fvue 를 사용했다. \u002F\u002F package.json\n\"scripts\": {\n  \"build:ssg\": \"vite-ssg build\"\n} 빌드 커맨드를 대체 혹은 추가해준다. export const createApp = ViteSSG(\n    \u002F\u002F 루트 컴포넌트\n    App,\n    { routes },\n    ({ app, router, routes, isClient, initialState }) => {\n        \u002F\u002F 플러그인 세팅\n    },\n) createApp  을 ViteSSG  로 변경한다. 이러면 빌드했을 때, SPA 앱이 아니라, MPA로 빌드가 된다. 각 라우트마다 html 페이지가 따로 생성된다.",{"id":104366,"title":21818,"titles":104367,"content":104368,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-plugin-pages-sitemap",[21624],"vite-plugin-pages-sitemaphttps:\u002F\u002Fgithub.com\u002Fjbaubree\u002Fvite-plugin-pages-sitemap 사이트맵 자동 생성기이다. vite-ssg  와 vite-plugin-pages  를 같이 지원한다. npm install -D vite-plugin-pages-sitemap import Pages from 'vite-plugin-pages'\nimport generateSitemap from 'vite-plugin-pages-sitemap'\nexport default {\n  plugins: [\n    \u002F\u002F ...\n    Pages({\n      onRoutesGenerated: routes => (generateSitemap({ routes })),\n    }),\n  ],\n} npm run build  를 하면 바로 사이트맵과 로보츠 파일이 만들어진다. 기본 사용법대로 사이트맵 파일을 만들면 주소가 localhost  로 되는데, hostname  을 변경해서 내 사이트 주소를 설정해주어야 한다.",{"id":104370,"title":21837,"titles":104371,"content":104372,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-plugin-pages",[21624],"vite-plugin-pageshttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-plugin-pages 파일 시스템 기반의 라우트를 생성한다. npm install -D vite-plugin-pages 이녀석도 vue-router 가 필요한데, 위에서 설치했기 때문에 생략한다. \u002F\u002F vite.config.ts\nimport Pages from 'vite-plugin-pages';\nexport default defineConfig({\n  plugins: [\n    Pages({\n      extensions: ['vue', 'md'],\n      pagesDir: 'src\u002Fpages',\n      \u002F**\n       * 생성된 라우트에 추가 로직을 작성한다.\n       * @param route 생성된 라우트\n       * @returns \n       *\u002F\n      extendRoute(route) {\n        console.log('route', route);\n        return route;\n      }\n    }),\n  ],\n}) Pages  플러그인을 설정파일에 추가하자. md 파일이 있는 경로와, 확장자를 추가해주면 된다.",{"id":104374,"title":22134,"titles":104375,"content":104376,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#파일-추가하기",[21624,21837],"Pages  플러그인에 등록해둔 경로에 .vue  혹은 .md  파일을 만들면 자동으로 라우트로 인식한다. 기본적으로 만들어야 할 파일이 두가지 있다. [...all].vue → 접속한 페이지에 해당하는 라우트가 없을 때 띄워줄 404 페이지index.vue → 루트 페이지 나머지는 파일을 만드는대로 라우트에 등록된다.",{"id":104378,"title":22168,"titles":104379,"content":104380,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#nested-routes",[21624,21837],"Nested Routeshttps:\u002F\u002Fgithub.com\u002Fhannoeru\u002Fvite-plugin-pages#nested-routes 메인 페이지와 포스트 페이지의 디자인을 완전히 분리하고 nested routes 로 관리할 것이다. route {\n  path: '\u002Fposts',\n  component: '\u002Fsrc\u002Fpages\u002Fposts.vue',\n  customBlock: undefined,\n  children: [\n    {\n      name: 'posts-post2',\n      path: 'post2',\n      component: '\u002Fsrc\u002Fpages\u002Fposts\u002Fpost2.md',\n      customBlock: undefined,\n      props: true\n    },\n    \u002F\u002F ....\n  ],\n  props: true\n} \u002Fpages 폴더 아레, posts  로 폴더와 vue 파일을 하나씩 만든다. 그럼 자동으로 nested routes 로 인식한다. \u003Cscript setup>\u003C\u002Fscript>\n\u003Ctemplate>\n  \u003Cdiv class=\"post-index-wrapper\">\n    \u003Crouter-view>\u003C\u002Frouter-view>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cstyle>\n\u003C\u002Fstyle> posts.vue  파일에는 router-view  를 사용하면 끝!",{"id":104382,"title":22427,"titles":104383,"content":104384,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-plugin-vue-layouts",[21624],"vite-plugin-vue-layoutshttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fvite-plugin-vue-layouts vite-plugin-pages 와 세트이다. main 에서 createApp 을 할 때, 라우트를 인식시키기 위함이다. 무조건 필요한지는 잘 모르겠다. 더 알아봐야 함. npm install -D vite-plugin-vue-layouts \u002F\u002F vite.config.ts\nimport Layouts from 'vite-plugin-vue-layouts';\nexport default defineConfig({\n  plugins: [\n    Layouts(),\n  ]\n}) vite 설정에 Layouts  추가하기 \u002F\u002F tsconfig.json\n\"compileOptions\": {\n    \"types\": [\n      \"vite\u002Fclient\", \n      \"vite-plugin-pages\u002Fclient\", \n      \"vite-plugin-vue-layouts\u002Fclient\", \n      \"node\"\n    ],\n} virtual  import 를 인식하기 위해서 types 항목을 추가한다. \u002F\u002F main.ts\n\u002F\u002F virtual:generated-layouts\n\u002F\u002F   tsconfig.json-compilerOptions-types\n\u002F\u002F   \"vite-plugin-vue-layouts\u002Fclient\"\nimport { setupLayouts } from 'virtual:generated-layouts'\n\u002F\u002F virtual:generated-pages\n\u002F\u002F   tsconfig.json-compilerOptions-types\n\u002F\u002F   \"vite-plugin-pages\u002Fclient\"\nimport generatedRoutes from 'virtual:generated-pages'\n\nconst routes = setupLayouts(generatedRoutes)\nexport const createApp = ViteSSG(\n    \u002F\u002F 루트 컴포넌트\n    App,\n    { routes },\n    ({ app, router, routes, isClient, initialState }) => {\n        \u002F\u002F 플러그인 세팅\n    },\n) pages 플러그인이 셍성한 라우트를 main 에서 적용시킨다.",{"id":104386,"title":22723,"titles":104387,"content":104388,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-plugin-md",[21624],"vite-plugin-mdhttps:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-plugin-md 마크다운을 뷰 컴포넌트로 만들어준다. npm i vite-plugin-md -D import Markdown from 'vite-plugin-md'\n\nexport default defineConfig({\n  plugins: [\n    vue({\n      include: [\u002F\\.vue$\u002F, \u002F\\.md$\u002F], \u002F\u002F 마크다운 파일도 인식하기\n    }),\n    Markdown(),\n  ],\n}) 기본적으로 있던 vue  플러그인에 md  파일도 인식할 수 있게 항목을 추가해주고, Markdown  플로그인을 추가한다.",{"id":104390,"title":22855,"titles":104391,"content":104392,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#메타태그-추가",[21624,22723],"GitHub - mdit-vue\u002Fvite-plugin-vue-markdown: Compile Markdown to Vue component 페이지별로 메타태그를 추가하고싶은데, .md 파일로는 어떻게 해줘야 할까?\nvite-ssg 와 vite-plugin-md 에서 이미 vueuse\u002Fhead 를 사용한다. 그래서 unhead\u002Fvue 를 사용해보려고 했지만, 충돌 문제가 있어서 vueuse\u002Fhead 의 방식을 따르기로 했다. ---\nmeta:\n  - name: My Cool App\n    description: cool things happen to people who use cool apps\n--- md 파일의 최상단에 --- 로 구분선을 위아래로 넣어주고, 안에 내용을 넣어준다. ---\nmeta:\n  - name: description\n    content: Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\n--- 이런 형식도 된다. \u003Ctitle>Github.io + Vue3 로 블로그 만들기\u003C\u002Ftitle>\n\u003Cmeta name=\"description\"\ncontent=\"Github.io 와 Vue3 를 활용해서 블로그를 시작. SPA를 prerendering 하여 개별 페이지를 생성하고, 메타태그를 추가. 구글 검색 엔진에 등록할 사이트맵 자동 생성. 마크다운을 html 로 변환. Google Analytics 도입으로 방문자 수 체크.\">\n\u003Cmeta property=\"og:title\" content=\"Github.io + Vue3 로 블로그 만들기\"> html 파일에 자동으로 meta 태그가 추가된다.",{"id":104394,"title":23050,"titles":104395,"content":87,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#markdown-it-플러그인",[21624],{"id":104397,"title":23053,"titles":104398,"content":104399,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#markdown-it-anchor",[21624,23050],"markdown-it-anchorhttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-anchor H  태그에 기본적으로 anchor 를 달아서 이동할 수 있게 한다.  한글도 지원한다.",{"id":104401,"title":23072,"titles":104402,"content":104403,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#markdown-it-table-of-contents",[21624,23050],"markdown-it-table-of-contentshttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-table-of-contents [[toc]]  를 사용하면 목차를 만들 수 있다.",{"id":104405,"title":23092,"titles":104406,"content":104407,"level":134},"\u002Fblog\u002Fvite-vue-and-github-pages#목차-요소를-따로-떼서-다른-곳에-붙이기",[21624,23050,23072],"목차가 md 페이지 컴포넌트의 상단에 고정되어 있어서 원하는 곳에서 사용할 수 없다. 예를 들어, 오른쪽 부분에 고정을 시킨다던지. onMounted(() => {\n  \u002F\u002F 목차를 markdown-body 내부에서 제거한 후, \n  \u002F\u002F 옆에 붙인다.\n  const mdBody = document.querySelector(\".markdown-body\");\n  const targetToc = document.querySelector(\".new-table-of-contents\");\n  const toc = document.querySelector(\".markdown-body .table-of-contents\");\n  const main = document.querySelector(\"main\");\n\n  if(mdBody && targetToc && toc && main) {\n    targetToc.innerHTML = toc?.innerHTML!;\n    \u002F\u002F 라우트 변경 시 `.table-of-contents` 의 innerHTML 이 한번 제거되고 undefined 로 뜨기 때문에\n    \u002F\u002F display: none 만 붙여서 숨긴다.\n    (toc as HTMLElement)?.style.setProperty(\"display\", \"none\");\n  }\n}) 자바스크립트로 간단하게 innerHTML  을 붙이려는 요소에 넣어주고, 해당 요소는 제거하면 된댜. !attention\n원래는  toc 를 remove 로 제거했으나, 그러면 라우트를 두번 이상 이동할 때, 이미 제거된 .table-of-contents 에서 내용을 찾아 undefined 를 얻게 된다. 라우트 시 toc 요소가 없으면 생성하지 못하는듯 하다.\n그래서 display: none; 속성만 주어서 보이지만 않게 한다. watch(() => route.fullPath, () => {\n    \u002F\u002F SPA 라우트가 바뀔 때마다 toc 변경\n    nextTick(() => {\n        createToc();\n    });\n}); 라우트가 변경될 때마다 TOC를 옮겨주기 위해서 watch 를 추가한다.",{"id":104409,"title":23376,"titles":104410,"content":104411,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#markdown-it-prism",[21624,23050],"markdown-it-prismhttps:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmarkdown-it-prism prism  라이브러를 래핑했다. 마크다운 파일 내의 소스코드를 위한 pre  태그를 하이라이팅한다. export default defineConfig({\n  plugins: [\n    Markdown({\n      markdownItSetup(md) {\n        \u002F\u002F prism 코드 하이라이터\n        md.use(MDPrism)\n      },\n    }),\n  ],\n}) markdownItSetup 함수에서 use 로 사용선언하면 자동으로 마크다운 코드 영역은 하이라이팅 된다. 클래스가 부여되기만 해서 css 는 직접 넣어주어야 한다. \u003Cstyle>\n@use \"..\u002Fassets\u002Fscss\u002Fprism-vscode.scss\"; \n\u003C\u002Fstyle> 우리의 경우 포스트가 RouterView 에서 자동으로 페이지화되어 보여지기 때문에, scoped style 로는 스타일을 적용할 수 없다. 그래서 전역 css 로 선언해주어야 한다.",{"id":104413,"title":23515,"titles":104414,"content":104415,"level":134},"\u002Fblog\u002Fvite-vue-and-github-pages#테마",[21624,23050,23376],"GitHub - PrismJS\u002Fprism-themes: A wider selection of Prism themes\n여러가지 테마를 모아둔 깃헙이다. 가장 익숙한 vscode 를 사용했다.",{"id":104417,"title":23526,"titles":104418,"content":104419,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#pinia",[21624],"piniahttps:\u002F\u002Fpinia.vuejs.org\u002Fgetting-started.html#installation\nvite-ssg piniahttps:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-ssg#initial-state 포스트 목록을 관리하기 위해서 pinia 를 설치하자. npm install pinia \u002F\u002F main.ts\nexport const createApp = ViteSSG(\n  App,\n  { routes },\n  ({ app, router, initialState }) => {\n    const pinia = createPinia()\n    app.use(pinia)\n\n    if (import.meta.env.SSR)\n      initialState.pinia = pinia.state.value\n    else\n      pinia.state.value = initialState.pinia || {}\n\n    router.beforeEach((to, from, next) => {\n      const store = useRootStore(pinia)\n      if (!store.ready)\n        \u002F\u002F perform the (user-implemented) store action to fill the store's state\n        store.initialize()\n      next()\n    })\n  },\n) vite-ssg 깃헙에서 나온 설명서인데, 글로벌로 store 를 등록하는 게 아니라면, app.use  까지만 해주어도 된다. \u002F\u002F src\u002Fstore\u002Fposts.ts\nimport axios from 'axios';\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue';\n\nexport interface Post {\n  url: string;\n  fileName: string;\n  title: string;\n  description: string;\n  tags: string[];\n  data: string;\n}\n\nexport const usePosts = defineStore('post', () => {\n  const postList = ref\u003CPost[]>([]);\n  const currentUrl = ref\u003Cstring>('');\n\n  async function fetchPostList(\n) {\n    axios.get\u003CPost[]>(`\u002Fpostlist.json`).then(res => {\n      postList.value = res.data;\n      return res.data;\n    });\n  }\n\n  return {\n    postList,\n    currentUrl,\n    fetchPostList,\n  }\n}) post 목록을 가져오는 store 를 하나 만든다. 포스트를 단순히 json 파일로 저장해두고, 사용할 것이다. \u002F\u002F public\u002Fpostlist.json\n[\n  {\n      \"url\": \"Vue-Prefetch\",\n      \"fileName\": \"Vue-Prefetch\",\n      \"title\": \"Vue Code Spliting 간단히 알아보기 (+ Prefetch)\",\n      \"description\": \"Vue 프로젝트의 Code Spliting 이 어떻게 작동하는지와 webpack prefetch 옵션 에 대해서 간략한 설명.\",\n      \"createdAt\": \"2022-08-05\",\n      \"updatedAt\": \"2022-08-05\",\n      \"tags\": [\"Vue\", \"Vue2\", \"Vue3\", \"Code Spliting\", \"코드분산\", \"Prefecth\", \"Webpack\"]\n  },\n  \u002F\u002F ...\n] public 폴더에 파일을 두면, 그 항목은 사이트의 루트에 포함되게 된다. 같은 호스트이기 때문에 cors 없이 axios 로 동적으로 조회할 수 있다.",{"id":104421,"title":15123,"titles":104422,"content":87,"level":105},"\u002Fblog\u002Fvite-vue-and-github-pages#문제",[21624],{"id":104424,"title":24227,"titles":104425,"content":104426,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#vite-ssg-gsap",[21624,15123],"[vite-ssg] An internal error occurred.\n[vite-ssg] Please report an issue, if none already exists: https:\u002F\u002Fgithub.com\u002Fantfu\u002Fvite-ssg\u002Fissues\nfile:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002F.vite-ssg-temp\u002Fmain.mjs:6\nimport { ScrollTrigger } from \"gsap\u002FScrollTrigger.js\";\n         ^^^^^^^^^^^^^\nSyntaxError: Named export 'ScrollTrigger' not found. The requested module 'gsap\u002FScrollTrigger.js' is a CommonJS module, which may not support all module.exports as named exports.\nCommonJS modules can always be imported via the default export, for example using:\n\nimport pkg from 'gsap\u002FScrollTrigger.js';\nconst { ScrollTrigger } = pkg;\n\n    at ModuleJob._instantiate (node:internal\u002Fmodules\u002Fesm\u002Fmodule_job:123:21)\n    at async ModuleJob.run (node:internal\u002Fmodules\u002Fesm\u002Fmodule_job:189:5)\n    at async Promise.all (index 0)\n    at async ESMLoader.import (node:internal\u002Fmodules\u002Fesm\u002Floader:530:24)\n    at async build (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Fvite-ssg\u002Fdist\u002Fshared\u002Fvite-ssg.62550b28.mjs:996:87)\n    at async Object.handler (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Fvite-ssg\u002Fdist\u002Fnode\u002Fcli.mjs:29:5)\n\nNode.js v18.12.1 javascript - GSAP ScrollTrigger with Next.js - Stack Overflow import MPP from 'gsap\u002FMotionPathPlugin';\nimport ScrollTrigger from 'gsap\u002FScrollTrigger';\n\nconst { MotionPathPlugin } = MPP;\ngsap.registerPlugin(ScrollTrigger);\ngsap.registerPlugin(MotionPathPlugin); 이런식으로 바꿔주었다. vite-ssg 로 사용할 때는 다른 빌드 방식을 사용하나보다. esbuild 라거나,, commonJS 라거나.. 그래서 \u002Fdist 폴더 안의 라이브러리를 사용해주었다.",{"id":104428,"title":5310,"titles":104429,"content":104430,"level":121},"\u002Fblog\u002Fvite-vue-and-github-pages#axios",[21624,15123],"vite-ssg 는 정적 html 사이트를 생성하기 때문에 setup 안에 있는 함수를 무조건 실행한다. 그래서 최초에 데이터를 가져오는 axios 함수가 실행되면서 없는 서버로 데이터를 가져오려고 해서 에러가 발생한다. file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fcore\u002FAxiosError.js:89\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n             ^\nAxiosError: connect ECONNREFUSED ::1:80\n    at AxiosError.from (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fcore\u002FAxiosError.js:89:14)\n    at RedirectableRequest.handleRequestError (file:\u002F\u002F\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Faxios\u002Flib\u002Fadapters\u002Fhttp.js:591:25)\n    at RedirectableRequest.emit (node:events:513:28)\n    at eventHandlers.\u003Ccomputed> (\u002FUsers\u002Fhslee\u002FWorkspaces\u002Fsomething\u002Flhs-source.github.io\u002Fnode_modules\u002Ffollow-redirects\u002Findex.js:14:24)\n    at ClientRequest.emit (node:events:513:28)\n    at Socket.socketErrorListener (node:_http_client:494:9)\n    at Socket.emit (node:events:513:28)\n    at emitErrorNT (node:internal\u002Fstreams\u002Fdestroy:151:8)\n    at emitErrorCloseNT (node:internal\u002Fstreams\u002Fdestroy:116:3)\n    at process.processTicksAndRejections (node:internal\u002Fprocess\u002Ftask_queues:82:21) { ::1:80 경로로 데이터를 가져오면서 에러가 발생한 것이다. const posts = usePosts();\n\nonMounted(() => {\n  animPostList();\n  posts.fetchPostList();\n}) onMounted 내부에서 fetch 를 실행하면, setup 훅과 다르게 빌드 시 실행하지 않는다. html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .snhLl, html code.shiki .snhLl{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"id":24636,"title":24449,"titles":104432,"content":104433,"level":94},[],"setInterval 로 돌아가는 로직을 vitest 의 Fake Timer 를 사용해 테스트. fetch 함수가 포함된 interval 로직은 flushPromise 없이 다음 루프가 돌지 않음. vitest 공식 홈페이지 #fake-timers 타이머를 가짜로 돌려서, 원하는 시간만큼 컨트롤할 수 있다. 시간을 기다리지 않고, 임의로 시간을 흐르게 해서 빠른 테스트를 가능하게 한다. let i = 0\nsetInterval(() => console.log(++i), 50)\n\nvi.advanceTimersByTime(150)\n\n\u002F\u002F log: 1\n\u002F\u002F log: 2\n\u002F\u002F log: 3",{"id":104435,"title":24544,"titles":104436,"content":104437,"level":105},"\u002Fblog\u002Fvitest-timer-flushpromise#타이머-내부에-async-fetch-코드가-있다면-flushpromise-필수",[24449],"async function fetchFunction() {\n  await fetchDetail();\n    \u002F\u002F ...\n}\n\nfunction startTimer() {\n  refreshTimer = setInterval(fetchFunction, 5 * 1000);\n} 이런식으로 fetch 함수가 타이머 함수 내부에 실행되는 경우, flushPromise 없이는 다음 타이머가 동작하지 않는다. vi.advanceTimersByTime()은 시간만 진행시킬 뿐, 비동기 작업의 완료를 보장하지 않는다. 즉, 비동기 작업은 flushPromise 호출 전까지 대기한다. html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"id":25161,"title":24648,"titles":104439,"content":25158,"level":94},[],{"id":104441,"title":24654,"titles":104442,"content":104443,"level":105},"\u002Fblog\u002Fvue-prefetch#code-spliting",[24648],"우리가 Vue 프로젝트에서 Code Spliting 을 사용하는 이유는 빌드 결과물의 데이터 양을 분산시키기 위해서다. 기본적으로 SPA 프론트엔드 프로젝트를 번들링할 때, 스크립트 파일은 하나로 뭉쳐진다. 프로젝트 크기에 따라서 이 파일의 크기는 선형으로 증가하며, 초기에 모든 기능을 로드하는 SPA 특성상 초기 렌더링 시간이 급격하게 늘어난다.",{"id":104445,"title":24665,"titles":104446,"content":104447,"level":121},"\u002Fblog\u002Fvue-prefetch#vue-에서는-어떻게-기능을-사용하나",[24648,24654],"import Home from '..\u002Fviews\u002FHomeView.vue'\n{\n  path: '\u002F',\n  name: 'Home',\n  component: Home\n}, {\n  path: '\u002F:id',\n  name: 'Datail',\n  component: () => import(\u002F* webpackChunkName: \"detail\" *\u002F '..\u002Fviews\u002FDetailView.vue')\n} vue-router 에서 컴포넌트를 정적으로 로드할 경우 app.js 에 컴포넌트 코드가 함께 번들링된다. 위 코드의 Detail 컴포넌트 처럼 함수를 통해 동적으로 로드할 경우 코드는 분산된다. webpackChunkName 에 정의된 이름으로 하나의 청크로 묶인다. 서로 다른 두 개의 라우트에서 같은 webpackChunkName 을 사용하면, 하나의 파일에 두 라우트 컴포넌트가 묶인다.",{"id":104449,"title":24780,"titles":104450,"content":104451,"level":134},"\u002Fblog\u002Fvue-prefetch#만약-서로-다른-라우트에서-같은-컴포넌트를-사용한다면",[24648,24654,24665],"{\n    \u002F\u002F Input 컴포넌트를 사용\n  path: '\u002F',\n  name: 'Home',\n    component: () => import(\u002F* webpackChunkName: \"home\" *\u002F '..\u002Fviews\u002FHomeView.vue')\n}, {\n    \u002F\u002F 마찬가지로 Input 컴포넌트를 사용\n  path: '\u002F:id',\n  name: 'Datail',\n  component: () => import(\u002F* webpackChunkName: \"detail\" *\u002F '..\u002Fviews\u002FDetailView.vue')\n} 만약 Home과 Detail 컴포넌트 모두 Input 컴포넌트를 공통으로 사용하고 있다면, 코드는 어떻게 묶일까. home.jsdetail.jshome-detail.js 위처럼 공통된 컴포넌트는 별도의 파일로 묶이며 각 페이지 진입 시에 home-detail.js 파일을 똑같이 로드한다. Home 컴포넌트 진입 시 home.js 와 home-detail.js 로드 + detail.js 로드 안함Detail 컴포넌트 진입 시 detail.js 와 home-detail.js 로드 + home.js 로드 안함",{"id":104453,"title":24928,"titles":104454,"content":104455,"level":105},"\u002Fblog\u002Fvue-prefetch#prefetch",[24648],"Code Spliting 을 통해 번들을 여러 파일로 분산하고, 필요에 따라 브라우저가 동적으로 요청하게끔 하는 것으로 초기 렌더링 시간을 줄일 수 있게 되었다. 그런데 여기서 설명하는 prefetch 라는 것은 분산 시킨 코드들을 index.html 에서 미리 로드해 갖고 있는 것이다. \u003Chead>\n    \u003Clink href=\"\u002Fjs\u002Fsomepart1.js\" rel=\"prefetch\">\n    \u003Clink href=\"\u002Fjs\u002Fsomepart2.js\" rel=\"prefetch\">\n\u003Chead> 이런 식으로 말이다. 이렇게 되면 코드를 분산시켰음에도 처음에 다 로드를 하게 된다. 의도한대로 작동하지 않는다.",{"id":104457,"title":25010,"titles":104458,"content":104459,"level":105},"\u002Fblog\u002Fvue-prefetch#vue-cli",[24648],"module.exports = {\n    chainWebpack: config => {\n        config.plugins.delete('prefetch');\n    }\n} vue-cli 에서는 기본적으로 사용하게끔 웹팩 설정이 되어 있다. 하지만 끄게끔 권장한다. vue.config.json 에다가 prefetch 플러그인을 제거하면 간단하게 기능을 끌 수 있다. {\n    path: '\u002Fpage',\n    name: 'SomePage',\n    component: () => import(\u002F* webpackPrefetch: true *\u002F '@\u002Fsrc\u002FSomePage.vue'),\n} 단 전략에 따라서 미리 로드해야하는 코드에 대해서는 vue-router 의 주석으로 prefetch 를 적용할 수 있다.",{"id":104461,"title":19761,"titles":104462,"content":104463,"level":105},"\u002Fblog\u002Fvue-prefetch#vite",[24648],"Vite 의 경우 Webpack 이 아닌 Rollup 을 사용한다. 기본적인 웹팩 설정들은 사용할 수 없고, 기본적으로 동적로딩을 하는 경우 모두 항상 코드는 분산되어 빌드된다. 추가로 알아보아야 함! html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"id":29556,"title":25173,"titles":104465,"content":29553,"level":94},[],{"id":104467,"title":25179,"titles":104468,"content":104469,"level":105},"\u002Fblog\u002Fvue2-reactivity#반응성",[25173],"Vue 프레임워크로 컴포넌트를 작업하다보면, 데이터를 바꿨을 뿐인데 화면에 바뀐 데이터를 바로바로 반영하는 것이 그저 익숙할 것이다. 그런데 Vue를 비롯한 프론트엔드 프레임워크를 사용하지 않을 때, 데이터만 바꿨다고 화면에 바로 뿌려줬는가? 아니다. 개발자가 직접 DOM을 수정해서 보여주어야 했다. 아니면 서버에서 바뀐 데이터로 렌더링한 결과물을 새로 받아야 했다. Vue에서는 컴포넌트의 데이터 정보만 바꾸면 화면에 알아서 적용된다. 이를 반응성이라 한다. 컴포넌트의 데이터를 관찰하고 있다가 변경이 감지되면 Virtual DOM을 다시 컴파일한 후 만들어진 트리를 실제 DOM에 적용시킨다. 개발자는 이러한 내부적 로직은 알 필요 없이 데이터에 집중하는 개발을 하도록 Vue 는 유도하고 있다. 하지만 개발자는 내가 사용하는 도구; 여기서는 프레임워크가 어떻게 작동하는 녀석인지 알아야 입맛대로 작업할 수 있고, 문제 해결을 할 수 있다. 처음엔 쉬워도 언젠가 구조적 문제에 직면하는 게 개발자 삶이다.",{"id":104471,"title":25192,"titles":104472,"content":104473,"level":105},"\u002Fblog\u002Fvue2-reactivity#vue2에서는-반응성을-어떻게-구현했나",[25173],"Vue의 모든 컴포넌트는 Watcher 를 갖고 있다. 또 data option에 등록한 데이터는 자동으로 getter 와 setter 를 주입받는다. 데이터의 setter 가 실행되는 순간, 컴포넌트의 Watcher 가 이를 감지하고, 렌더 함수를 발동시킨다. 그로 인해 Virtual DOM을 다시 구성하게 되고, 이것이 화면에 나타나는 것이다. data 뿐 아니라 computed 도 마찬가지다. data 의 변경 감지 → computed 로직 실행 → computed 변경 감지 → 렌더링의 순서로 이루어진다.",{"id":104475,"title":25214,"titles":104476,"content":104477,"level":121},"\u002Fblog\u002Fvue2-reactivity#gettersetter-주입",[25173,25192],"Vue의 코드를 조금 살펴보면서 반응형을 어떻게 구현했는지 간단하게 알아보자. Vue의 데이터에 주입하는 getter\u002Fsetter은 defineReactive 라는 함수에서 주입한다. Object.defineProperty(obj, key, {\n  enumerable: true,\n  configurable: true,\n  get: function reactiveGetter() {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n          if (process.env.NODE_ENV !== 'production') {\n              dep.depend({\n                  target: obj,\n                  type: \"get\" \u002F* TrackOpTypes.GET *\u002F,\n                  key: key\n              });\n          }\n          else {\n              dep.depend();\n          }\n          if (childOb) {\n              childOb.dep.depend();\n              if (isArray(value)) {\n                  dependArray(value);\n              }\n          }\n      }\n      return isRef(value) && !shallow ? value.value : value;\n  },\n  set: function reactiveSetter(newVal) {\n      var value = getter ? getter.call(obj) : val;\n      if (!hasChanged(value, newVal)) {\n          return;\n      }\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n          customSetter();\n      }\n      if (setter) {\n          setter.call(obj, newVal);\n      }\n      else if (getter) {\n          \u002F\u002F #7981: for accessor properties without setter\n          return;\n      }\n      else if (isRef(value) && !isRef(newVal)) {\n          value.value = newVal;\n          return;\n      }\n      else {\n          val = newVal;\n      }\n      childOb = !shallow && observe(newVal, false, mock);\n      if (process.env.NODE_ENV !== 'production') {\n          dep.notify({\n              type: \"set\" \u002F* TriggerOpTypes.SET *\u002F,\n              target: obj,\n              key: key,\n              newValue: newVal,\n              oldValue: value\n          });\n      }\n      else {\n          dep.notify();\n      }\n  }\n}); 해당 함수는 객체의 속성마다 실행되는데, 그 속성에 대한 enumerable , configurable 과 get , set 을 Object.defineProperty 로 추가한다. 반응형인 대상에 변경이 일어나면 아래 과정을 거친다. set 함수가 실행된다. (observe 혹은 proxy 를 통해서)새로운 데이터로 변경이 되었을 때만 진행한다.새로운 데이터로 값을 바꾼다.observe 함수로 새로운 데이터에 대한 observe를 할당한다.dep.notify 가 발생하고, 렌더링을 트리깅 한다.Watcher 가 queue 에 추가하고, flushSchedulerQueue 를 통해 queue 를 플러시한다.queue 에 있는 모든 watcher의 run 함수를 호출하고 vue 인스턴스들의 updated 훅을 호출한다. 위 함수가 실행되는 부분은 다음과 같다. 컴포넌트의 props 를 초기화할 때, props 데이터도 반응형이다. (initProps$1)컴포넌트의 inject 를 초기화할 때 (initInjection)컴포넌트의 data 를 초기화할 때(initData)watch 를 등록할 때,set 등으로 인한 Observer 할당시(ob) (observe)vuex state 초기화 + mutate (initData, set)…",{"id":104479,"title":25891,"titles":104480,"content":104481,"level":121},"\u002Fblog\u002Fvue2-reactivity#watcher",[25173,25192],"var Watcher = \u002F** @class *\u002F (function () {\n    Watcher.prototype.addDep = function (dep) {};\n    Watcher.prototype.update = function () {\n        if (this.lazy) {\n            this.dirty = true;\n        }\n        else if (this.sync) {\n            this.run();\n        }\n        else {\n            queueWatcher(this);\n        }\n    };\n\u002F\u002F ...\n  return Watcher;\n}()); 우선 코드는 많은 부분을 생략했다. Watcher 의 경우 set 발생 시 notify 를 전달할 Dependency 들을 관리한다. notify 발생 시  queueWatcher 를 통해 큐에 자기 자신을 담아서 실행을 기다린다. Watcher가 sync 속성을 가졌다면 큐에 넣어서 비동기로 작동하지 않고, 동기적으로 바로 run 을 실행한다. function flushSchedulerQueue() {\n    currentFlushTimestamp = getNow();\n    flushing = true;\n    var watcher, id;\n    queue.sort(function (a, b) { return a.id - b.id; });\n    for (index$1 = 0; index$1 \u003C queue.length; index$1++) {\n        watcher = queue[index$1];\n        if (watcher.before) {\n            watcher.before();\n        }\n        id = watcher.id;\n        has[id] = null;\n        watcher.run();\n        if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n            circular[id] = (circular[id] || 0) + 1;\n            if (circular[id] > MAX_UPDATE_COUNT) {\n                warn$2('You may have an infinite update loop ' +\n                    (watcher.user\n                        ? \"in watcher with expression \\\"\".concat(watcher.expression, \"\\\"\")\n                        : \"in a component render function.\"), watcher.vm);\n                break;\n            }\n        }\n    }\n    var activatedQueue = activatedChildren.slice();\n    var updatedQueue = queue.slice();\n    resetSchedulerState();\n    callActivatedHooks(activatedQueue);\n    callUpdatedHooks(updatedQueue);\n} 여기서 큐의 Watcher 들을 실행하기 전에 정렬을 하는데, 이유는 3가지가 있다. 컴포넌트들이 부모부터 자식 순서로 업데이트되도록 한다. (부모가 자식보다 전에 만들어지기 때문에)컴포넌트의 Watcher들은 render watcher 의 Watcher보다 먼저 업데이트한다.부모 컴포넌트의 watcher 가 실행될 때 자식 컴포넌트가 파괴되었다면 그 watcher 들은 스킵될 수 있다. queue 에 있는 watcher를 순회하며 before 과 run 을 차례대로 호출한다. 여기서 before 은 beforeUpdated 훅을 발생시킨다. 모두 완료되면 activateChildComponent 을 통해 _inactive 를 켜고 activated 훅을 발생시킨다. 대상 컴포넌트는 keepAlive 속성을 가진 컴포넌트들이다. 그 다음으로는 callUpdatedHooks 를 통해 컴포넌트의 updated 훅을 발생시킨다. Watcher.prototype.run = function () {\n    if (this.active) {\n    var value = this.get();\n    if (value !== this.value ||\n      \u002F\u002F Deep watchers and watchers on Object\u002FArrays should fire even\n      \u002F\u002F when the value is the same, because the value may\n      \u002F\u002F have mutated.\n      isObject(value) || this.deep) {\n      \u002F\u002F set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        var info = \"callback for watcher \\\"\".concat(this.expression, \"\\\"\");\n        invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n      }\n      else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n    }\n}; 결국은 Watcher 의 run 함수를 위해서 위 과정들을 열심히 진행한 것이다. 그렇다면 run 함수는 내부적으로 어떤 것을 처리할까? 디버깅을 걸어보면 알겠지만, 화면의 렌더링은 this.get 에서 끝난다. 그리고 그 뒤로는 콜백을 실행하는 것 뿐이다. 그럼 get 함수를 살펴봐야 한다. Watcher.prototype.get = function () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  }\n  catch (e) {\n    if (this.user) {\n      handleError(e, vm, \"getter for watcher \\\"\".concat(this.expression, \"\\\"\"));\n    }\n    else {\n      throw e;\n    }\n  }\n  finally {\n    \u002F\u002F \"touch\" every property so they are all tracked as\n    \u002F\u002F dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value;\n}; 단순히 this.getter 를 호출한다. 이 getter 함수는 Watcher 초기화 시 외부로부터 받는다. function mountComponent(vm, el, hydrating) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n  }\n  callHook$1(vm, 'beforeMount');\n  var updateComponent;\n  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\".concat(id);\n      var endTag = \"vue-perf-end:\".concat(id);\n      mark(startTag);\n      **var vnode = vm._render();**\n      mark(endTag);\n      measure(\"vue \".concat(name, \" render\"), startTag, endTag);\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure(\"vue \".concat(name, \" patch\"), startTag, endTag);\n    };\n  }\n  else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n  var watcherOptions = {\n    before: function () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook$1(vm, 'beforeUpdate');\n      }\n    }\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };\n    watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };\n  }\n  \u002F\u002F we set this to vm._watcher inside the watcher's constructor\n  \u002F\u002F since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  \u002F\u002F component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, watcherOptions, true \u002F* isRenderWatcher *\u002F);\n  hydrating = false;\n  \u002F\u002F flush buffer for flush: \"pre\" watchers queued in setup()\n  var preWatchers = vm._preWatchers;\n  if (preWatchers) {\n    for (var i = 0; i \u003C preWatchers.length; i++) {\n      preWatchers[i].run();\n    }\n  }\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook$1(vm, 'mounted');\n  }\n  return vm;\n} mountComponent 함수 실행 시 작동은 다음과 같다. beforeMount 훅 실행watcher 옵션으로 beforeUpdate 훅을 등록한다.vm._render 를 실행하는 vm._update 함수를 Watcher 옵션으로 넘긴다.mounted 훅 실행 일부 경우에 따라 getter 함수가 달라질 순 있지만, 대부분의 경우 결론적으로는 vm._render 를 Watcher 의 getter 로 실행한다. vnode = render.call(vm._renderProxy, vm.$createElement); 최종적으로는 컴포넌트에 동적으로 생성된 render 함수를 실행하게 된다. 이 render 함수는 컴포넌트의 템플릿을 가지고 생성된다. 혹은 render 함수를 직접 구현하거나. render 함수로 생성된 vnode 를 가지고 vm._update 함수를 실행한다. Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode; \n\n    if (!prevVnode) {\n      \u002F\u002F initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false);\n    } else {\n      \u002F\u002F updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n  }; vm.__patch__ 를 호출하면서, 실제 DOM;여기서는 vm.$el 에 업데이트한다.",{"id":104483,"title":27958,"titles":104484,"content":104485,"level":105},"\u002Fblog\u002Fvue2-reactivity#vue2의-반응성-문제-및-특징",[25173],"Vue2의 반응성 구현에는 문제가 있다. 이는 자바스크립트의 한계 때문에 발생한 것이다. Vue의 데이터들은 추가, 감소가 발생했을 때는 변화를 감지하지 못한다. getter 와 setter 를 주입받지 못하기 때문이다.",{"id":104487,"title":27970,"titles":104488,"content":104489,"level":121},"\u002Fblog\u002Fvue2-reactivity#data-option-에-데이터-추가하기",[25173,27958],"data: {\n    some: 1\n}\n\nthis.other = 2; 컴포넌트의 data option 에 기존에 선언한 some 은 반응형이지만, other 는 반응형이 아니다. other 를 아무리 바꿔도 화면에는 아무런 영향을 주지 못한다. this.$set(this, 'other', 2); 하지만 Vue 인스턴스의 $set 함수를 이용해 반응형을 이끌어낼 수 있다.",{"id":104491,"title":28062,"titles":104492,"content":104493,"level":121},"\u002Fblog\u002Fvue2-reactivity#object-에-assign-으로-새로운-프로퍼티-추가하기",[25173,27958],"Object.assign 혹은 _.extend() 를 통한 객체 복사 역시 감지하지 못한다. 속성을 가져올 때는 [[Get]] 을 사용하고 속성을 지정할 때 [[Set]] 을 사용하기 때문에 getter\u002Fsetter 를 트리깅하지 못한다. Object.assign(this.someObject, { a: 1, b: 2 }) \u002F\u002F 이렇게 하면 반응성을 이끌어내지 못함.\nthis.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 }) 그래서 새로운 객체에 대상을 2개로 엮어서 병합한 후에 새로운 객체로 반환해야 한다.",{"id":104495,"title":28150,"titles":104496,"content":104497,"level":121},"\u002Fblog\u002Fvue2-reactivity#배열-문제",[25173,27958],"배열을 다루면서 아래 행동은 변화를 감지할 수 없다. 배열의 인덱스에 값을 넣으려는 것배열의 크기를 바꾸는 것 var vm = new Vue({\n  data: {\n    items: ['a', 'b', 'c']\n  }\n})\nvm.items[1] = 'x'\nvm.items.length = 2 아래 두 코드는 반응성을 이끌어내지 못했다. 그렇다면 배열은 어떻게 다뤄야 반응형일까? 배열의 특정 함수들을 이용해야 한다. push 배열에 뒤에 값을 추가shift 배열 맨 처음 값을 빼냄unshift 배열 앞에 값을 추가splice 일부를 교체함 this.$set(this.items, 1, changedValue); 혹은 $set 함수를 이용해 특정 인덱스의 값을 변경한다.",{"id":104499,"title":28292,"titles":104500,"content":104501,"level":134},"\u002Fblog\u002Fvue2-reactivity#object-배열",[25173,27958,28150],"animals: [\n    {id: 1, comments: 'cat',},\n    {id: 2, comments: 'bird',},\n    {id: 3, comments: 'dog',},\n]\n\ncreated() {\n    this.animals[3] = {id: 4, comments: 'cow'};\n} 우리는 개발을 하면서 흔하게 Object 를 여러개 담아놓은 배열을 다루게 된다. 이를 리스트 렌더링을 통해 화면에 심심치 않게 보여준다. 그런데 아까 얘기하기로는 Vue2의 배열은 인덱스에 해당하는 값을 바꾸려고 하면 반응성이 안나타난다고 했다. this.animals[1].comments = \"whale\"; 배열 1번의 객체의 데이터를 바꾸려고 하니, 세상에나 반응한다! 배열 내부의 객체는 반응형이다. 이는 콘솔에 데이터를 찍어보면 간단하게 알 수 있다. 배열의 경우 getter, setter 함수는 없지만 Observer 를 갖고 있다. 다만 내부에 있는 객체 3개는 각각 속성에 대해서 getter, setter 를 갖고 있다. 그렇기 때문에 배열 내부의 객체에 대해서는 반응형이다. 단 created 에서 인덱스로 할당한 객체의 경우 Observer 할당이 안되어 있다. 또 getter, setter 역시 주입되지 않았기 때문에, this.animals[3].comments = \"some\"; 코드는 반응형이 아니다. const newObject = { \n  \"id\": 1, \n  \"comments\": \"새로운 오브젝트를 넣음!\", \n};\nthis.animals[1] = newObject; \u002F\u002F 반응형 x\nthis.$set(this.animals, 1, newObject); \u002F\u002F 반응형 o\nthis.animals[1].comments = \"내가 바꾸었다!!!\"; \u002F\u002F 반응형 o\nthis.$set(this.animals[1], 'comments', \"내가 바꾸었다!!!\"); \u002F\u002F 반응형 o 물론 위 코드를 하나의 함수에서 실행하면 모든 변경대상이 반응형이다. 왜냐하면 반응을 감지하고 re-rendering 할 때는, 바뀐 데이터를 모두 적용하기 때문이다. 데이터는 변경이 되어 있지만, 화면에 적용만 안 되어 있던 것이다. 렌더링 시점에 모든 변경사항이 적용된다.",{"id":104503,"title":28593,"titles":104504,"content":104505,"level":134},"\u002Fblog\u002Fvue2-reactivity#다중-배열",[25173,27958,28150],"twoDimensionalArray: [\n  [\n    {id: 1, cat: 'first'},\n    {id: 2, cat: 'first'},\n  ],\n  [\n    {id: 1, cat: 'second'},\n    {id: 2, cat: 'second'},\n  ],\n  [],\n]\n\ncreated() {\n    this.twoDimensionalArray[2] = [\n    {id: 1, cat: 'third'},\n    {id: 2, cat: 'third'},\n  ]\n  this.twoDimensionalArray[3] = [\n    {id: 1, cat: 'forth'},\n    {id: 2, cat: 'forth'},\n  ]\n} 만약 다중 배열의 경우 어떻게 될까? 배열 요소가 배열이고, 그 안에는 객체들이 있는 구조이다. const newObject = { \n  \"id\": 1, \n  \"comments\": \"새로운 오브젝트를 넣음!\", \n};\nthis.twoDimensionalArray[1][1] = newObject \u002F\u002F 반응형 x\nthis.$set(this.twoDimensionalArray[1], 1, newObject); \u002F\u002F 반응형 o\nthis.twoDimensionalArray[0][0].cat = \"내가 바꾸었다!!!\"; \u002F\u002F 반응형 o\nthis.twoDimensionalArray[2][0].cat = \"새로 넣은 오브젝트인데 바뀔까?\"; \u002F\u002F 반응형 x\nthis.$set(this.twoDimensionalArray[3][1], 'comments', \"내가 바꾸었다!!!\"); \u002F\u002F 반응형 x 기본적으로 배열의 인덱스에 직접 할당하는 것은 무조건 반응형이 아니다. 2번 인덱스의 객체는, 처음에는 빈 배열이다가 인덱스에 직접 할당되었다. 그래서 반응형 설정이 되지 않았고, 다중배열 안의 객체 속성을 바꾸려고 했을 때 반응이 없다. 처음부터 할당이 되어 있거나, push 등으로 추가된 항목이 아니기 때문이다. 반대 상황으로 0번 인덱스와 1번 인덱스는 반응형으로 내부 속성을 변경하려고 할 때 반응형이다. 3번 인덱스는 처음부터 객체에 없다가, 인덱스로 할당된 객체이다. 2번과 사실상 같은 유형이다. 이 경우 $set 함수로도 반응이 없다. 3번 항목이야 push 를 통해 항목을 추가하면 된다곤 하지만, 2번 항목을 반응형으로 할당하려면 어떻게 해야할까? this.twoDimensionalArray[2].push(...[\n  {id: 1, cat: 'third'},\n  {id: 2, cat: 'third'},\n])\nthis.twoDimensionalArray.splice(2, 1, [\n  {id: 1, cat: 'third'},\n  {id: 2, cat: 'third'},\n]); spread 문으로 내용물을 펼쳐서 push 를 하는 방법splice 함수로 대상 교체하기 배열은 간단하게 생각하면 꼭 함수를 거쳐야 한다고 보면 된다. 그럼 쉽게 반응형을 끌어낼 수 있다.",{"id":104507,"title":29091,"titles":104508,"content":104509,"level":121},"\u002Fblog\u002Fvue2-reactivity#비동기-업데이트-큐",[25173,27958],"이 부분은 딱히 문제는 아니지만 알아두면 좋은 Vue 의 특성이다. Vue 의 UI 업데이트를 위해 컴파일되는 Virtual DOM은 비동기로 생성되고 화면에 렌더링된다. 즉, queue 에 담긴 여러 변경사항들을 flush 하기 전까지는 바로 화면에 적용되지 않고, 한 번에 렌더링한다. 그 시점은 다음 tick 이 된다. 또, queue 에 담긴 Watcher 중 중복인 항목은 제거하고 최신으로 유지한다. template: `\u003Cspan>{{msg}}\u003C\u002Fspan>`,\nata: {\n    msg: \"before update\",\n}\nmethods: {\n    update: () => {\n        this.msg = \"updated\";\n    console.log(this.$el.textContent) \u002F\u002F => 'not updated'\n    this.$nextTick(function () {\n      console.log(this.$el.textContent) \u002F\u002F => 'updated'\n    })\n    }\n} 간단하게 update 함수를 통해 변경된 msg 는 실제 DOM에 적용되기 전이라서 함수 실행 중에는 이전 데이터로 여전히 남아 있다. 그러다 함수 호출이 끝나고, 다음 이벤트 루프가 발생할 때가 되어서야 갱신된 데이터가 화면에 보인다. 이를 추적할 수 있는 게 this.$nextTick 이다. 이는 함수의 호출을 다음 tick 으로 미루는 작업이다. tick 에 대해서는 추후에 이벤트 루프에 대해서 작성할 때 자세하게 다룰 것이다.",{"id":104511,"title":29245,"titles":104512,"content":104513,"level":121},"\u002Fblog\u002Fvue2-reactivity#created-와-mounted",[25173,27958],"앞서 Vue 컴포넌트는 mount 시점에 렌더링을 한 번 실행한다는 것을 알았다. beforeMounted → 렌더링 → mounted 순서로 훅이 실행된다. 그렇기 때문에 발생하는 현상이 있다. created 훅과 mounted 훅에서 data 에 반응형이 아닌 데이터를 추가를 하면 UI에 표시가 될까 안될까? template: `\n    \u003Cdiv v-for=\"item of notReactive\" :key=\"item.id\">\n    {{item}}\n  \u003C\u002Fdiv>\n`,\ncreated() {\n  this.notReactive[1] = {id: 2, cat: 'reactive from created'};\n},\nmounted() {\n  this.notReactive[2] = {id: 3, cat: 'not reactive from mounted'};\n},\ndata: () => {\n  return {\n    notReactive: [\n      {id: 1, cat: 'reactive'},\n    ]\n  }\n} 말로는 헷갈릴 수 있으니 예시를 보자. 0번 인덱스는 데이터 초기화 시점에 이미 할당되어 있기 때문에 당연하게도 반응형이다. 그렇다면, 1번 인덱스와 2번 인덱스는 반응형일까? 우리가 테스트했을 때는 배열의 인덱스에 할당한 대상은 반응형이 아니다. 그렇기 때문에, UI에는 0번 인덱스 항목만 보일 거라고 예상한다. 결과는 0번 1번 인덱스 항목은 출력되고, 2번 인덱스 항목은 출력되지 않는다. 즉, created 에서 넣은 객체는 렌더가 되었고, mounted 에서 넣은 객체는 무시됐다. 렌더링과 훅의 순서 때문이다. created 시점에서는 렌더링 전이기 때문에, 렌더링 시점에 데이터는 인지되고 적용된다. 하지만 mounted 시점에는 이미 렌더링이 끝난 시점이라, 이때 추가된 데이터는 값만 바뀐 채 렌더링은 무시된다. 여담으로 mounted 에서 넣은 데이터는 this.$forceUpdate 를 호출하면 화면에 보인다. watcher.update 를 강제로 호출하기 때문이다. methods: {\n  onClick() {\n        \u002F\u002F 아래를 개별로 실행\n        \u002F\u002F 한번에 실행하면 1번 행이 반응형이기 때문에, 모두 렌더링 된다.\n    this.notReactive[0].cat = 'reactive from onClick'; \u002F\u002F 반응형\n        this.$set(this.notReactive[1], 'cat', 'reactive from onClick') \u002F\u002F 반응형 x\n    this.notReactive[1].cat = 'reactive from onClick'; \u002F\u002F 반응형 x\n    this.notReactive[2].cat = 'reactive from onClick'; \u002F\u002F 반응형 x\n  }\n}, mount 시점에 렌더링되어 화면에 나타났다고 해서 반응형인 건 아니다. mount 이후 데이터를 바꾸려고 하면 반응형이 아니기 때문에 반응이 없다. html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}",{"id":29959,"title":29566,"titles":104515,"content":104516,"level":94},[],"같은 상세 페이지에서 라우트 파라미터만 바뀔 때는 onBeforeRouteUpdate로 데이터를 다시 조회하고, 서로 다른 경로가 같은 목록 컴포넌트를 사용할 때는 RouterView key로 상태를 초기화한 과정을 정리한다. 같은 컴포넌트를 재사용하는 라우트에서 두 가지 갱신 문제를 겪었다. 하나는 같은 상세 페이지에서 파라미터만 바꿨을 때 데이터를 다시 조회하지 않는 문제였고, 다른 하나는 서로 다른 메뉴가 같은 목록 컴포넌트를 사용해서 이전 화면의 상태가 남는 문제였다. 두 문제 모두 Vue Router가 컴포넌트 인스턴스를 재사용해서 onMounted()를 다시 실행하지 한다는 점은 같았다. 하지만 첫 번째는 현재 인스턴스를 유지하면서 데이터만 바꾸면 됐고, 두 번째는 목록의 로컬 상태까지 초기화해야 했다.",{"id":104518,"title":29582,"titles":104519,"content":104520,"level":105},"\u002Fblog\u002Fvue3-route-component-reuse-data-refresh#같은-상세-페이지에서-라우트-파라미터만-바뀔-때",[29566],"상세 화면에서 다음 항목을 누르면 같은 페이지를 유지한 채 다음 정보를 보여줘야 했다. URL의 itemId는 바뀌었지만 같은 라우트 레코드와 컴포넌트를 사용했기 때문에 기존 인스턴스가 그대로 남았다. \u002Fitems\u002F1에서 \u002Fitems\u002F2로 이동해도 ItemDetailView 인스턴스는 유지된다. 컴포넌트를 새로 만들지 않으므로 최초 진입 때 사용한 onMounted() 는 호출되지 않아서 데이터를 가져오지 않고 무반응이었다. import { onBeforeRouteUpdate } from 'vue-router'\n\nonBeforeRouteUpdate(to => {\n  const itemId = Number(to.params.itemId)\n\n  fetchItem(itemId)\n}) 최초 진입의 데이터 조회는 기존 로직에서 처리하고, 같은 컴포넌트 안에서 라우트 파라미터가 바뀔 때만 onBeforeRouteUpdate 가드가 다음 데이터를 불러온다. 라우트 전환과 관련된 로직을 컴포넌트의 일반적인 반응형 상태 감시와 구분할 수 있다는 점도 이 방식이 읽기 편했다. 라우트 파라미터를 watch해서 데이터를 다시 조회할 수도 있다. 일단 watch 를 선호하지 않기도 하고, 라우트 전환으로 범위를 명확히 하고 싶어서 사용했다.",{"id":104522,"title":29694,"titles":104523,"content":104524,"level":105},"\u002Fblog\u002Fvue3-route-component-reuse-data-refresh#서로-다른-경로가-같은-목록-컴포넌트를-사용할-때",[29566],"다른 문제도 있었다. 두 메뉴는 서로 다른 라우트 경로를 사용하지만 실제 화면은 같은 목록 컴포넌트로 구성했다. const activeListRoute = {\n  path: 'active',\n  name: 'ActiveList',\n  component: () => import('@\u002Fviews\u002Fitems\u002FItemListView.vue'),\n}\n\nconst archivedListRoute = {\n  path: 'archived',\n  name: 'ArchivedList',\n  component: () => import('@\u002Fviews\u002Fitems\u002FItemListView.vue'),\n} 한 메뉴에서 다른 메뉴로 이동해도 ItemListView 인스턴스를 재사용했다. 이때는 컴포넌트가 가진 상태도 새 메뉴에 맞게 초기화해야 했다. 라우트 상위에 RouterView를 한 단계 두고 현재 경로를 key로 사용했다. \u003C!-- ItemRouterView.vue -->\n\u003Cscript setup lang=\"ts\">\nimport { useRoute } from 'vue-router'\n\nconst route = useRoute()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CRouterView :key=\"route.path\" \u002F>\n\u003C\u002Ftemplate> route.path가 달라지면 자식 뷰의 key도 바뀐다. Vue는 기존 목록 컴포넌트를 재사용하지 않고 새 인스턴스를 만들며 onMounted()도 다시 실행한다. 상위 라우트와 레이아웃은 유지되므로 사이드바 같은 공통 UI는 다시 만들지 않는다. 대신 자식 목록이 가진 입력값, 스크롤 위치와 로컬 상태는 모두 초기화한다. 이 사례에서는 메뉴가 바뀔 때 목록 상태까지 새로 시작해야 했기 때문에 원하는 동작이었다.",{"id":104526,"title":6005,"titles":104527,"content":29949,"level":105},"\u002Fblog\u002Fvue3-route-component-reuse-data-refresh#참고한-페이지",[29566],{"id":30434,"title":29969,"titles":104529,"content":104530,"level":94},[],"짧은 feature 브랜치, 장기 브랜치, 커밋 추적과 되돌리기 방식에 따라 GitHub Merge와 Squash Merge를 선택하는 기준을 정리한다. GitHub Pull Request를 병합할 때 Create a merge commit과 Squash and merge 중 무엇을 선택해야 할지 고민할 때가 있다. 선택 기준은 히스토리를 깔끔하게 보이게 만드는 데 있지 않다. 작업 브랜치를 병합 후에도 이어서 사용할지, 개별 커밋을 보존할 가치가 있는지, 장애가 났을 때 어느 단위로 되돌릴지를 먼저 판단해야 한다.",{"id":104532,"title":29985,"titles":104533,"content":104534,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#선택-기준부터-정리",[29969],"매번 개인 취향으로 선택하면 main의 히스토리 규칙이 일정하지 않게 된다. 팀의 규칙을 만들고 지키는 것이 결국 중요하다. 상황적합한 방식이유PR이 끝나면 feature 브랜치를 삭제한다Squash MergePR의 변경을 커밋 하나로 정리할 수 있다리뷰 과정에서 fix, wip 커밋이 많이 생긴다Squash Merge중간 작업 커밋을 main에 남기지 않는다PR 하나를 하나의 배포·revert 단위로 사용한다Squash Merge생성된 커밋 하나를 되돌리면 된다같은 브랜치를 여러 차례 base 브랜치에 병합한다Merge기존 브랜치와 base의 조상 관계를 유지한다feature 브랜치에서 다른 후속 브랜치가 갈라진다Merge커밋 관계를 보존해 후속 브랜치 흐름을 추적하기 쉽다개별 커밋이 각각 의미 있는 검토 단위다Merge작성 순서와 커밋별 변경을 그대로 남긴다 일반적인 짧은 feature 브랜치 중심의 제품 개발이라면 Squash Merge를 기본으로 두고, 장기 브랜치나 커밋 관계를 보존해야 하는 작업에 Merge를 허용할 수 있다. 반대로 커밋 자체를 리뷰와 배포의 중요한 기록으로 관리한다면 Merge를 기본으로 두는 편이 맞다. GitHub 저장소 설정에서는 허용할 병합 방식을 제한할 수 있다. 선형 히스토리를 강제하는 branch protection을 사용한다면 merge commit을 사용할 수 없으므로 Squash Merge나 Rebase Merge를 선택해야 한다.",{"id":104536,"title":30084,"titles":104537,"content":104538,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#짧은-feature-브랜치는-squash-merge로-정리하기",[29969],"작은 기능 하나를 위해 브랜치를 만들고 PR이 끝나면 삭제하는 흐름에서는 개발 중간 커밋을 main에 모두 남길 필요가 없는 경우가 많다. A---B                 main\n     \\\n      C---D---E       feature C, D, E가 리뷰 반영과 작은 수정으로 나뉜 커밋이라면 Squash Merge는 최종 변경을 합친 새 커밋 S를 main에 추가한다. A---B---S             main\n     \\\n      C---D---E       feature main에서는 PR 하나가 커밋 하나로 보인다. 배포 후 이 기능 전체를 되돌려야 한다면 squash commit을 직접 revert할 수 있다. git revert S 대신 C, D, E는 main의 조상이 되지 않는다. 개별 커밋을 기준으로 git bisect를 하거나 특정 중간 변경만 revert하려면 사용할 지점이 줄어든다. Squash Merge를 기본으로 사용하려면 PR 제목과 설명을 최종 커밋 메시지로 써도 될 정도로 정리해야 한다.",{"id":104540,"title":30149,"titles":104541,"content":104542,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#중간-커밋-자체가-중요하면-merge-사용하기",[29969],"feature 브랜치의 커밋이 각각 독립적으로 이해할 수 있는 작업 단위라면 Merge로 보존할 가치가 있다. GitHub의 Create a merge commit은 feature 커밋을 유지하면서 두 브랜치를 부모로 갖는 merge commit M을 만든다. A---B---------M       main\n     \\       \u002F\n      C---D---E       feature M은 base 브랜치의 기존 커밋과 feature 브랜치의 마지막 커밋을 부모로 갖는다. main에서 C, D, E까지 도달할 수 있으므로 Git은 feature 브랜치가 병합됐다는 관계를 알 수 있다. 이 방식은 다음 상황에서 유용하다. 기능 구현을 여러 개의 의미 있는 커밋으로 나눠 리뷰한다.특정 커밋이 문제를 만든 시점을 git bisect로 찾고 싶다.feature 브랜치를 기준으로 다른 브랜치가 이미 파생됐다.release나 integration 브랜치를 장기간 유지하며 반복 병합한다. 반면 리뷰 과정의 사소한 수정까지 모두 main에 남는다. Merge를 사용하려면 브랜치 안에서도 커밋 메시지와 변경 범위를 어느 정도 정리하는 편이 좋다.",{"id":104544,"title":30204,"titles":104545,"content":104546,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#장기-브랜치에는-squash-merge를-피하기",[29969],"Squash Merge 이후에도 같은 feature 브랜치에서 작업을 계속하면 문제가 생길 수 있다. squash commit S는 main에만 존재하고 원래 브랜치의 C, D, E와 부모 관계가 없다. 두 브랜치의 공통 조상은 여전히 B다. 이 상태에서 같은 feature 브랜치로 새 PR을 만들면 이전에 squash한 커밋이 비교 범위에 다시 나타날 수 있다. 충돌이 있었다면 같은 충돌을 반복해서 해결할 가능성도 커진다. GitHub 공식 문서도 병합 후 계속 사용할 head 브랜치에는 Squash Merge를 권장하지 않는다. Squash Merge를 사용했다면 기존 브랜치를 삭제하고 최신 main에서 다음 브랜치를 만드는 흐름이 단순하다. git switch main\ngit pull --ff-only\ngit switch -c feature\u002Fnext-task 같은 브랜치를 유지해야 하는 작업이라면 Merge를 사용해 조상 관계를 보존하는 편이 낫다.",{"id":104548,"title":30270,"titles":104549,"content":104550,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#빠른-되돌리기만-보면-squash-merge가-단순하다",[29969],"Squash Merge는 PR 전체가 커밋 하나이므로 기능 단위 revert가 단순하다. 하지만 기능 안에서 일부 변경만 되돌리려면 squash commit의 내용을 직접 나누어 처리해야 한다. Merge는 개별 커밋을 보존하므로 작은 단위의 원인 추적과 revert에 유리하다. 병합 전체를 merge commit으로 되돌릴 때는 mainline 부모를 지정해야 한다. git revert -m 1 M 따라서 “revert가 쉬운 방식”도 팀이 되돌리는 단위에 따라 다르다. PR 전체를 한 번에 되돌리는 경우가 많다면 Squash Merge가 단순하다.기능 내부의 특정 커밋만 골라 되돌려야 한다면 Merge가 유리하다.",{"id":104552,"title":30310,"titles":104553,"content":104554,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#git이-두-방식을-다르게-보는-이유",[29969],"두 방식의 핵심 차이는 커밋 수보다 부모 관계에 있다. Merge는 feature 브랜치의 마지막 커밋을 merge commit의 부모로 기록하지만, Squash Merge는 최종 변경만 복사한 새 커밋을 만든다. 로컬의 git merge --squash도 작업 트리와 인덱스를 병합 결과처럼 만들 뿐 MERGE_HEAD를 기록하지 않는다. 이후 커밋은 일반적인 단일 부모 커밋이 된다. git switch main\ngit merge --squash feature\ngit commit -m \"feat: 검색 기능 추가\" 이 차이 때문에 Squash Merge 이후에는 feature의 tip이 main의 조상으로 판정되지 않을 수 있다. git merge-base --is-ancestor feature main\ngit branch --merged main 변경 내용이 main에 들어갔더라도 로컬 Git의 병합 브랜치 목록에는 feature가 나타나지 않을 수 있다. GitHub의 PR 상태와 Git 커밋 그래프의 조상 관계는 구분해서 봐야 한다.",{"id":104556,"title":6005,"titles":104557,"content":30420,"level":105},"\u002Fblog\u002Fwhen-to-use-merge-or-squash-merge#참고한-페이지",[29969],{"id":30498,"title":30445,"titles":104559,"content":104560,"level":94},[],"지금까지 사용했던 word-wrap 이 overflow-wrap 으로 변경되었다. 어느날 gemini 가 리뷰에서 알려준 지식이 있다. 대충 보고 overflow-wrap 을 쓰라는데 뭐가 다르길래 쓰라고 하지해서 자세히 읽어봤다. alias 격이면 더더욱 바꿀 필요가 없지 않은가 했다. s !hint\n이 속성은 처음에 마이크로소프트에서 표준이 아니고 접두어가 없는word-wrap으로 나왔고, 대부분 브라우저에서 똑같은 이름으로 구현되었습니다. 요즘은overflow-wrap으로 다시 지어지고,word-wrap은 동의어가 되었습니다. 같은 단어이지만 이제는 overflow-wrap 을 써야한다. mdn 에는 word-wrap 메뉴도 없다.",{"id":9128,"title":9129,"body":104562,"created":6033,"description":10132,"extension":843,"filename":10133,"meta":105376,"navigation":846,"path":10135,"seo":105377,"sitemap":105378,"stem":10138,"subject":10139,"tags":105379,"updated":6033,"volume":853,"__hash__":10143},{"type":8,"value":104563,"toc":105370},[104564,104572,104646,104648,104650,104700,104702,104810,104824,104826,104828,104962,104964,104968,104974,104976,105028,105032,105110,105120,105122,105128,105134,105136,105138,105140,105226,105230,105360,105366,105368],[16,104565,9134,104566,9138,104568,9142,104570,9146],{},[31,104567,9137],{},[31,104569,9141],{},[31,104571,9145],{},[812,104573,104574,104588],{},[3001,104575,104576],{},[3004,104577,104578,104580,104582,104584,104586],{},[3007,104579,9155],{},[3007,104581,9158],{},[3007,104583,9161],{},[3007,104585,9164],{},[3007,104587,9167],{},[3017,104589,104590,104606,104620,104634],{},[3004,104591,104592,104596,104598,104600,104604],{},[3022,104593,104594,9176],{},[31,104595,9137],{},[3022,104597,9179],{},[3022,104599,9182],{},[3022,104601,104602,9188],{},[31,104603,9187],{},[3022,104605,9191],{},[3004,104607,104608,104612,104614,104616,104618],{},[3022,104609,104610],{},[31,104611,9141],{},[3022,104613,9200],{},[3022,104615,9182],{},[3022,104617,9205],{},[3022,104619,9191],{},[3004,104621,104622,104626,104628,104630,104632],{},[3022,104623,104624],{},[31,104625,9145],{},[3022,104627,9216],{},[3022,104629,9219],{},[3022,104631,9205],{},[3022,104633,9224],{},[3004,104635,104636,104638,104640,104642,104644],{},[3022,104637,9229],{},[3022,104639,9232],{},[3022,104641,9235],{},[3022,104643,9205],{},[3022,104645,9240],{},[49,104647,9244],{"id":9243},[1112,104649],{"description":9247,"favicon":9248,"host":5541,"title":9249,"url":9250},[82,104651,104652],{"className":1154,"code":9253,"language":1156,"meta":87,"style":87},[31,104653,104654,104662,104668,104686,104690,104694],{"__ignoreMap":87},[91,104655,104656,104658,104660],{"class":93,"line":94},[91,104657,9260],{"class":101},[91,104659,9263],{"class":97},[91,104661,9266],{"class":101},[91,104663,104664,104666],{"class":93,"line":105},[91,104665,9271],{"class":169},[91,104667,7560],{"class":101},[91,104669,104670,104672,104674,104676,104678,104680,104682,104684],{"class":93,"line":121},[91,104671,9278],{"class":108},[91,104673,1235],{"class":101},[91,104675,7506],{"class":97},[91,104677,9285],{"class":101},[91,104679,9288],{"class":169},[91,104681,9291],{"class":101},[91,104683,9294],{"class":97},[91,104685,9297],{"class":101},[91,104687,104688],{"class":93,"line":134},[91,104689,3487],{"class":101},[91,104691,104692],{"class":93,"line":228},[91,104693,1450],{"emptyLinePlaceholder":846},[91,104695,104696,104698],{"class":93,"line":250},[91,104697,9310],{"class":97},[91,104699,9313],{"class":101},[16,104701,9316],{},[82,104703,104704],{"className":1154,"code":9319,"language":1156,"meta":87,"style":87},[31,104705,104706,104726,104738,104760,104764,104780,104784,104796,104802,104806],{"__ignoreMap":87},[91,104707,104708,104710,104712,104714,104716,104718,104720,104722,104724],{"class":93,"line":94},[91,104709,9326],{"class":101},[91,104711,9329],{"class":97},[91,104713,795],{"class":101},[91,104715,9334],{"class":169},[91,104717,9337],{"class":101},[91,104719,9340],{"class":1172},[91,104721,1176],{"class":101},[91,104723,1179],{"class":566},[91,104725,102],{"class":101},[91,104727,104728,104730,104732,104734,104736],{"class":93,"line":105},[91,104729,2439],{"class":566},[91,104731,9353],{"class":101},[91,104733,9356],{"class":566},[91,104735,9359],{"class":101},[91,104737,9362],{"class":566},[91,104739,104740,104742,104744,104746,104748,104750,104752,104754,104756,104758],{"class":93,"line":121},[91,104741,2439],{"class":566},[91,104743,9369],{"class":101},[91,104745,9356],{"class":566},[91,104747,9374],{"class":169},[91,104749,7954],{"class":566},[91,104751,9379],{"class":101},[91,104753,9382],{"class":566},[91,104755,1363],{"class":108},[91,104757,1176],{"class":101},[91,104759,9362],{"class":566},[91,104761,104762],{"class":93,"line":134},[91,104763,1450],{"emptyLinePlaceholder":846},[91,104765,104766,104768,104770,104772,104774,104776,104778],{"class":93,"line":228},[91,104767,2641],{"class":566},[91,104769,9399],{"class":108},[91,104771,1366],{"class":566},[91,104773,7872],{"class":108},[91,104775,1235],{"class":101},[91,104777,1189],{"class":97},[91,104779,9410],{"class":101},[91,104781,104782],{"class":93,"line":250},[91,104783,1450],{"emptyLinePlaceholder":846},[91,104785,104786,104788,104790,104792,104794],{"class":93,"line":260},[91,104787,2439],{"class":566},[91,104789,9421],{"class":101},[91,104791,9382],{"class":566},[91,104793,9426],{"class":169},[91,104795,3866],{"class":101},[91,104797,104798,104800],{"class":93,"line":274},[91,104799,9433],{"class":97},[91,104801,9313],{"class":101},[91,104803,104804],{"class":93,"line":284},[91,104805,1698],{"class":101},[91,104807,104808],{"class":93,"line":299},[91,104809,9444],{"class":101},[16,104811,104812,9449,104814,64,104816,64,104818,64,104820,9462,104822,9465],{},[31,104813,9137],{},[31,104815,9452],{},[31,104817,9455],{},[31,104819,9458],{},[31,104821,9461],{},[31,104823,5177],{},[49,104825,9141],{"id":9468},[1112,104827],{"description":9471,"favicon":9248,"host":5541,"title":9472,"url":9473},[82,104829,104830],{"className":1154,"code":9476,"language":1156,"meta":87,"style":87},[31,104831,104832,104850,104854,104874,104886,104892,104896,104900,104904,104912,104918,104930,104934,104938],{"__ignoreMap":87},[91,104833,104834,104836,104838,104840,104842,104844,104846,104848],{"class":93,"line":94},[91,104835,1968],{"class":566},[91,104837,9485],{"class":108},[91,104839,1366],{"class":566},[91,104841,2676],{"class":566},[91,104843,9492],{"class":97},[91,104845,795],{"class":101},[91,104847,9497],{"class":169},[91,104849,3487],{"class":101},[91,104851,104852],{"class":93,"line":105},[91,104853,1450],{"emptyLinePlaceholder":846},[91,104855,104856,104858,104860,104862,104864,104866,104868,104870,104872],{"class":93,"line":121},[91,104857,9508],{"class":101},[91,104859,9329],{"class":97},[91,104861,795],{"class":101},[91,104863,9515],{"class":169},[91,104865,9337],{"class":101},[91,104867,9340],{"class":1172},[91,104869,1176],{"class":101},[91,104871,1179],{"class":566},[91,104873,102],{"class":101},[91,104875,104876,104878,104880,104882,104884],{"class":93,"line":134},[91,104877,2439],{"class":566},[91,104879,9532],{"class":101},[91,104881,9382],{"class":566},[91,104883,9537],{"class":169},[91,104885,3866],{"class":101},[91,104887,104888,104890],{"class":93,"line":228},[91,104889,9433],{"class":97},[91,104891,9313],{"class":101},[91,104893,104894],{"class":93,"line":250},[91,104895,1698],{"class":101},[91,104897,104898],{"class":93,"line":260},[91,104899,9444],{"class":101},[91,104901,104902],{"class":93,"line":274},[91,104903,1450],{"emptyLinePlaceholder":846},[91,104905,104906,104908,104910],{"class":93,"line":284},[91,104907,7471],{"class":566},[91,104909,9564],{"class":97},[91,104911,2007],{"class":101},[91,104913,104914,104916],{"class":93,"line":299},[91,104915,9571],{"class":97},[91,104917,9313],{"class":101},[91,104919,104920,104922,104924,104926,104928],{"class":93,"line":319},[91,104921,9578],{"class":101},[91,104923,9581],{"class":97},[91,104925,9584],{"class":101},[91,104927,9587],{"class":169},[91,104929,9590],{"class":101},[91,104931,104932],{"class":93,"line":334},[91,104933,137],{"class":101},[91,104935,104936],{"class":93,"line":355},[91,104937,1450],{"emptyLinePlaceholder":846},[91,104939,104940,104942,104944,104946,104948,104950,104952,104954,104956,104958,104960],{"class":93,"line":364},[91,104941,9326],{"class":101},[91,104943,9329],{"class":97},[91,104945,795],{"class":101},[91,104947,9609],{"class":169},[91,104949,9612],{"class":101},[91,104951,1179],{"class":566},[91,104953,9617],{"class":101},[91,104955,9620],{"class":97},[91,104957,9623],{"class":101},[91,104959,7557],{"class":108},[91,104961,9590],{"class":101},[16,104963,9630],{},[16,104965,104966],{},[19,104967],{"alt":9635,"src":9636},[16,104969,9639,104970,9642,104972,9646],{},[31,104971,9141],{},[31,104973,9645],{},[49,104975,9650],{"id":9649},[82,104977,104978],{"className":1154,"code":9653,"language":1156,"meta":87,"style":87},[31,104979,104980,104998,105002,105010,105018,105024],{"__ignoreMap":87},[91,104981,104982,104984,104986,104988,104990,104992,104994,104996],{"class":93,"line":94},[91,104983,1968],{"class":566},[91,104985,9662],{"class":108},[91,104987,1366],{"class":566},[91,104989,5049],{"class":101},[91,104991,9669],{"class":97},[91,104993,795],{"class":101},[91,104995,9674],{"class":169},[91,104997,3487],{"class":101},[91,104999,105000],{"class":93,"line":105},[91,105001,1450],{"emptyLinePlaceholder":846},[91,105003,105004,105006,105008],{"class":93,"line":121},[91,105005,9685],{"class":101},[91,105007,9581],{"class":97},[91,105009,9266],{"class":101},[91,105011,105012,105014,105016],{"class":93,"line":134},[91,105013,9694],{"class":101},[91,105015,9697],{"class":169},[91,105017,9700],{"class":101},[91,105019,105020,105022],{"class":93,"line":228},[91,105021,9705],{"class":169},[91,105023,7560],{"class":101},[91,105025,105026],{"class":93,"line":250},[91,105027,3487],{"class":101},[16,105029,105030,9717],{},[31,105031,9716],{},[82,105033,105034],{"className":1154,"code":9720,"language":1156,"meta":87,"style":87},[31,105035,105036,105056,105070,105082,105096,105100,105106],{"__ignoreMap":87},[91,105037,105038,105040,105042,105044,105046,105048,105050,105052,105054],{"class":93,"line":94},[91,105039,9326],{"class":101},[91,105041,9329],{"class":97},[91,105043,795],{"class":101},[91,105045,9515],{"class":169},[91,105047,9337],{"class":101},[91,105049,9340],{"class":1172},[91,105051,1176],{"class":101},[91,105053,1179],{"class":566},[91,105055,102],{"class":101},[91,105057,105058,105060,105062,105064,105066,105068],{"class":93,"line":105},[91,105059,2439],{"class":566},[91,105061,9749],{"class":101},[91,105063,9356],{"class":566},[91,105065,9754],{"class":169},[91,105067,1176],{"class":101},[91,105069,9362],{"class":566},[91,105071,105072,105074,105076,105078,105080],{"class":93,"line":121},[91,105073,2439],{"class":566},[91,105075,9765],{"class":101},[91,105077,9356],{"class":566},[91,105079,9770],{"class":101},[91,105081,9362],{"class":566},[91,105083,105084,105086,105088,105090,105092,105094],{"class":93,"line":134},[91,105085,2439],{"class":566},[91,105087,9532],{"class":101},[91,105089,9356],{"class":566},[91,105091,9783],{"class":169},[91,105093,1176],{"class":101},[91,105095,9362],{"class":566},[91,105097,105098],{"class":93,"line":228},[91,105099,1450],{"emptyLinePlaceholder":846},[91,105101,105102,105104],{"class":93,"line":250},[91,105103,9796],{"class":97},[91,105105,9799],{"class":101},[91,105107,105108],{"class":93,"line":260},[91,105109,9444],{"class":101},[16,105111,105112,9809,105114,9812,105116,9816,105118,9819],{},[31,105113,9808],{},[31,105115,9141],{},[31,105117,9815],{},[31,105119,8747],{},[1112,105121],{"description":9822,"favicon":9248,"host":5541,"title":9823,"url":9824},[16,105123,9827,105124,9831,105126,9834],{},[31,105125,9830],{},[31,105127,6591],{},[16,105129,9837,105130,5427,105132,9842],{},[31,105131,9141],{},[31,105133,9137],{},[49,105135,9846],{"id":9845},[1112,105137],{"description":9849,"favicon":9248,"host":5541,"title":9850,"url":9851},[16,105139,9854],{},[82,105141,105142],{"className":1154,"code":9857,"language":1156,"meta":87,"style":87},[31,105143,105144,105148,105156,105164,105172,105176,105180,105200,105212,105218,105222],{"__ignoreMap":87},[91,105145,105146],{"class":93,"line":94},[91,105147,9864],{"class":1343},[91,105149,105150,105152,105154],{"class":93,"line":105},[91,105151,9869],{"class":101},[91,105153,9581],{"class":97},[91,105155,7549],{"class":101},[91,105157,105158,105160,105162],{"class":93,"line":121},[91,105159,9878],{"class":101},[91,105161,9881],{"class":169},[91,105163,7560],{"class":101},[91,105165,105166,105168,105170],{"class":93,"line":134},[91,105167,9888],{"class":101},[91,105169,9891],{"class":169},[91,105171,9700],{"class":101},[91,105173,105174],{"class":93,"line":228},[91,105175,9444],{"class":101},[91,105177,105178],{"class":93,"line":250},[91,105179,1450],{"emptyLinePlaceholder":846},[91,105181,105182,105184,105186,105188,105190,105192,105194,105196,105198],{"class":93,"line":260},[91,105183,9906],{"class":101},[91,105185,9329],{"class":97},[91,105187,795],{"class":101},[91,105189,9515],{"class":169},[91,105191,9337],{"class":101},[91,105193,9340],{"class":1172},[91,105195,1176],{"class":101},[91,105197,1179],{"class":566},[91,105199,102],{"class":101},[91,105201,105202,105204,105206,105208,105210],{"class":93,"line":274},[91,105203,2439],{"class":566},[91,105205,9532],{"class":101},[91,105207,9382],{"class":566},[91,105209,9933],{"class":169},[91,105211,3866],{"class":101},[91,105213,105214,105216],{"class":93,"line":284},[91,105215,9940],{"class":97},[91,105217,9313],{"class":101},[91,105219,105220],{"class":93,"line":299},[91,105221,1698],{"class":101},[91,105223,105224],{"class":93,"line":319},[91,105225,9444],{"class":101},[16,105227,9953,105228,9956],{},[31,105229,9808],{},[82,105231,105232],{"className":7462,"code":9959,"language":7464,"meta":87,"style":87},[31,105233,105234,105238,105258,105272,105276,105284,105308,105322,105332,105340,105344,105348,105352,105356],{"__ignoreMap":87},[91,105235,105236],{"class":93,"line":94},[91,105237,9966],{"class":1343},[91,105239,105240,105242,105244,105246,105248,105250,105252,105254,105256],{"class":93,"line":105},[91,105241,9971],{"class":101},[91,105243,9329],{"class":97},[91,105245,795],{"class":101},[91,105247,9515],{"class":169},[91,105249,9337],{"class":101},[91,105251,9340],{"class":1172},[91,105253,1176],{"class":101},[91,105255,1179],{"class":566},[91,105257,102],{"class":101},[91,105259,105260,105262,105264,105266,105268,105270],{"class":93,"line":121},[91,105261,2439],{"class":566},[91,105263,9532],{"class":101},[91,105265,9356],{"class":566},[91,105267,9998],{"class":169},[91,105269,1176],{"class":101},[91,105271,9362],{"class":566},[91,105273,105274],{"class":93,"line":134},[91,105275,1450],{"emptyLinePlaceholder":846},[91,105277,105278,105280,105282],{"class":93,"line":228},[91,105279,10011],{"class":101},[91,105281,10014],{"class":97},[91,105283,9266],{"class":101},[91,105285,105286,105288,105290,105292,105294,105296,105298,105300,105302,105304,105306],{"class":93,"line":250},[91,105287,10021],{"class":101},[91,105289,10024],{"class":97},[91,105291,9584],{"class":101},[91,105293,10029],{"class":169},[91,105295,10032],{"class":101},[91,105297,1200],{"class":97},[91,105299,1169],{"class":101},[91,105301,10039],{"class":1172},[91,105303,1176],{"class":101},[91,105305,1179],{"class":566},[91,105307,102],{"class":101},[91,105309,105310,105312,105314,105316,105318,105320],{"class":93,"line":260},[91,105311,10050],{"class":566},[91,105313,2662],{"class":101},[91,105315,1968],{"class":566},[91,105317,10057],{"class":108},[91,105319,10060],{"class":566},[91,105321,10063],{"class":101},[91,105323,105324,105326,105328,105330],{"class":93,"line":274},[91,105325,10068],{"class":566},[91,105327,10071],{"class":101},[91,105329,9356],{"class":566},[91,105331,10076],{"class":101},[91,105333,105334,105336,105338],{"class":93,"line":284},[91,105335,10081],{"class":101},[91,105337,9581],{"class":97},[91,105339,10086],{"class":101},[91,105341,105342],{"class":93,"line":299},[91,105343,3307],{"class":101},[91,105345,105346],{"class":93,"line":319},[91,105347,10095],{"class":101},[91,105349,105350],{"class":93,"line":334},[91,105351,10100],{"class":101},[91,105353,105354],{"class":93,"line":355},[91,105355,10105],{"class":101},[91,105357,105358],{"class":93,"line":364},[91,105359,9444],{"class":101},[16,105361,105362,10115,105364,10119],{},[31,105363,10114],{},[31,105365,10118],{},[16,105367,10122],{},[829,105369,10125],{},{"title":87,"searchDepth":105,"depth":105,"links":105371},[105372,105373,105374,105375],{"id":9243,"depth":105,"text":9244},{"id":9468,"depth":105,"text":9141},{"id":9649,"depth":105,"text":9650},{"id":9845,"depth":105,"text":9846},{},{"title":9129,"description":10132},{"loc":10135},[2865,10141,8618,10142],1784628413146]